J'ai un formulaire qui récupère plusieurs lignes de données, chaque élément dispose d'une zone de texte permettant aux utilisateurs de commenter un élément spécifique. Le nombre d'éléments renvoyés est variable et ils n'ont pas besoin de laisser de commentaires dans aucune ou dans toutes les cases.
<textarea name="comment[]" cols="25" rows="2"><?php echo $f2; ?></textarea> <input name="tableid[]" type="hidden" value="<?php echo $f1; ?>">L'instruction
echo remplit la zone de texte avec tout ce qui est actuellement stocké dans la base de données, puisque l'utilisateur peut modifier ce que les autres ont saisi.
Lorsqu'il sera transmis à la page de traitement du formulaire, il renverra ceci..
Submit: Submit comment: Test Comment 1,Test Comment 2 tableid: 590,591
Il semble donc que le tableau passe correctement. J'utilise ce code pour mettre à jour la base de données
$conn = new PDO("mysql:host=xxxx;dbname=xxxxx",$username,$password); $i = 0; if(isset($_POST['submit'])) { foreach($_POST['comment'] as $comment) { $comment = $_POST['comment'][$i]; $id = $_POST['tableid'][$i]; $stmt = $conn->prepare("UPDATE reservations SET comment=:comment WHERE tableid=:id"); $stmt->bindValue(':comment', $comment, PDO::PARAM_INT); $stmt->bindValue(':id', $id, PDO::PARAM_INT); $stmt->execute(); $i++; } }
Cependant, cela ne semble pas du tout être mis à jour, où me suis-je trompé ?
Merci beaucoup
Quelques choses :
PDOException
en cas d'erreur. Cela facilitera le débogage.Code :