If {} else.. Php Mysql
boubou2111
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Voilà j'ai un petit soucis, je fais un formulaire d'ajouts de donnée à une table, je voulais faire "si l'enregistrement n'existe pas, l'enregistrer, si non, afficher un message" sauf que ça n'enregistre jamais.. Je ne sais pas si c'est clair, voilà le code:
J'ai définis toute les variables avant et tout marche en théorie, voilà merci!
Voilà j'ai un petit soucis, je fais un formulaire d'ajouts de donnée à une table, je voulais faire "si l'enregistrement n'existe pas, l'enregistrer, si non, afficher un message" sauf que ça n'enregistre jamais.. Je ne sais pas si c'est clair, voilà le code:
$doublon = $bdd->prepare("SELECT COUNT(*) FROM Cli WHERE NAME= :nom AND FIRSTNAME= :prenom;");
$doublon->execute(array('nom'=>$name, 'prenom'=>$prenom));
if ($doublon>0)
{ echo "Désolé, cet avatar a déjà été ajouté! Merci quand même!";}
else {
$req = $bdd->prepare('INSERT INTO Cli (NAME, FIRSTNAME, SEXE, AGE) VALUES (:name, :prenom, :sexe, :age)');
$req->execute(array(
"name" =>$name,
"prenom"=>$prenom,
"sexe"=>$sexe,
"age"=>$age,
));
echo '<h5>'.$prenom.' '.$nom.' a bien été ajouté!</h5>';
}
J'ai définis toute les variables avant et tout marche en théorie, voilà merci!
4 réponses
-
Je simplifie un peu :
Quand tu as exécuté une requête SELECT, pour récupérer le résultat (s'il y en a un) il faut faire une opération qui s'appelle fetch et qui te donne une ligne de résultat. Tu peux d'ailleurs recommencer s'il y a plusieurs lignes pour toutes les récupérer, mais ton COUNT(*) donne une seule ligne.
Le résultat récupéré est (sauf utilisation d'autres options) un tableau qui contient autant d'éléments que de champs demandés. Dans ton cas, un seul$doublon = $bdd->prepare("SELECT COUNT(*) FROM Cli WHERE NAME= :nom AND FIRSTNAME= :prenom;"); $doublon->execute(array('nom'=>$name, 'prenom'=>$prenom)); $ligne=$doublon->fetch(); if ($ligne[0]>0)... -
Bonjour,
$req->execute(array( "name" =>$name, "prenom"=>$prenom, "sexe"=>$sexe, "age"=>$age, ));
Ajoute les ":" devant le nom des variables$req->execute(array(":name" =>$name , ":prenom"=>$prenom , ":sexe"=>$sexe , ":age"=>$age ));
-
Bonjour
Ton erreur vient du test if ($doublon>0)
$doublon est le résultat d'un pdo::execute, et vaut donc true ou false suivant que ta requête s'est bien ou mal déroulée. Ce n'est pas un nombre, tester s'il est supérieur à 0 ne veut pas dire grand-chose, en tous cas pas ce que tu crois.
Il faut faire un fetch pour avoir accès au count(*), comme pour n'importe quelle autre résultat de SELECT
Au passage, les : ne sont pas obligatoires dans les noms de paramètres qu'on passe en array à execute : PHP les rajoute si on ne les met pas. -
Le fetch je le met dans le if?
Tu ne sais pas récupérer le résultat d'une requête SELECT ? C'est la première fois que tu utilises une base de données ?