webForumDet fria alternativet

Tom rad skapas i mysql

4 svar · 478 visningar · startad av Guldstrand

GuldstrandMedlem sedan juli 20041 271 inlägg
#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.

LarsGMedlem 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);
GuldstrandMedlem 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.

LarsGMedlem 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.

Fredde MannenMedlem 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.

130 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)