IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

requete update et case à cocher [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut requete update et case à cocher
    Bonjour,

    Je fais un site d'inscription et j'ai un problème : Une personne peut s'inscrire à un ou plusieurs stages mais peut aussi s'en désinscrire. Dans ce cas là, elle a le droit de s'y réinscrire. Mon problème c'est que je n'arrive pas à la réinscrire: ma requete update ne veut pas s'exécuter.

    code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    <?php
    	$idPersonnel = $_SESSION['numero']; //Extraction de l'id de l'empoyé.
    	$numero = 0;
    	$idStage = ''; 
    	$nombre = 0; //initialisation d'un nombre qui va calculé le nombre de cases cochées.
    	$requete = "select * from stage"; 
    	$resultat = $db->query($requete);
    	$objet = $resultat->fetch_object();
    	while ($objet != false)
    	{
    		$nombrePlaces = $objet->nbRestantes;
    		$idStage = $objet->numStage;
    		$chaine = lireDonneePost("$idStage");
    		$objet = $resultat->fetch_object();
     
    		if ($chaine == 'on')
    		{
    			$nombrePlaces = $nombrePlaces - 1;
     
    			$requete1 = "select * from inscrire";
     
    			$resultat1 = $db->query($requete1);
    			$objet1 = $resultat1->fetch_object();
    			$numStage = $objet1->numStage_Stage;
    			$personnel = $objet1->id_Personnel;
    			if (($idStage == $numStage) && ($idPersonnel == $personnel))
    			{
    				$requeteUpdate = "update inscrire set desinscription = 'Non' where numStage_Stage = '$idStage' and id_Personnel = '$idPersonnel'";
    				$result = $db->query($requeteUpdate);
    				if ($result != false)
    				{
     
    					$requeteUpd = "UPDATE `stage` SET `nbRestantes`= '$nombrePlaces' where numStage = '$idStage'";
    					$result2 = $db->query($requeteUpd);
    					if ($result2 != false)
    					{
    						$mess = "Votre inscription pour ce(s) stage(s) a été correctement prise en compte.";
    						echo("<script>alert('$mess');</script>");
    					}
    					else
    					{
    						$mess2 = "Un problème est survenu dans l'inscription des stages.";
    						echo("<script>alert('$mess2');</script>");
    					}
    				}
    			}
    			else
    			{
    				$requeteInsertion = "insert into inscrire values('Non','$idStage','$idPersonnel',null)";
    				$result1 = $db->query($requeteInsertion);
    				if ($result1 != false)
    				{
    					$requeteUpd2 = "UPDATE `stage` SET `nbRestantes`= '$nombrePlaces' where numStage = '$idStage'";
    					$result3 = $db->query($requeteUpd2);
    					if($result3 != false)
    					{
    						$mess3 = "Votre inscription pour ce(s) stage(s) a été correctement prise en compte.";
    						echo("<script>alert('$mess3');</script>");
    					}
    					else
    					{
    						$mess4 = "Un problème est survenu dans l'inscription des stages.";
    						echo("<script>alert('$mess4');</script>");
    					}
    				}
    			}
    		}
    	}
    ?>
    Merci de votre aide

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    affiche ta requête et vérifie la dans phpmyadmin.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut
    G essayer de lafficher mais sa ne laffiche pas

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    ca signifie donc que tu ne rentres pas dans une des conditions au dessus.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut
    Ce qui est bizare car quand je coche un stage pour sinscrire pour la première fois sa passe

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Est-ce que tu testes le checkbox avec isset dans la fonction lireDonneePost()?
    Montre nous ton formulaire et la fonction lireDonneePost.

    A+.

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut
    JE l'ai tester là: $chaine = lireDonneePost("$idStage"); et après j'ai mis un if

    De plus, Quand je m'inscrit pour la première fois à un stage, cela fonctionne. Mais après, on peut choisir de ce désinscrire, donc sa passe le champs désinscription à "Oui" dans la table. Donc on à possibilité de se réinscrire et c sa qui ne fonctionne pas.

  8. #8
    Invité
    Invité(e)
    Par défaut
    BOnjour,
    vu que tu ne mets pas de commentaires dans ton code, on ne peut que supposer...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	if (($idStage == $numStage) && ($idPersonnel == $personnel))
    	{
    		$requeteUpdate = "update inscrire set desinscription = 'Non' where numStage_Stage = '$idStage' and id_Personnel = '$idPersonnel'";
    A priori, c'est là que ça devrait se passer, non ?
    Vérifie :
    • les données $idStage, $numStage, $idPersonnel, $personnel
    • que tu passes bien dans la condition

  9. #9
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Re, quel est le rôle du case à cocher?

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut
    Elle contient lidstage et sert à sinscrire

    Oui c sa qui bloque:

    $personnel est récupérer dans ma table inscrire,
    $idpersonnel est récupérer par la variable de session et elle fonctionne bien car quand je m'inscrire pour la première fois sa fonctionne
    $idStage récupère la case à cocher qui a le numéro de stage
    $numStage est récupérer dans ma table inscrire

  11. #11
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Arrête de supposer et vérifie concrètement ce que valent ces variables au moment de l'update.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut
    J'ai fait des echo et j'ai vu le problème: Sa ne parcours pas ma table inscrire: Sa reste que sur le premier enregistrement.
    Du coup, j'ai essayé sa, mais quand je clic sur le bouton pour inscrire, sa marche pas. sa m'affiche une infini de valeur pour les 4 variables et les valeurs sont les même à chaque fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    <?php
    	$idPersonnel = $_SESSION['numero']; //Extraction de l'id de l'empoyé.
    	$numero = 0;
    	$idStage = ''; 
    	$nombre = 0; //initialisation d'un nombre qui va calculé le nombre de cases cochées.
    	$requete = "select * from stage"; 
    	$resultat = $db->query($requete);
    	$objet = $resultat->fetch_object();
    	while ($objet != false)
    	{
    		$nombrePlaces = $objet->nbRestantes;
    		$idStage = $objet->numStage;
    		$chaine = lireDonneePost("$idStage");
    		$objet = $resultat->fetch_object();
     
    		if ($chaine == 'on')
    		{
    			$nombrePlaces = $nombrePlaces - 1;
     
    			$requete1 = "select * from inscrire";
     
    			$resultat1 = $db->query($requete1);
    			$objet1 = $resultat1->fetch_object();
    			while ($objet1 != false)
    			{
    			$numStage = $objet1->numStage_Stage;
    			$personnel = $objet1->id_Personnel;
    			echo $numStage."<br/>";
    			echo $idStage."<br/>";
    			echo $personnel."<br/>";
    			echo $idPersonnel."<br/>";
    			}
     
    			if (($idStage == $numStage) && ($idPersonnel == $personnel))
    			{
    				$requeteUpdate = "update inscrire set desinscription = 'Non' where numStage_Stage = '$idStage' and id_Personnel = '$idPersonnel'";
    				echo $requeteUpdate;
    				$result = $db->query($requeteUpdate);
    				if ($result != false)
    				{
     
    					$requeteUpd = "UPDATE `stage` SET `nbRestantes`= '$nombrePlaces' where numStage = '$idStage'";
    					$result2 = $db->query($requeteUpd);
    					if ($result2 != false)
    					{
    						$mess = "Votre inscription pour ce(s) stage(s) a été correctement prise en compte.";
    						echo("<script>alert('$mess');</script>");
    					}
    					else
    					{
    						$mess2 = "Un problème est survenu dans l'inscription des stages.";
    						echo("<script>alert('$mess2');</script>");
    					}
    				}
    			}
    			else
    			{
    				$requeteInsertion = "insert into inscrire values('Non','$idStage','$idPersonnel',null)";
    				$result1 = $db->query($requeteInsertion);
    				if ($result1 != false)
    				{
    					$requeteUpd2 = "UPDATE `stage` SET `nbRestantes`= '$nombrePlaces' where numStage = '$idStage'";
    					$result3 = $db->query($requeteUpd2);
    					if($result3 != false)
    					{
    						$mess3 = "Votre inscription pour ce(s) stage(s) a été correctement prise en compte.";
    						echo("<script>alert('$mess3');</script>");
    					}
    					else
    					{
    						$mess4 = "Un problème est survenu dans l'inscription des stages.";
    						echo("<script>alert('$mess4');</script>");
    					}
    				}
    			}
    		}
    	}
    ?>

  13. #13
    Invité
    Invité(e)
    Par défaut
    Et si tu mettais des commentaires dans ton code ?

    Peut-être comprendrais-tu mieux (et nous aussi) la LOGIQUE des if... else....

  14. #14
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut
    J'ai réussi. J'ai juste un petit problème: Mon message inscription réussi s'affiche autant de fois que j'ai coché de case. Je voudrais qu'il s'affiche qu'une seule fois:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    <?php
    	$messageOK = "Votre inscription pour ce(s) stage(s) a été correctement prise en compte."; // Message à afficher à l'utilisateur si tout c'est bien passé
    	$messageKO = "Un problème est survenu dans l'inscription des stages."; // Message à afficher à l'utilisateur si un problème est survenu
     
     
    	$idPersonnel = $_SESSION['numero']; //Extraction de l'id de l'empoyé.
    	$numero = 0;
    	$idStage = ''; 
    	$nombre = 0; //initialisation d'un nombre qui va calculé le nombre de cases cochées.
     
    	$requete1 = "select * from stage"; 
    	$resultat1 = $db->query($requete1);
    	$objet1 = $resultat1->fetch_object();
    	while ($objet1 != false)
    	{
    		$nombrePlaces = $objet1->nbRestantes;
    		$idStage = $objet1->numStage;
    		$chaine = lireDonneePost("$idStage");
    		$objet1 = $resultat1->fetch_object();
     
    		if ($chaine == 'on')
    		{
    			$nombrePlaces = $nombrePlaces - 1;
     
    			$requete2 = "select * from inscrire";
    			$resultat2 = $db->query($requete2);
    			$objet2 = $resultat2->fetch_object();
     
    			while ($objet2 != false)
    			{
    				$numStage = $objet2->numStage_Stage;
    				$personnel = $objet2->id_Personnel;
     
    				if (($idStage == $numStage) && ($idPersonnel == $personnel)) // Regarde si les id_Stage et les id_personnel sont identiqiues par rapport à ceux récupérés dans le formulaire
    				{
    					// mise à jour du champs desinscription dans la table inscrire car le visiteur s'était déjà inscrit une fois et qu'il avait annulé son inscription
    					$requeteUpdate1 = "update inscrire set desinscription = 'Non' where numStage_Stage = '$idStage' and id_Personnel = '$idPersonnel'";
    					$resultat3 = $db->query($requeteUpdate1);
     
    					if ($resultat3 != false)
    					{
    						// mise à jour du champs nbRestantes qui met à jours le nombre de places restantes pour le stage en y supprimant une place
    						$requeteUpdate2 = "UPDATE `stage` SET `nbRestantes`= '$nombrePlaces' where numStage = '$idStage'";
    						$resultat4 = $db->query($requeteUpdate2);
     
    						if($resultat4 != false)
    						{
    							echo("<script>alert('$messageOK');</script>");
    						}
    						else
    						{
    							echo("<script>alert('$messageKO');</script>");
    						}
    					}
    				}
    				else
    				{
    					// insertio d'un nouveau enregistrement dans la table inscrire car le visiteur ne s'était pas déjà inscrit au stage et donc n'avait pas annulé son inscription
    					$requeteInsertion = "insert into inscrire values('Non','$idStage','$idPersonnel',null)";
    					$resultat5 = $db->query($requeteInsertion);
     
    					if ($resultat5 != false)
    					{
    						// mise à jour du champs nbRestantes qui met à jours le nombre de places restantes pour le stage en y supprimant une place
    						$requeteUpdate3 = "UPDATE `stage` SET `nbRestantes`= '$nombrePlaces' where numStage = '$idStage'";
    						$resultat6 = $db->query($requeteUpdate3);
     
    						if($resultat6 != false)
    						{
    							echo("<script>alert('$messageOK');</script>");
    						}
    						else
    						{
    							echo("<script>alert('$messageKO');</script>");
    						}
    					}
    				}
    				$objet2 = $resultat2->fetch_object();
    			}
    		}		
    	}
     
    ?>

  15. #15
    Invité
    Invité(e)
    Par défaut
    Remplace : echo("<script>alert('$messageOK');</script>");
    par : $alert = $messageOK;

    Remplace : echo("<script>alert('$messageKO');</script>");
    par : $alert = $messageKO;
    ET met APRES le dernier } :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!empty($alert)) { echo("<script>alert('$alert');</script>"); }

  16. #16
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut
    Merci sa fonctionne

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] UPDATE de case à cocher
    Par jeje_974 dans le forum PHP & Base de données
    Réponses: 42
    Dernier message: 14/09/2013, 10h51
  2. PB Requete UPDATE avec CASE et SUM
    Par Avatar69 dans le forum Requêtes
    Réponses: 0
    Dernier message: 03/07/2013, 15h51
  3. [MySQL] update de cases à cocher multiples qui ne fonctionne pas
    Par mimosa21 dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 09/12/2012, 11h28
  4. [VBA UPDATE] Problème UPDATE et cases à cocher
    Par rungis78-76 dans le forum VBA Access
    Réponses: 6
    Dernier message: 08/10/2009, 08h39
  5. [MySQL] Update avec case à cocher
    Par Vetchostar dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 01/11/2008, 14h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo