webForumDet fria alternativet

Tom rad skapas i mysql

Databaser & SQLur Databashanterare & SQL

4 svar · 478 visningar · startad av Guldstrand

Medlem sedan juli 20041 271 inlägg
Frågan#1

Jag använder följande kod för att spara data till mysql:

<?php 

ob_start("ob_gzhandler");

include("mysql.php");

if(isset($_POST['submit']))
{

$namn = htmlspecialchars($_POST['namn']);
$fodd = htmlspecialchars($_POST['fodd']);

for($i = 0; $i < count($namn); $i++) 
{ 
  $values[] = sprintf("('%s', '%s')",$namn[$i],$fodd[$i]); 
}
$sql = "INSERT INTO personer (namn, fodd) VALUES ".implode(',',$values);
$result = mysql_query($sql)or die("Kunde inte lägga till<br />" . mysql_error() . "<br />" . $sql); 
}

?>

<form action="test.php" method="post"> 
Namn:<br />
<input type="text" name="namn[]" /><br /> 
Född:<br />
<input type="text" name="fodd[]" />
<br /><br /> 
Namn:<br />
<input type="text" name="namn[]" /><br /> 
Född:<br />
<input type="text" name="fodd[]" />
<br /><br />
Namn:<br />
<input type="text" name="namn[]" /><br /> 
Född:<br />
<input type="text" name="fodd[]" />
<br /><br />
Namn:<br />
<input type="text" name="namn[]" /><br /> 
Född:<br />
<input type="text" name="fodd[]" />
<br /><br /> 

<input type="submit" name="submit" value="lägg till" />
 
</form>

..men om något av input-fälten lämnas tomma, skapas en tom rad i mysql. :x
Hur förhindrar jag detta?

Sedan undrar jag även var/hur jag lägger in "NOW()" i insert ovan.

Medlem sedan dec. 200012 464 inlägg
#2

Det får du kontrollera i din for loop och i så fall låta bli att göra sprintf.

Använd inte now. Det är specifikt för Mysql och fungerar inte i vissa andra databashanterare.

$values[] = sprintf("('%s', '%s',current_timestamp)",$namn[$i],$fodd[$i]);  

$sql = "INSERT INTO personer (namn, fodd,dateColumn) VALUES ".implode(',',$values);
Medlem sedan juli 20041 271 inlägg
#3

Vet inte om du missuppfattade min fråga, eller om jag var otydlig.
Man SKA kunna lämna några input-fält tomma, man måste inte fylla i alla.

Medlem sedan dec. 200012 464 inlägg
#4

Då förstår jag inte vad du menar med tom rad. Exemplifiera med det resultat du får nu och det resultat du vill ha.

Medlem sedan nov. 20014 054 inlägg
#5

Guldstrand skrev:

Vet inte om du missuppfattade min fråga, eller om jag var otydlig.
Man SKA kunna lämna några input-fält tomma, man måste inte fylla i alla.

Antar att detta är för att de postas även fast de inte har några värden. Du får väl helt enkelt kontrollera att namn, fodd har värde om de skall få sparas.

 for($i = 0; $i < count($namn); $i++)  {  
  if(strlen($namn[$i]) != 0 && strlen($fodd[$i]) != 0) {
     $values[] = sprintf("('%s', '%s')",$namn[$i],$fodd[$i]);
  }
}

Nu vet jag inte om detta är rätt väg att gå eller om det kommer att hjälpa.

263 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
137 ms — hämta forumlista (db)
124 ms — hämta statistik (db)
134 ms — hämta tråd, inlägg och bilagor (db)