Update que le dernier champ de la table
Résolu
Pit
-
JooS Messages postés 2468 Date d'inscription Statut Membre Dernière intervention -
JooS Messages postés 2468 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai une probleme avec ma fonction update qui update uniquement la derniere ligne de ma table ...
Merci d'avance ^^
J'ai une probleme avec ma fonction update qui update uniquement la derniere ligne de ma table ...
<form method="post" action="ajouthoraire.php" enctype="multipart/form-data"> <input type="hidden" value="<?php echo $idhoraire ;?>" name="idhoraire"/> <center><h4>Horaire Magasin :</h4></center> <?php include('connect.php'); try{ $cnx = new PDO(DSN, LOGIN, PASSWORD, $options); $sql = "SELECT * FROM horaire"; $res = $cnx->query($sql); echo "<table><tr>\n<th><center>Jour</center></th>\n<th><center>Matin</center></th>\n<th><center>Aprem-midi</center></th></tr>"; while ($ligne = $res->fetch()){ echo "<input type='hidden' value='".$ligne['idhoraire']."' name='idhoraire'/> <tr>\n<td><center>".$ligne['jour']."</center></td>\n <td><center> <input type='text' value='".$ligne['heuredebutmat']."' name='heuredebutmat'/> <input type='text' value='".$ligne['heurefinmat']."' name='heurefinmat'/></center>\n</td>\n <td><center> <input type='text' value='".$ligne['heuredebutap']."' name='heuredebutap'/> <input type='text' value='".$ligne['heurefinap']."' name='heurefinap'/></center></td></tr>";} echo "</table>";} catch(PDOException $e){ die("Echec : ".$e->getMessage()); } ?>
<?php include('connect.php'); $heuredebutmat=$_POST['heuredebutmat']; $heurefinmat=$_POST['heurefinmat']; $heuredebutap=$_POST['heuredebutap']; $heurefinap=$_POST['heurefinap']; $idhoraire=$_POST['idhoraire']; if(($heuredebutmat != "" && $heurefinmat != "" && $heuredebutap != "" && $heurefinap != "")){ try{ $cnx = new PDO(DSN, LOGIN, PASSWORD, $options); $sql = "UPDATE horaire SET heuredebutmat='$heuredebutmat', heurefinmat='$heurefinmat', heuredebutap='$heuredebutap', heurefinap='$heurefinap' WHERE idhoraire='$idhoraire'"; echo"$idhoraire"; $cnx->exec($sql); $cnx=null; echo 'Enregistrement du(des) nouvel(aux) horaire(s) effectués !<br />';} catch(PDOException $e){ die("Echec : ".$e->getMessage()); }} else{ echo 'Erreur : Vous devez remplir tout les champs.';} ?>
Merci d'avance ^^
A voir également:
- Update que le dernier champ de la table
- Table ascii - Guide
- Table des matières word - Guide
- Le dernier iphone - Guide
- Windows update bloqué - Guide
- Winget update - Guide
2 réponses
Salut,
La question n'est pas "pourquoi il UPDATE le dernier tuple ?", mais plutôt "pourquoi il update qu'un seul tuple ?".
En tout cas, si "idhoraire" est une clé primaire, alors c'est normale qu'il y ait qu'un seul tuple visé.
C'est comme si que tu demandait au SGBD "modifie le(les) tuple(s) dont l'idhoraire est égale a 5 (par exemple)", puisque l'idhoraire est une clé primaire, donc chacune de ses valeurs n'existent qu'une seule fois, donc le "5" existe qu'une seule fois dans la table, alors forcement il n'y aura qu'un seul tuple édité par ta requête.
Maintenant si tu voulait faire autre chose, alors soit ta conception contient des erreurs, soit tu t'es trompé de champs a mettre dans le WHERE de ta requête.
La question n'est pas "pourquoi il UPDATE le dernier tuple ?", mais plutôt "pourquoi il update qu'un seul tuple ?".
En tout cas, si "idhoraire" est une clé primaire, alors c'est normale qu'il y ait qu'un seul tuple visé.
C'est comme si que tu demandait au SGBD "modifie le(les) tuple(s) dont l'idhoraire est égale a 5 (par exemple)", puisque l'idhoraire est une clé primaire, donc chacune de ses valeurs n'existent qu'une seule fois, donc le "5" existe qu'une seule fois dans la table, alors forcement il n'y aura qu'un seul tuple édité par ta requête.
Maintenant si tu voulait faire autre chose, alors soit ta conception contient des erreurs, soit tu t'es trompé de champs a mettre dans le WHERE de ta requête.
Oui, mais ça dépend de ce que tu va mettre dans le WHERE.
... WHERE champs_de_type_cle_primaire = valeurDans ce cas, seulement une seule ligne au plus va être modifiée.
... WHERE champs_de_type_unique = valeurDans ce cas, c'est la même chose.
... WHERE champs_normal = valeurDans ce cas, zéro ou plusieurs lignes peuvent être modifiées.
Si chaque ligne est mis a jour d'une valeur différente, alors oui, plusieurs update doivent être utilisés, sinon, si c'est la même valeur, alors il suffit de faire :
Tu dis qu'il mets toujours la même valeur, peut être que c'est parce que tu ne change pas le contenu des tes variables.
... WHERE ... AND ... AND ...
Tu dis qu'il mets toujours la même valeur, peut être que c'est parce que tu ne change pas le contenu des tes variables.