sur ma page activer-compte-utilisateur.php
Lors de de la validation de l'inscription je reçois bien l’émail avec le lien d'activation quand je clique sur ce dernier ça dois activé le compte donc le ENUM passe de 0 à 1 et si exemple je re-clique sur ce lien ça doit me dire que mon compte a été déjà activé!
Mais avec avec l’évolution vers PDO le code fait à sa tête
c'est le PDOStatement::rowCount() qui me pose des problèmes on dit que PDOStatement::rowCount() retourne le nombre de lignes affectées par la dernière requête DELETE, INSERT ou UPDATE
mais là, ma requête est un SELECT donc comment faire ?
voila mon ancien code avec mysql:
// Sélection de l'utilisateur concerné
$result = mysql_query("
SELECT id
, Compte_Active
, Clef_Activation
FROM Comptes_Utilisateurs
WHERE id = '" . mysql_real_escape_string($_GET["id"]) . "'
AND Clef_Activation = '" . mysql_real_escape_string(strtolower($_GET["clef"])) . "'
");
// Si une erreur survient
if(!$result)
{
$message = "Une erreur est survenue lors de l'activation de votre compte utilisateur";
}
else
{
// Si aucun enregistrement n'est trouvé
if(mysql_num_rows($result) == 0)
{
header("Location: index.php");
}
else
{
// Récupération du tableau de données retourné
$row = mysql_fetch_array($result);
// Vérification que le compte ne soit pas déjà activé
if($row["Compte_Active"] != 0)
{
$message = "Votre compte utilisateur a déjà été activé";
}
et avec PDO: // Connexion à la base de données
include("include/connexionpdo.inc.php");
$query=$db->prepare('SELECT id, Compte_Active, Clef_Activation
FROM Comptes_Utilisateurs
WHERE id =:idd
AND Clef_Activation =:clef
');
$query->bindValue(':idd',strtolower($_GET["id"]), PDO::PARAM_INT);
$query->bindValue(':clef',strtolower($_GET["clef"]), PDO::PARAM_STR);
$query->execute();
// Si une erreur survient
if(!$query)
{
$message = "Une erreur est survenue lors de l'activation de votre compte utilisateur";
}
else
{
// Si aucun enregistrement n'est trouvé
$row = $query->rowCount();
if($row == 0)
{
header("Location: index.php");
}
else
{
// Récupération du tableau de données retourné
if (($row = $query->fetch(PDO::FETCH_ASSOC)) !== false )
{
// Vérification que le compte ne soit pas déjà activé
if($row["Compte_Active"] != 0)
{
$message = "Votre compte utilisateur a déjà été activé";
}
}
Donc là si je reste dans cette dernier configuration en cliquant sur mon lien d'activation rien ne se passe:
mais si je met
$row = $query->fetch(); à la place de $row = $query->rowCount();
Mon compte s'active bien et j'ai bien le message de confirmation qu'il est bien activé, mais si je viens a re-cliqué sur mon lien d'activation j'ai toujours le message de confirmation qu'il est bien activé.mais si je remet
$row = $query->rowCount(); à la place de$row = $query->fetch() j'ai bien mon message $message = "Votre compte utilisateur a déjà été activé";
Donc je suis un peu perdu avec les retours de tableau comment codé pour que sa fonctionne positivement?