| 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: 8 let
|
|||
0