Frågan 5 sep. 2008 02:56 #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.
L LarsG Medlem sedan dec. 2000 12 464 inlägg
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);
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.
L LarsG Medlem sedan dec. 2000 12 464 inlägg 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.
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.