Page 1 sur 1

update qui marche pas

Posté : 25 sept. 2015, 18:28
par laplumaencre
Salut à tous !
Voilà le problème, en fait mon script marche tres bien, pas d'erreur d'exécution, mais il ne modifit pas la valeur du champ verrou de ma bdd qui devrait passer de no à yes...
J'ai testé en copier coller la requete sql direct dans adminer, qui fonctionne parfaitement.
Donc alors pour quoi alors que j'ai des erreurs nul part (enfin pas d'exécution), ce verrou ne passe pas a yes ???
voilà le code, merci pour le coup de main.

Code : Tout sélectionner

<?php //Fichier de validation si email esr vrai include "config-connexion.php"; $email=$_GET["email"]; $num_verrou=$_GET['num_verrou']; if (isset($email) && !empty($email) && isset($num_verrou) && !empty($num_verrou) ) { //Verifie si l'email qui essait de s'inscrire n'est pas déjà dans la bdd $res = $bdd->prepare("SELECT * FROM inscription WHERE email =:email AND num_verrou = :num_verrou "); $res->bindValue('email', $email, PDO::PARAM_STR); $res->bindValue('num_verrou', $num_verrou, PDO::PARAM_STR); $res->execute(array(':email' => $email, ':num_verrou' => $num_verrou)); $verif = $res->fetch(PDO::FETCH_ASSOC); if ($verif['email'] == $email && $verif['num_verrou'] == $num_verrou ) { //Si email et num_verrou de l'email sont identique à celui de la bdd, alors verrou passe à yes $sql = "UPDATE inscription SET verrou = 'yes' WHERE email =' ".$email." ' " ; $bdd->exec($sql); $error = "Vous venez de valider votre inscription, vous pouvez maintenant vous <a href=\'connexion.php\' name=\'connexion\' class=\'bp-connexion\' >connectez</a> ."; } else { $error= "<h2>Il y a un problème là ? Votre email et votre identifiant secret ne correspondent pas !</h2>"; } } else { $error="<h2>L\'email inclus dans votre lien de validation n\'existe pas ?!/h2>"; } ?> <html lang="fr"> <meta charset="utf-8" /> <head> <meta charset="utf-8" /> <title>Jaaser.</title> </head> <body> <section> <link href="fr.css" hreflang="FR" title="fr" type="text/css" rel="stylesheet" lang="français" /> <?php echo $error; ?> </section> </body> </html> <?php ?>

Re: update qui marche pas

Posté : 25 sept. 2015, 18:35
par Elie
C'est un peu chelou ...
Tu dis 2 fois la meme chose en fait :
$res->bindValue('email', $email, PDO::PARAM_STR);
   $res->bindValue('num_verrou', $num_verrou, PDO::PARAM_STR);

   $res->execute(array(':email' => $email, ':num_verrou' => $num_verrou));
C'est soit l'un soi l'autre.
Si tu bindValue alors execute() doit être vide.

Garde donc que :
$res->execute(array('email' => $email, 'num_verrou' => $num_verrou));
Sans les :

