Autor | Zpráva | ||
---|---|---|---|
kchrz Profil |
#1 · Zasláno: 28. 12. 2018, 19:49:53
Potřeboval bych poradit s hromadným zápisem do databáze, nějak se mi to nedaří.
Výpis z tabulky jsem řešil zde Optimalizace výpisu z mysql tabulky. Díky moc $db = mysqli_connect($dbServer,$dbUser,$dbPass,$dbDatabase) or die("Není možné připojit databázový server."); $result = mysqli_query($db,"SELECT c.celed_text, r.* FROM `$ryby` r JOIN `$celed` c ON r.celed = c.celed_id WHERE r.zobrazit = 1 ORDER BY c.celed_text, r.celed, r.latinsky, r.id "); <form method=post> while( $row = mysqli_fetch_array($result)){ echo "<table><tr> <td><input type=text value=$row[latinsky] name=latinsky[$row[id]]></td><td><input type=text value=$row[cesky] name=cesky[$row[id]]> <input type=hidden name=kod value=$row[id]></td> </tr></table>"; } <input type=hidden name=akce value=uloz> <input type=submit value=ulozit> </form> if ($akce=="uloz") { mysqli_query($db,"UPDATE $ryby SET latinsky='$latinsky[$_POST[kod]]', cesky = '$cesky[$_POST[cesky]]' WHERE id = '$_POST[kod]' "); } |
||
pcmanik Profil |
#2 · Zasláno: 28. 12. 2018, 20:40:04
kchrz:
Konkrétny problém? Určite ti ten kód vypisuje chybové hlášky, opravil si ich? |
||
Časová prodleva: 8 dní
|
|||
Kajman Profil |
#3 · Zasláno: 5. 1. 2019, 12:00:06
Zpracování akce uloz by mělo být před výpisem hodnot, jinak tam uvidíte staré hodnoty, i když je chvilku potom změníte.
Pro začátečníka bude nejjednodušší dělat více updatů v cyklu než sestavovat jeden hromadný. Všude Vám chybí escapování!. Něco jako $db = mysqli_connect($dbServer,$dbUser,$dbPass,$dbDatabase) or die("Není možné připojit databázový server."); if ($_POST['akce']=="uloz") { $stmt = mysqli_stmt_init($db); if(mysqli_stmt_prepare($stmt, "UPDATE $ryby SET latinsky=?, cesky=? WHERE id=?")) { foreach($_POST['latinsky'] as $id => $latinsky) { mysqli_stmt_bind_param($stmt, "ssi", $latinsky, $_POST['cesky'][$id], $id); mysqli_stmt_execute($stmt); } } } echo '<form method="POST"><table>'; $result = mysqli_query($db,"SELECT c.celed_text, r.* FROM `$ryby` r JOIN `$celed` c ON r.celed = c.celed_id WHERE r.zobrazit = 1 ORDER BY c.celed_text, r.celed, r.latinsky, r.id"); while( $row = mysqli_fetch_array($result)){ echo '<tr>'. '<td><input type="text" value="'.htmlspecialchars($row['latinsky']).' name="latinsky['.htmlspecialchars($row['id']).']"></td>'. '<td><input type="text" value="'.htmlspecialchars($row['cesky']).' name="cesky['.htmlspecialchars($row['id']).']"></td>'. '</tr>'; } echo '</table>'. '<input type="hidden" name="akce" value="uloz">'. '<input type="submit" value="ulozit">'. '</form>'; |
||
Časová prodleva: 5 let
|
0