Remplir une table sous conditions

Bonjour à toutes et à tous,

Je suis en train d'écrire un script qui doit, à partir d'un formulaire extérieur, remplir une table si les éléments fournis correspondent à partir de la fonction IF...ELSE

Malheureusement, la table "adherents2022" qui doit recevoir le pw donné dans le formulaire, n'est jamais rempli. Je n'arrive pas à saisir les variables de mon ARRAY permettant le choix IF, c'est toujours le ELSE qui rejette.

Merci d'avance de m'éclairer.

//On insère les données : nom, prenom et pw dans la table mots_de_passe
			
			$sth=$conn->prepare("
					INSERT INTO mots_de_passe (Nom, Prenom, pw)
					VALUES(:Nom, :Prenom, :pw)");
					
			$sth->bindparam(':Nom',$Nom);
			$sth->bindparam(':Prenom' ,$Prenom);
			$sth->bindparam(':pw', $PW);
			$sth->execute();
						
			echo "saisie réussie dans la table Mots_de_passe";
			
			//on scrute la table adherents2022
			$sth=$conn->prepare ("SELECT Nom, Prenom FROM adherents2022");
			$sth->execute();
			
			$resultat=$sth->fetchALL(PDO::FETCH_ASSOC);
			echo'<pre>';
			print_r($resultat);
			echo'<pre>';
			
			$taille_adherents2022=count($resultat);
			echo $taille_adherents2022;
			
			for ($i=0; $i<$taille_adherents2022; $i++){				
				$p = $resultat[$i];
				echo'<pre>';
			print_r($p);
			echo'<pre>';
			if(echo($p==$Nom) AND echo($p==$PRENOM)){
				$sth=$conn->prepare("
					INSERT INTO adherents2022 (pw)
					VALUES(:pw)");			
			$sth->bindparam(':pw', $PW);
			$sth->execute();
			}
			else{echo '<br> PW non copié dans table adherent2022';}
			}


Windows / Edge 104.0.1293.70

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur

    bonjour, je commencerais par supprimer les "echo" de la ligne 31.

    1. OK, tu as raison yg_be. Mais j'ai mis cet echo afin de m'assurer que les variables arrivent bien jusqu'à cette ligne de script. Cet echo ne change rien à mon pb

      1. Contributeur

        Montre alors ton code adapté.

      2. Contributeur

        A y regarder de plus prêt, ton code est bourré d'erreurs de logique.

        Est-ce ton premier exercice?

    2. Modérateur

      Bonjour,

      En complément de la très juste remarque d'Yg_be ...

      Sais tu utiliser un WHERE dans une requête SQL ?

      Connais tu l'instruction foreach ?

      Que viennent faire des echo dans un IF ?

      Et comment .. une même variable ($p) peut-elle être égale à la fois au nom et au prénom ?

      D'ailleurs .. $p .. est un ARRAY contenant plusieurs informations ( résultat d'une ligne de ta requête SQL )

      Ce qui amène une nouvelle question ..  sais tu utiliser des ARRAY associatifs ?

      Dernière question ..  pourquoi insérer des données dans la table mots_de_passe  .. pour ensuite aller voir si le nom et prénom de l'utilisateur existe dans la table adhérent pour y copier le password ?  Pourquoi ne pas directement updater ( tiens.. encore une instruction sql que tu ne connais peut-être pas... ) l'adhérent concerné  ?

      Tu sembles ne pas avoir acquis le minimum requis de connaissances avant de te lancer.  Essaye de suivre quelques tutos/formations sinon tu ne vas pas t'en sortir... 


      1. Merci Jordane pour tes remarques. Je suis effectivement un "bleu", et j'apprends petit à petit avec les bouquins de Pierre GIRAUD. Voici le schéma général de mon script :

        • Dans une Bdd, une première table doit contenir : NOM PRENOM et PW d'un adhérent qui s'inscrit. La seconde table contient tous les renseignements de l'adhérent hormis le PW
        • Le jeu consiste à copier le PW de la 1ère table dans la seconde de façon à ce que l'adhérent puisse se connecter avec ses NOMS, PRENOMS et PW et avoir accès à la seconde table.

        Je reconnais que c'est tordu, mais c'est un exercice que j'essaie de réussir.

        1. Contributeur

          Je pense que tu n'as pas encore les connaissances pour faire cet exercice, ni en programmation, ni en bases de données.

      2. Merci yg_be. Je vais retourner à mes chères études. Je reviendrai quand j'aurai plus de connaissance.

        Merci encore