ensuite
if ($verif['email'] == $email && $verif['num_verrou'] == $num_verrou ) {
C'est débile car si ca s'affiche c'est que la conditons est déjà rempli.

Fait plutot un
if($req->rowCount() == 1) {
Essaye deja ca ...

Re: update qui marche pas

Posté : 25 sept. 2015, 18:44
par laplumaencre
Salut Elie, merci pour ta réponse
Mais si je fais ce que tu m'a noté =>
Notice: Undefined variable: req in /home/jeremy/www/site_web/jaaser/valid_inscription.php on line 14

Fatal error: Call to a member function rowCount() on null in /home/jeremy/www/site_web/jaaser/valid_inscription.php on line 14
EDIT =>
Donc oui le script s'exécute en fait en mettant $res à la place de $req. surement moins débile, mais ne modifie toujours mon verrou no =>yes

Re: update qui marche pas

Posté : 25 sept. 2015, 18:52
par Elie
Bah après il faut savoir débugger ...
Tu marques :
echo 'Il y a '.$res->rowCount().' résultat'; print_r($result);

Re: update qui marche pas

Posté : 25 sept. 2015, 19:01
par laplumaencre
Oui j'ai déjà un var_dump de $res et j'avais bien la bonne requete, alors qu'a le code modifier comme tu m'as ecris =>
Il y a 1 résultatPDOStatement Object ( [queryString] => SELECT * FROM inscription WHERE email =:email AND num_verrou = :num_verrou )
Il envois ma requête préparé et non la variable $email et $num_verrou...

Re: update qui marche pas

Posté : 25 sept. 2015, 19:14
par Elie
print_r($verif);

Faut comprend un peu aussi le principe de la programmation ...

Re: update qui marche pas

Posté : 25 sept. 2015, 19:18
par laplumaencre
ba en fait tu m'as dit que c'etait debile, j'ai viré $verif et tout ça et tester ton code ? et je comprend quand meme ce que je fais, car au debut du post ma requete envoyer bien un select avec le bon email et bon num_verrou
Ce que j'ai, noté juste avant c'est le print_r de $res (pas de result dans mon code)

Re: update qui marche pas

Posté : 25 sept. 2015, 19:42
par Elie
Je n'ai pas pu tester mais un code bien c'est ca :
<?php

	// Fichier de validation si email est vrai
	include('config-connexion.php');
?>
<html lang="fr">
<meta charset="utf-8" />
<head>
   <meta charset="utf-8" />
   <title>Jaaser.</title>
   <link href="fr.css" hreflang="FR" title="fr" type="text/css" rel="stylesheet" lang="français" />
</head>
<body>
<section>
<?php 

  if(!empty($_GET['email']) && !empty($_GET['num_verrou']))   {
	  
	   // Verifie si l'email qui essait de s'inscrire n'est pas déjà dans la bdd
	   $sql = "SELECT * FROM `inscription` WHERE `email` = :email AND `num_verrou` = :num_verrou";
	   $req = $bdd->prepare($sql);
	   $req->execute(array('email' => $_GET['email'], 'num_verrou' => $_GET['num_verrou'])) or die('Erreur dans la requete '.$sql);
	   
		//Si email et num_verrou de l'email sont identique à celui de la bdd, alors verrou passe à yes
	   if($req->rowCount() == 1) {
			 
			 $sql = "UPDATE `inscription` SET `verrou` = 'yes' WHERE `email` = ?";      
			 $req = $bdd->prepare($sql);  
			 $req->execute(array($_GET['email'])) or die('Erreur dans la requete '.$sql);     
			    
			 echo  'Vous venez de valider votre inscription, vous pouvez maintenant vous <a href="connexion.php" name="connexion" class="bp-connexion">connectez</a>';
	   
	   } else {   
	   
			  echo "<h2>Il y a un problème là ? Votre email et votre identifiant secret ne correspondent pas !</h2>";
			  
	   }
	   
   } else {
      
	  echo "<h2>Les informations sont manquantes</h2>";
   }
   ?>
</section>
</body>
</html>

Re: update qui marche pas

Posté : 25 sept. 2015, 19:55
par laplumaencre
Bon ba en effet tout marche nickel, mais bon c'est un forum PHP DEBUTANT là, je recherche de l'aide pour COMPRENDRE pas pour qu'on me balance à la gu... avec pas mal de mépris du code tout pret.
Merci quand meme pour ce code,il va m'être utile, j'ai plus qu'a reflechir à mes erreurs dans coin.

Re: update qui marche pas

Posté : 25 sept. 2015, 19:59
par laplumaencre
Je pense que ce code mieux fait que moi fonctionne juste parce que tu utilises $_GET variable et non pas comme j'ai voulu faire en la transmettant dans une autre variable pour faciliter l’écriture. je vois que ça.

Sinon mon php d'habitude je l'inclus dans les balise html comme tu as fais, mais là je voulais juste que le script marche et qui me renvois un echo, la partit html mise en forme je l'aurai fait après c'est pour ça qu'il était en bas.