IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Espace membre, parrainage et système de points


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Points : 460
    Points
    460
    Par défaut Espace membre, parrainage et système de points
    Bonjour à tous,
    Toujours dans le cadre de mon espace membre et parrainage,
    A amène B => 1ère génération de A
    B amène C => 2e génération de A
    C amène D => 3e génération de A
    D amène E => 4e génération de A
    ...
    où un membre est lié à son parrain par id_parent
    voici ma table membre
    id => id du membre
    pseuso => pseudo du membre
    id_parent => id du membre qui est son parrain (qui l'a amené)

    A cet effet, Je souhaite 2 fonctions :
    1°) une fonction getChild($id_membre) qui retourne le nombre total d'enfants du membre $id_membre;
    2°) une fonction getArrayChild($id_membre) qui retourne un tableau bidimensionnel $arrayChild[i][j], les enfants d'un membre où :
    - i est le niveau de génération du membre de 5 à 1,
    - j est id du membre;

    La première fonction pourrait être annulé juste en count(getArrayChild($id_membre));

    Merci d'avance !

    Mes très sincères salutations

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    la meilleur solution a mon avis est de modif ta table membre comme cela:

    table membre
    id
    pseuso
    id_parent
    rang

    à l'insert d'un membre tu met son rang à un et tu rajoute +1 à tout les parents ainsi il est facile de récupérer tout les membre de rang n dans ta base

  3. #3
    FoxLeRenard
    Invité(e)
    Par défaut
    C' est pas génial pour ceux qui n'ont pas vu ton premier message sur le sujet pfff
    moi ça me décourage
    Tu peux résumer un peut tout ça ? merci

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Points : 460
    Points
    460
    Par défaut
    Citation Envoyé par okoweb Voir le message
    1°) une fonction getChild($id_membre) qui retourne le nombre total d'enfants du membre $id_membre;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    //return le nombre d'enfant d'un membre <=> count(getChild(id_membre));
    function countChild($id_membre)
    {
      $total = 0;
    	$result = mysql_query('SELECT id FROM users WHERE idparent ='.$id_membre);
    	$total += mysql_num_rows($result);
    	while($row = mysql_fetch_assoc($result)){
    		 $total += countChild($row['id']);
    	}
    	return $total;
    }
    Citation Envoyé par okoweb Voir le message
    2°) une fonction getArrayChild($id_membre) qui retourne un tableau bidimensionnel $arrayChild[i][j], les enfants d'un membre où :
    - i est le niveau de génération du membre de 5 à 1,
    - j est id du membre;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    //return un array des enfants d'un membre
    function getChild($id_membre, $level = 1)
    {
    	$result = mysql_query('SELECT * FROM users WHERE idparent ='.$id_membre);
    	$arrayChild = array();
    	while($row = mysql_fetch_assoc($result)){
    		 $arrayChild[] = array('level'=>$level, 'ID'=>$row['id'], 'pseudo'=>$row['pseudo']);
    		 if($level < 5){
    		 $result2 = mysql_query('SELECT * FROM users WHERE idparent ='.$row['id']);	 
    		 if(mysql_num_rows($result2)!=0) $arrayChild = array_merge($arrayChild, getChild($row['id'], $level + 1));; 
    		 }
    	}
    	return $arrayChild;
    }
    Citation Envoyé par okoweb Voir le message
    La première fonction pourrait être annulé juste en count(getArrayChild($id_membre));
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    count(getChild(id_membre));
    Pour le moment tout roule très bien, mais j'ai un autre soucis je bosse avec PDO dans mon appli, comment sortir des mysql_num_rows pour count(champ) pour compter.

    Merci pour tout ce dont qui mon soutenu et je pense pouvoir aider d'autres !!!

    Meilleures salutations .

  5. #5
    FoxLeRenard
    Invité(e)
    Par défaut
    Merci d'avoir reposté tout,

    Je peux me tromper, mais moi j'aurais pas mis deuxlignes mais directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?PHP
     
    $result = mysql_query('SELECT id FROM users 
        WHERE idparent ='.$id_membre);
       while($row = mysql_fetch_array($result))
            {
                  $total += countChild($row['id']);
            }
    	return $total;
     
    ?>
    qu'en penses tu

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Points : 460
    Points
    460
    Par défaut
    Citation Envoyé par FoxLeRenard Voir le message
    Merci d'avoir reposté tout,

    Je peux me tromper, mais moi j'aurais pas mis deuxlignes mais directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?PHP
     
    $result = mysql_query('SELECT id FROM users 
        WHERE idparent ='.$id_membre);
       while($row = mysql_fetch_array($result))
            {
                  $total += countChild($row['id']);
            }
    	return $total;
     
    ?>
    qu'en penses tu
    C'est plus court mais ça retourne des erreurs
    $total non définie.

    Meilleures salutations.

  7. #7
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par okoweb Voir le message
    C'est plus court mais ça retourne des erreurs
    $total non définie.

    Meilleures salutations.
    Oui j'ai pas recopié le premier terme que tu avais mis bien sur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?PHP
    $total =0;
    // =====ETC..........

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Points : 460
    Points
    460
    Par défaut
    Citation Envoyé par FoxLeRenard Voir le message
    Oui j'ai pas recopié le premier terme que tu avais mis bien sur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?PHP
    $total =0;
    // =====ETC..........
    Aviez vous testé ? ça marche toujours pas, je pense il manque un COUNT(*)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?PHP
     $total = 0;
    $result = mysql_query('SELECT COUNT(id) FROM users 
        WHERE idparent ='.$id_membre);
       while($row = mysql_fetch_array($result))
            {
                  $total += countChild($row['id']);
            }
    	return $total;
     
    ?>
    J'ai pas testé, mais ça devrait marcher.
    J'ai pas lu la doc, mais je pense pas Mysql sans count() ou mysql_num_rows peut retourner le nombre d'éléments d'une requete.
    Avec PDO ça devrait être possible.

    Meilleures salutations.

Discussions similaires

  1. Réponses: 197
    Dernier message: 27/04/2021, 00h11
  2. [MySQL] Système de point pour les membres de mon site
    Par black-hat dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 17/05/2012, 16h48
  3. Espace membre, parrainage et système de point
    Par okoweb dans le forum Langage
    Réponses: 7
    Dernier message: 11/05/2009, 16h18
  4. Comment procéder pour un système de points à attribuer aux membres ?
    Par cuisto44000 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 21/08/2008, 14h52
  5. [Système] Gestion d'espace membre
    Par pas30 dans le forum Langage
    Réponses: 8
    Dernier message: 22/07/2007, 15h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo