Prosim o pomoc v najiti chybky. Mam odkaz pro aktualizaci informaci. Prvni cast je, ze se vypisi informace z databaze. To funguje.
Kdyz neco zmeni a dam Updatovat (ulozit) naskocimi chyba "Nastala chyba pri ukladani dat". Zkontroloval jsem to, ale nemuzu nejit chybu proc to nechce ulozit. Dik za pomoc
// EDITACE
<?php
elseif ($a == "edit") {
$sql="SELECT * FROM list WHERE cislo=$cislo";
$mysql_result= mysql_query($sql,$connection);
$num_rows=@mysql_num_rows($mysql_result);
if ($num_rows == 0) {echo "<br>Chyba ve zpracovávání dotazu.<br>";}
else
{
while ($row = mysql_fetch_array($mysql_result))
{
$cislo=$row["cislo"];
$cislo_zak=$row["cislo_zak"];
$okres=$row["okres"];
echo "<form action=\"index.php?a=save\" method=post>";
echo "<table>";
echo "<tr><td>Cislo:</td>
<td><input type=text name=\"cislo\" value=\"$cislo\"></td></tr>";
echo "<tr><td>Cislo zakazky:</td>
<td><input type=text name=\"cislo_zak\" value=\"$cislo_zak\"></td></tr>";
echo "<tr><td>Okres:</td>
<td><input type=text name=\"okres\" value=\"$okres\"></td></tr>";
echo "<tr colspan=2><td ><input type=submit value=\"Updatovat\"></td></tr>";
echo "</table></form>";
}
}
}
// ULOZ
elseif ($a == "save") { $sql = "UPDATE list SET cislo='$cislo', cislo_zak='$cislo_zak', okres='$okres' ";
if (!mysql_query($sql,$connection)) {echo "Nastala chyba pri ukladani dat.";exit; }
else {echo "<br><b>Vše uloženo v pořádku..</b><br>[<a href=\"index.php\"> Zpět </a>]";}
}
?>
Neměl bys v tom UPDATE mít nastavenou i podmínku WHERE? Takhle se ti (dle mé bohužel osobní zkušenosti :-) ) updatnou všechny řádky.
Měl by postupně odladit ten SQl dotaz:
1. Před mysql_query dej echo $sql; a podívej se, jak ten dotaz vypadá.
2. Pokud dotaz vypadá přijatelně, prožeň jej přes phpMyAdmin a podívej se na výsledek.
VŽDY, když používáš mysql_NĚCO příkaz, dej za něj or die(mysql_error()) ať vidíš, co je špatně. Text "Nastala chyba při ukládání dat" je k ničemu. Nic z toho nezjistíš.
Přidal jsem podminku WHERE.
Vyzkousel jsem take pridat (mysql_error()) a ukazala se chyba:
You have an error in your SQL syntax near 'WHERE cislo = '2' SET cislo='2', cislo_zak='222', okres='Olomouc', popis='Sešík' at line 1
Nenapadne Vás prosím co to může být za chybu syntaxe?
Děkji moc
Napiš sem ten upravený kód.
nechapu, proc nastavujes cislo na hodnotu 2 v tech radcich, kde ma cislo hodnotu 2...
jinak to where patri samozrejme az za set
Uvadím SQL dotaz, pomoci kterého se snažím data aktualizovat a u kterého to vypisuje chybu syntaxe (nevypisoval jsem formular, ten je na zacatku a je rozsiren jeste o popis, cenu a datum).
elseif ($a == "save") {
$sql = "UPDATE list WHERE cislo = '$cislo' SET cislo='$cislo', cislo_zak='$cislo_zak', okres='$okres', popis='$popis', cena='$cena', datum='$datum' ";
if (!mysql_query($sql,$connection)) { echo (mysql_error()); }
else {echo "<br><b>Vše uloženo v pořádku..</b><br>
[<a href=\"index.php\"> Zpět </a>]";}
}
Jj to WHERE patří až za SET a dala bych do něj porovnávání nějakýho id (které se nemění), tak jak to je, je to imho nesmysl.
mozna ze id je cislo? V tom pripade:
UPDATE list SET cislo_zak='$cislo_zak', okres='$okres', popis='$popis', cena='$cena', datum='$datum' WHERE cislo = '$cislo';