Recherche couple valeur dans table avec count()

Résolu/Fermé
danielos77 Messages postés 108 Date d'inscription samedi 18 février 2006 Statut Membre Dernière intervention 16 janvier 2024 - 13 déc. 2022 à 15:53
danielos77 Messages postés 108 Date d'inscription samedi 18 février 2006 Statut Membre Dernière intervention 16 janvier 2024 - 13 déc. 2022 à 18:04

Bonjour,

Toujours en galère avec une requête, je me résous à poster ici.

Afin de voir si une personne est déjà inscrite, je pensais faire une requête sur la table membres sur les colonnes Nom et Prenom.
La requête directement dans la base fonctionne et donne bien la valeur à l'alias dejamembre 0 ou 1 mais dans code de la page, lorsque j'essaie d'afficher cette valeur pour ensuite la traiter avec un if else, j'ai les  messages ci-dessous :

Use of undefined constant dejamembre - assumed 'dejamembre' (this will throw an Error in a future version of PHP) in... Je comprends bien que c'est pas le bon choix pour le futur mais je ne sais pas comment corriger.

l'autre message est

count(): Parameter must be an array or an object that implements Countable in... Or c'est bien un tableau qui aura au maximum 1 ligne (soit le couple Non/Prenom est présent soit il ne l'est pas)

Le morceau de code est :

      // Vérification que Nom Prenom n'est pas déjà membre
        $sth = $bdd->prepare("SELECT COUNT(*) AS dejamembre FROM membres WHERE concat(Nom, Prenom) = '$Nom.$Prenom'");
        $sth->execute();
        echo count(dejamembre).'<br>';

Merci au bon samaritain qui m'expliquera comment je dois procéder.
Daniel
Windows / Firefox 107.0

2 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié le 13 déc. 2022 à 16:37

Bonjour,

Il faut faire un fetch ;..  voir même, ici, tu peux faire un fetchColumn  sur l'exécution de ta requête.

Il ne faut pas non plus oublier de mettre un $  devant le nom de tes variables php

bref:

 // Vérification que Nom Prenom n'est pas déjà membre
$sth = $bdd->prepare("SELECT COUNT(*) AS dejamembre FROM membres WHERE concat(Nom, Prenom) =  :nomPrenom ");
$sth->execute([':nomPrenom'=> $Nom . $Prenom ]);
$dejamembre =  $sth->fetchColumn();
echo $dejamembre.'<br>';

2
danielos77 Messages postés 108 Date d'inscription samedi 18 février 2006 Statut Membre Dernière intervention 16 janvier 2024 2
13 déc. 2022 à 17:12

Bonjour Jordane45,

Je peux faire un fetchColumn alors que Nom et Prenom sont dans des colonnes différentes ?

0
jee pee Messages postés 39650 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 26 avril 2024 9 238 > danielos77 Messages postés 108 Date d'inscription samedi 18 février 2006 Statut Membre Dernière intervention 16 janvier 2024
13 déc. 2022 à 17:53

ce qui compte c'est le résultat du select où il n'y a qu'un seul champ.

1
danielos77 Messages postés 108 Date d'inscription samedi 18 février 2006 Statut Membre Dernière intervention 16 janvier 2024 2 > jee pee Messages postés 39650 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 26 avril 2024
13 déc. 2022 à 18:04

OK. Merci bien.
Bonnes fêtes de fin d'année à vous.

0
jee pee Messages postés 39650 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 26 avril 2024 9 238
13 déc. 2022 à 16:19

Bonjour,

Ton sql effectue un count et te renvoie une valeur, 0 ou 1. Tu n'as pas besoin d'utiliser le count() de php tu dois juste afficher le resultat du select.


1