Autor Zpráva
kchrz
Profil
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
kchrz:
Konkrétny problém? Určite ti ten kód vypisuje chybové hlášky, opravil si ich?
Kajman
Profil
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>';

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0