rowCount followers

Ce topic a été résolu
Balatharas

Balatharas Le 30 juin 2016 à 21:48 (Édité le 25 janvier 2019 à 17:51)

Hello, j'ai fait le système de follow de @PrimFX et je voudrais savoir que mettre dans le tableau d'execution pour:
$followers = $bdd->prepare('SELECT id FROM membres WHERE id_follower = ?');
$followers->execute(array(/*ICIII*/));
$followers = $followers->rowCount();
<p><font size="4">Abonnés: <?= $followers; ?></font></p>
Je veux juste afficher le nombre de personnes qui suivent un utilisateur comme pour les parrainés:
<?php
$parrainages = $bdd->prepare('SELECT id FROM membres WHERE id_parrain = ?');
$parrainages->execute(array($getid));
$parrainages = $parrainages->rowCount();
?>
<p><font size="4">Parrainages: <?= $parrainages; ?></font></p>
Merci ! 
Balatharas

Balatharas Le 2 juillet 2016 à 20:11

Up :(
TheOldNoob

TheOldNoob Le 2 juillet 2016 à 22:48

Salut Beignet,

Et si tu met juste rien? 😀
Balatharas

Balatharas Le 2 juillet 2016 à 23:32 (Édité le 2 juillet 2016 à 23:32)

@TheHoldNoob t'inquiète pas j'ai essayé x'D

Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: no parameters were bound in C:\wamp\www\**********\profil.php on line 181
Balatharas

Balatharas Le 2 juillet 2016 à 23:33

Vu que je n'avais pas de réponses en trois jours, j'ai tenté ma chance ici
Profil introuvable

Profil introuvable Le 3 juillet 2016 à 02:11

Re:

Du coup tu as réussi à résoudre ton problème ou il manque quelque chose ?
AlexCode

AlexCode Le 3 juillet 2016 à 20:16

Salut Beignet,

Moi quand j'essaye de faire un count je fais ce genre de requête, je l'utilise actuellement donc elle est fonctionnelle !

Donne moi ton retour !
$req = $bdd->query("SELECT count(*) as nb FROM X WHERE X");
$nb = $req->fetch();
$nb_user = $nb['nb'];
Alex
Balatharas

Balatharas Le 3 juillet 2016 à 20:28 (Édité le 3 juillet 2016 à 20:35)

Salut @AlexCode ,
$reqfollowers = $bdd->query("SELECT count(id_following) as follow FROM membres WHERE id_following = ?");
$followers = count($reqfollowers);
$nbfollowers = $followers['nb'];
 Je suis quasi certain d'avoir mal compris quelque chose. Pourrais tu me décrire la première et dernière ligne ?
Lorsque j'ai mis ceci, je n'ai pas eu d'erreur mais rien n'est affiché....
Je pense ne pas avoir apporté assez de précisions. Voici mon fichier follow.php:
<?php
session_start();
require ('files/config.php');
$getfollowedid = intval($_GET['followedid']);
if($getfollowedid != $_SESSION['id'])
{
    $dejafollowed = $bdd->prepare('SELECT * FROM follow WHERE  id_follower = ? AND id_following = ? ' );
    $dejafollowed->execute(array($_SESSION['id'], $getfollowedid));
    $dejafollowed = $dejafollowed->rowCount();
    if($dejafollowed == 0)
    {
       $addfollow = $bdd->prepare('INSERT INTO follow(id_follower, id_following) VALUES(?, ?)');
       $addfollow->execute(array($_SESSION['id'],$getfollowedid));
    }
    elseif ($dejafollowed == 1)
    { 
         $deletefollow = $bdd->prepare('DELETE FROM follow WHERE id_follower = ? AND id_following = ?');
         $deletefollow->execute(array($_SESSION['id'],$getfollowedid));
    }
}
header('Location:' .$_SERVER['HTTP_REFERER']);
?>
Pour s'abonner dans le profil:
<?php
if(isset($_SESSION['id']) AND $_SESSION['id'] != $getid)
{
   $isfollowingornot = $bdd->prepare('SELECT * FROM follow WHERE id_follower = ? AND id_following = ?');
   $isfollowingornot->execute(array($_SESSION['id'], $getid));
   $isfollowingornot = $isfollowingornot->rowCount();
   if($isfollowingornot == 1)
   {
?>
Vous suivez cette personne !<br /><a href="follow.php?followedid=<?= $getid; ?>"><font size="4"><img src="files/img/unfollow.png" /> Ne plus suivre</font></a>
<?php } else {  ?>
<a href="follow.php?followedid=<?= $getid; ?>">
<img src="files/img/follow.png" /> <font size="4">Suivre</font></a>
<?php
   }
}
?>
AlexCode

AlexCode Le 3 juillet 2016 à 20:41

$req = $bdd->query("SELECT count(*) as nb FROM X WHERE X");
$nb = $req->fetch();
$nb_user = $nb['nb'];
Alors tout simplement, tu fais ta requête (ligne 1) sur ta base de donnée. le count(*), compte le nombre de lignes pour laquelle tu donnes tes paramètres suivant... Le "as nb" te traduit cela en nombre donc il est obligatoire.

La dernière te traduit juste le nombre en une variable directement intégrable dans ton code.

Essaye plutôt :
$reqfollowers = $bdd->query("SELECT count(id_following) as nb FROM membres WHERE id_following = ?");
$followers = $reqfollowers->fetch();
$nbfollowers = $followers['nb'];
Alex
Balatharas

Balatharas Le 3 juillet 2016 à 20:48 (Édité le 3 juillet 2016 à 20:49)

Merci pour ton explication @AlexCode mais quand je met le code ci-dessus, j'ai cette erreur:

 Fatal error: Call to a member function fetch() on a non-object in C:\wamp\www\**********\profil.php on line 181
As-tu une solution ?
EDIT: Voici un screen de ma base:
AlexCode

AlexCode Le 3 juillet 2016 à 20:52

Tu as rempli ta variable dans la requête ? Celle là : 
id_following = ?
Balatharas

Balatharas Le 3 juillet 2016 à 20:55

Je n'ai rien changé a ton code. Pourtant id_following = ? me paraît correct, non ?
AlexCode

AlexCode Le 3 juillet 2016 à 21:02

je crois que je me suis emmêlé les pinceaux dans ta bdd !

Tu vas mieux le faire que moi, dans le count() tu mets ce que tu souhaites compter donc si j'ai bien compris tes followers : id_follower et dans le WHERE le id du membre.
$reqfollowers = $bdd->query("SELECT count(id_follower) as nb FROM membres WHERE id = ?");
$followers = $reqfollowers->fetch();
$nbfollowers = $followers['nb'];
Dis moi si ça va mieux !
Balatharas

Balatharas Le 3 juillet 2016 à 21:38

J'obtiens la même erreur... @AlexCode
AlexCode

AlexCode Le 3 juillet 2016 à 21:52 (Édité le 3 juillet 2016 à 21:52)

En faite je suis pas sûr que tu remplisses ta variable id = ?

tu mets bien $_SESSION['id'] ?

Comme ceci :
$reqfollowers = $bdd->query("SELECT count(id_follower) as nb FROM membres WHERE id = '".$_SESSION['id']."'");
$followers = $reqfollowers->fetch();
$nbfollowers = $followers['nb'];
Alex
AlexCode

AlexCode Le 4 juillet 2016 à 13:47

Alors @beignet ça donne quoi ?
Balatharas

Balatharas Le 5 juillet 2016 à 15:00

Salut @AlexCode désolé de ne pas avoir répondu plus tôt ! Quand je met ceci, j'obtiens toujours:

Fatal error: Call to a member function fetch() on a non-object in C:\wamp\www\**********\profil.php on line 181
Cependant je ne comprends pas pourquoi tu souhaite mettre la table membres alors qu'elle ne contient aucune infos concernant le follow, et id = '".$_SESSION['id']."'  .
Balatharas

Balatharas Le 6 juillet 2016 à 19:46

J'ai réussi  ! Je ne pense pas que ça servira mais on ne sait jamais, voilà le code:

//GET id pour afficher abonnés:
$getfollowid = intval($_GET['id']);
$reqfollow = $bdd->prepare('SELECT * FROM membres WHERE id = ?');
$reqfollow->execute(array($getfollowid));
$userinfo = $reqfollow->fetch();
//Affichage
<?php
$reqfollowers = $bdd->prepare('SELECT id_follower FROM follow WHERE id_following = ?');
$reqfollowers->execute(array($getfollowid));
$nbfollowers = $reqfollowers->rowCount();
?>                                                           
<p><font size="4">Abonnés: <?= $nbfollowers; ?></font></p>

Merci pour votre aide 
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte