PHP ne rentre pas dans une boucle fetch() !

Simax150
Invité n'ayant pas de compte PHPfrance

15 avr. 2010, 13:17

Bonjour à tous !
Mon script d'inscription marche bien, à un prblème :
le code qui suit permet l'activation d'un compte. Il compare la clef que le membre à recu dans un mail avec celui ajouté à la bdd lors de son inscription.
Voilà ce qui est affiché :
4
Notice: Undefined variable: trouve in ...
include("includes/connexion_mysql.php");//On se connecte à la base sql

if (isset($_GET['hasard']))
	{
		$clef = $_GET['hasard'];//on récupere la clef d'activation dans une variable si elle existe
		$clefabs = false;
	}

else
	{
		$clefabs = true;//sinon, la variable clef est fausse
	}


$activation = $bdd->query("SELECT * FROM info_utilisateurs"); //On récupère le champs activation, pour le comparer avec la clef d activation du $_GET

if ($clefabs == false)//si la variable clef n'est pas fausse :
{
	while ($abc = $activation->fetch())
		{echo('2');
			if (in_array ($clef, $abc['activation']) == true)//si la clef est trouvée dans l'array :
			{
				echo('3');
				$trouve = true;//la variable trouve est juste
			}
			
			else
			{
				echo('3.5');
				$trouve = false;
			}
		
		}
echo('4');
$activation->closeCursor();
}
Merci d'avance !

ViPHP
ViPHP | 5462 Messages

15 avr. 2010, 13:29

pourquoi tu va chercher tout les utilisateurs ?
autant faire une requête style :
SELECT * FROM info_utilisateurs WHERE activation = '$clef'

Eléphant du PHP | 109 Messages

15 avr. 2010, 15:50

Bonjour,

si tu ne souhaites que tester si l'utilisateur dont la clé est $cle le mieux est de faire ceci :
SELECT COUNT(*) AS nbre_utilisateur FROM info_utilisateur WHERE actication = '$cle'
Si l'utilisateur avec la clé $cle existe, la requête te retournera 1 sinon, 0.
Ton script sera par conséquent beaucoup plus simple que se que tu nous présente là.
De plus, il ne chargera pas tous les champs de ta table qui sont assez inutile dans ce script.

Bonne fin de journée. ;)
ANSI <font> <font> <font> <li> <p> <title> Mar I/O .NET

ViPHP
ViPHP | 5462 Messages

15 avr. 2010, 15:55

ouai et tu feras pas "query" mais "exec"

Simax150
Invité n'ayant pas de compte PHPfrance

16 avr. 2010, 17:40

Merci beaucoup pour vos réponses qui m'ont bien aidé. :D :D
Il ne me reste qu'un dernier problème :| :
$membre = $activation = $bdd->query("SELECT COUNT(*) AS abc FROM info_utilisateurs WHERE activation = ".$clef."");
echo ($membre.'Y ');
Ce bout de code qui renvoie 1 ou 0 me permet de savoir si un membre de la table info_utilisateurs a en champs d'activation la variable $clef.
Mais il me renvoie :
Catchable fatal error: Object of class PDOStatement could not be converted to string in C:\wamp\www\alea\activation.php on line 23
Le retour de cette requette n'est pas du texte ? Je ne peux pas l'utiliser tel quel ?
Merci d' avance pour vos réponses ! :D

ViPHP
ViPHP | 5462 Messages

16 avr. 2010, 17:44

soit tu fais

$membre = $activation->fetch();

soit tu utilise exec a la place de query (solution que je te conseil, puisque que c'est fait pour)