Problème de UPDATE
Résolu
angelusflm
-
Sri Lumpa Messages postés 177 Date d'inscription Statut Membre Dernière intervention -
Sri Lumpa Messages postés 177 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je dois crée un petit code pour faire une gestion de présence journalier.
Je vais vous expliquer brièvement l'idée général.
Un chef de service se log, un listing avec tous ses agents en charage apparait.
Il choisit une date, en règle général la date du jour, puis il met l'état de chaque agent "présent" "malade" "congès" et pour terminer il valide et tous s'ajoute dans la BDD.
Pour cette parti pas de soucis.
Maintenant j'aimerai reprendre le même formulaire ajouter un bouton "mise à jour" et quand je saisis une date déjà dans la BDD et que je modifier l'état d'un ou plusieurs agent et bien cette mise à jour s'effectue dans la BDD mais c'est sur se point la que ça merde :'(!
Je vous joint mon formulaire, mon code de création ainsi que mon code de Mise à jour.
Formulaire
Code de création
code de mise à jour (mon problème)
Je dois crée un petit code pour faire une gestion de présence journalier.
Je vais vous expliquer brièvement l'idée général.
Un chef de service se log, un listing avec tous ses agents en charage apparait.
Il choisit une date, en règle général la date du jour, puis il met l'état de chaque agent "présent" "malade" "congès" et pour terminer il valide et tous s'ajoute dans la BDD.
Pour cette parti pas de soucis.
Maintenant j'aimerai reprendre le même formulaire ajouter un bouton "mise à jour" et quand je saisis une date déjà dans la BDD et que je modifier l'état d'un ou plusieurs agent et bien cette mise à jour s'effectue dans la BDD mais c'est sur se point la que ça merde :'(!
Je vous joint mon formulaire, mon code de création ainsi que mon code de Mise à jour.
Formulaire
<?php $query_users = "SELECT * FROM utilisateurs,agent WHERE utilisateurs.nservice = '1' AND agent.nservice = '1'"; // Tri la table agent sur le champs Nservice $users = mysql_query($query_users, $dbprotect) or die(mysql_error()); $indice = 0; ?> <form action="crea.php" method="post"> Entrez la Date <input type="button" value="Calendrier" onClick="displayCalendar(document.forms[0].date,'yyyy/mm/dd',this)"> <input readonly type="text" name="date" value=""> <?php while( $result = mysql_fetch_object( $users ) ) { ?> <table width="495" border="1"> <tr> <td>Agent:</td> <td><input type="text" size="20" name="agent<?php echo $indice;?>" value="<?php echo ($result->nom);?> <?php echo ($result->prenom);?>"> <select name="etat<?php echo $indice;?>"> <option>Présent</option> <option>Congès Annuels</option> <option>Congès Exceptionnel</option> <option>Mission</option> <option>Récupération</option> </select></td> </tr> <input type="hidden" name="nchrono<?php echo $indice;?>" value="<?php echo ($result->nchrono);?>"> <input type="hidden" name="login<?php echo $indice;?>" value="<?php echo ($result->login);?>"> <input type="hidden" name="lservice<?php echo $indice;?>" value="<?php echo ($result->lservice);?>"> <?php $indice++; } ?>
Code de création
<?php if(isset($_POST['valider'])) { $indice = $_POST['numIndice']; $valider = $_POST['valider']; $date = $_POST['date']; $login = 'gpassis'; function user_exists($date) { $sql = 'SELECT `date` FROM presence_informatique WHERE date = \'' . addslashes($date) . '\' LIMIT 1'; $res = mysql_query($sql) or die ($sql.'<br />'.mysql_error()); return (mysql_num_rows($res) == 1); } if (user_exists($date)) { echo('La date que vous avez saisie est déjà enregistrer!<br />'); echo('Si vous souhaitez écraser le contenu précédent veuillez cliquer sur le lien "<a href="update.php">suivant</a>"<br />'); } else { if ( $indice > 0 ) { for ( $i=0; $i < $indice; $i++ ) { $lservice=$_POST['lservice'.$i]; $agent=$_POST['agent'.$i]; $nchrono=$_POST['nchrono'.$i]; $etat=$_POST['etat'.$i]; $login=$_POST['login'.$i]; $requete ="INSERT INTO presence_informatique (id,lservice,date,agent,nchrono,etat,login) values ('','$lservice','$date','$agent','$nchrono','$etat','$login')"; mysql_query($requete); } mysql_close(); echo "La date à bien été prise en charge pour les ".$indice." agent "; } } } else echo "Merci de bien remplir le formulaire"; ?>
code de mise à jour (mon problème)
<?php if(isset($_POST['valider'])) { $indice = $_POST['numIndice']; $valider = $_POST['valider']; $date = $_POST['date']; if ( $indice > 0 ) { for ( $i=0; $i < $indice; $i++ ) { $lservice=$_POST['lservice'.$i]; $agent=$_POST['agent'.$i]; $nchrono=$_POST['nchrono'.$i]; $etat=$_POST['etat'.$i]; $login=$_POST['login'.$i]; $requete ="UPDATE presence_informatique SET etat = '$etat' WHERE date = ".$date.""; mysql_query($requete); } } echo "Mise à jour effectué<br>"; } else echo "La mise à jour à rencontré un problème<br>"; ?>
A voir également:
- Problème de UPDATE
- Windows update bloqué - Guide
- Winget update - Guide
- Asus live update - Télécharger - Utilitaires
- Nettoyage de windows update - Guide
- Wsus offline update - Télécharger - Systèmes d'exploitation
12 réponses
bonjour
pas de </form> pas de bouton submit ni de bouton mise a jour ^o) ????
lorsque tu fais une mise a jour ton code s'execute sans erreur ??
Adns
pas de </form> pas de bouton submit ni de bouton mise a jour ^o) ????
lorsque tu fais une mise a jour ton code s'execute sans erreur ??
Adns
angelusflm
en faite j'ai crée un fichier update et je le met dans l'action de mon formulaire j'essaye déjà de faire fonctionner se bout de code :)
Bonjour
Ta requête met à jour TOUS les employés à la fois, car la seule condition du WHERE est la date. Il faudrait que tu ajoutes AND agent='$agent' (ou tout autre champ permettant de garantir qu'un seul employé est concerné)
Ta requête met à jour TOUS les employés à la fois, car la seule condition du WHERE est la date. Il faudrait que tu ajoutes AND agent='$agent' (ou tout autre champ permettant de garantir qu'un seul employé est concerné)
<input type="hidden" name="numIndice" value="<?php echo $indice;?>"/> </table> <input type="submit" value="valider" name="valider"> <input type="submit" value="Mise à jour" name="maj"> </form>
Voila le code oublié :)
$requete ="UPDATE presence_informatique SET etat = '$etat' WHERE date = ".$date." AND agent=".$agent."";
Pas d'erreur mais aucune mise à jour dans la bdd
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Pour la mise a jour c'est a ce niveau je pense qu'il faut que tu agisse
remplace
if(isset($_POST['valider']))
par
if(isset($_POST['maj']))
Adns
remplace
if(isset($_POST['valider']))
par
if(isset($_POST['maj']))
Adns
$requete ="UPDATE presence_informatique SET etat = '$etat' WHERE date = ".$date." AND agent=".$agent."";
n'est pas correct. Il te manque des ' autour de $agent. et ton ."" à la fin est totalement inutile (ou alors explique moi)
$requete ="UPDATE presence_informatique SET etat = '$etat' WHERE date = $date AND agent='$agent'";
Mais le champ agent est-il bien rempli ?
n'est pas correct. Il te manque des ' autour de $agent. et ton ."" à la fin est totalement inutile (ou alors explique moi)
$requete ="UPDATE presence_informatique SET etat = '$etat' WHERE date = $date AND agent='$agent'";
Mais le champ agent est-il bien rempli ?
Fais un echo de ta requête, ça pourrait aider à voir si les variables que tu transmets sont bien celles que tu attends.
Au passage, si ta variable $date n'est pas un Timestamp (i.e. un entier) il va falloir que tu le mettes entre simple quote ('), tout comme pour ta variable $agent.
Au passage, si ta variable $date n'est pas un Timestamp (i.e. un entier) il va falloir que tu le mettes entre simple quote ('), tout comme pour ta variable $agent.
Pour la mise a jour c'est a ce niveau je pense qu'il faut que tu agisse remplace if(isset($_POST['valider'])) par if(isset($_POST['maj'])) Adns
Je sais, mais pour le moment je le fait avec valider puisque je test juste cette partie du code après je le ferai.
Ensuite ma variable "etat" est un menu déroulant donc forcement il y a quelque chose. Pour finir la date n'est pas un timestamp donc je vais essayé comme ceci
$requete ="UPDATE presence_informatique SET etat = '$etat' WHERE date = $date AND agent='$agent'";
Essaye plutot comme ça, sinon une erreur risque d'être générée :
$requete ="UPDATE presence_informatique SET etat='$etat' WHERE date='$date' AND agent='$agent'";
ok alors dans ce cas fais un echo de toute test variable voir ce qu'elle contienne....
tu vera peut etre une erreur
Adns
tu vera peut etre une erreur
Adns