Problème de UPDATE

Résolu
angelusflm -  
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
<?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&eacute;sent</option>
<option>Cong&egrave;s Annuels</option>
<option>Cong&egrave;s Exceptionnel</option>
<option>Mission</option>
<option>R&eacute;cup&eacute;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&eacute;j&agrave; enregistrer!<br />');
	echo('Si vous souhaitez &eacute;craser le contenu pr&eacute;c&eacute;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 &agrave; bien &eacute;t&eacute; 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 &agrave; jour effectu&eacute;<br>";
							
}
else
echo "La mise &agrave jour &agrave; rencontr&eacute un probl&egrave;me<br>";
?>
A voir également:

12 réponses

adns Messages postés 1094 Date d'inscription   Statut Membre Dernière intervention   153
 
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
0
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 :)
0
le père
 
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é)
0
angelusflm
 
<input type="hidden" name="numIndice" value="<?php echo $indice;?>"/>
</table>
<input type="submit" value="valider" name="valider">
<input type="submit" value="Mise &agrave; jour" name="maj">
</form>


Voila le code oublié :)
0
angelusflm
 
$requete ="UPDATE presence_informatique SET etat = '$etat' WHERE date = ".$date." AND agent=".$agent."";


Pas d'erreur mais aucune mise à jour dans la bdd
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
adns Messages postés 1094 Date d'inscription   Statut Membre Dernière intervention   153
 
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
0
le père
 
$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 ?
0
Sri Lumpa Messages postés 177 Date d'inscription   Statut Membre Dernière intervention   69
 
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.
0
angelusflm
 
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'";
0
Sri Lumpa Messages postés 177 Date d'inscription   Statut Membre Dernière intervention   69
 
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'";
0
adns Messages postés 1094 Date d'inscription   Statut Membre Dernière intervention   153
 
ok alors dans ce cas fais un echo de toute test variable voir ce qu'elle contienne....

tu vera peut etre une erreur

Adns
0
angelusflm
 
merci beaucoup c'est bien un soucis avec les "" :)

J'ai mis ceci

$requete ="UPDATE presence_informatique SET etat = '$etat' WHERE date = '$date' AND agent='$agent'";
0
Sri Lumpa Messages postés 177 Date d'inscription   Statut Membre Dernière intervention   69
 
Content d'avoir pu t'aider ;)

Pense à marquer le post comme résolu si tout va bien
0