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!
A voir également:
- If {} else.. Php Mysql
- Easy php - Télécharger - Divers Web & Internet
- Mysql community server - Télécharger - Bases de données
- Expert php pinterest - Télécharger - Langages
- Php alert ✓ - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
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
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)...
boubou2111
Merci beaucoup le père!
Utilisateur anonyme
De rien :-)
Bonjour,
Ajoute les ":" devant le nom des variables
$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.
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.