PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 10-04-2011 22:39:37

ebouilleur
Membre
Lieu : Nantes
Inscription : 19-05-2009
Messages : 165
Site Web

Extraction de requete mysql mise dans des array

Bonjour,

Je sais que mon titre est pas terrible, mais dur de résumer ce que je fais.

Pour vous mettre dans le bain, il s'agit d'afficher un classement des gangs (composés de membres) et on affichera le nom du gang, le chef, et le score (le score du gang est l'addition des score de tous les membres du gang).

J'ai 3 tables pour ca:
- 1 table "perso" qui contient l'id_pseudo et id_gang
- 1 table "gang" qui contient id_gang, id_pseudo (le chef), nom
- 1 table "score" qui content score et id_pseudo

Mon problème est que je n'arrive pas a avoir le score du gang dans mon classement... en fait je crois que je ne sais pas trop comment m'y prendre.
Voici mon code


  // on charge les infos générales
  $array = array("id_gang","id_pseudo","nom");
  $SQL = "select ";
  $first=true;
  foreach($array as $ind => $val) {
     if(!$first) $SQL.=",";
     $first=false;
     $SQL.= $val;
  }
  $SQL.=" FROM gang ORDER BY nom desc limit $limite,$nombre";
  $req = mysql_query($SQL) or die('Erreur SQL 1!<br>'.mysql_error());
  $tabAnnonces = array();
  $first=true;
  $whereSQL="";

  while ($var_news = mysql_fetch_array($req)) {
      // on récupere l'id du gang pour s'en servir de référence
      $id_gang = $var_news['id_gang'];
      array_push($tabAnnonces, $id_gang);
   
      foreach ($array as $ind => $val) {
          $tabAnnonce[$id_gang][$val] = $var_news[$val]; 
      }  
     
      if(!$first) {
        $whereSQL.= " or ";
      }
      $whereSQL.= "id_gang='".$id_gang."'";
      $first=false;      
         
  }    

  $first2=true;
  $whereSQL2="";

  // Regarde les joueurs qui sont dans ce gang
  $SQL3="select id_pseudo, id_gang from perso WHERE ".$whereSQL." ";
  echo $SQL3;
  $sel3 = mysql_query($SQL3) or die('Erreur SQL 3 liste membre clan!<br>'.mysql_error());
  $liste_membre_gang = array();
  while ($var3 = mysql_fetch_array($sel3)) {
      // on récupere l'id du gang pour s'en servir de référence
      $id_gang = $var3['id_gang'];
      $id_pseudo = $var3['id_pseudo'];
      array_push($liste_membre_gang, $id_gang);
   
      foreach ($array as $ind => $val) {
          $liste_membre_gang[$id_gang]['id_pseudo'] = $var3['id_pseudo'];
      }                    
                               /* ne sert pas
      if(!$first2) {
        $whereSQL2.= " or ";
      }
      $whereSQL2.= "id_pseudo='".$id_pseudo."'";
      $first2=false;    */
 
         
  }  
 

C'est cette dernière partie qui doit buguer... je cherchais a mettre tous les id_pseudo d'un meme gang dans $liste_membre_gang

Ensuite j'ai mon affichage :


<table cellpadding="0" cellspacing="0">
  <?php
  foreach($tabAnnonces as $ind => $id_gang) {  
  //recap variables
  $id_pseudo    = $tabAnnonce[$id_gang]['id_pseudo'];
  $nom      = $tabAnnonce[$id_gang]['nom'];
  $id_gang    = $tabAnnonce[$id_gang]['id_gang'];
  $score_gang   = $tabAnnonce[$id_gang]['score_gang']; 
  ?> 
  <tr class="ligne_messagerie1" onmouseover="this.className='ligne_messagerie2';" onMouseOut="this.className='ligne_messagerie1';" align="center">
    <td width="210" style="cursor:hand" Onclick="document.location.href='gang_detail.php?id_gang=<?php echo $id_gang;?>'">
    <?php echo aff_texte_bdd($nom); ?> 
    </td>  
    <td width="210" >
    <?php echo aff_texte_bdd(id2pseudo($id_pseudo)) ; ?>
    </td>  
    <td width="150">
    <?php
  foreach($liste_membre_gang as $ind => $id_gang) {  
  //recap variables
  $id_pseudo_du_gang    = $liste_membre_gang[$id_gang]['id_pseudo'];
  echo $id_pseudo_du_gang.", ";
  }    
   
    echo $score_gang ; ?>
    </td>
    <td width="150">
    <input type="submit" value="Rejoindre" alt="Rejoindre" class="boutonmessagerie">   
    </td>    
  </tr>
  <?php } ?>   
 

Mais la actuellement mon echo $id_pseudo_du_gang. affiche un truc pas cool (et donc pas correcte), soit :
10767,
Warning: Illegal offset type in /home/ebouilleur/pet-racing/beta/gang_liste.php on line 268
, 10045,
Warning: Illegal offset type in /home/ebouilleur/pet-racing/beta/gang_liste.php on line 268
, 10767, 10767, 28457,
Warning: Illegal offset type in /home/ebouilleur/pet-racing/beta/gang_liste.php on line 268
, 28550,
Warning: Illegal offset type in /home/ebouilleur/pet-racing/beta/gang_liste.php on line 268
, 28550,

ET la ligne 268 c'est :     $id_pseudo_du_gang = $liste_membre_gang[$id_gang]['id_pseudo'];

Merci pour votre aide

Hors ligne

#2 11-04-2011 06:02:54

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Extraction de requete mysql mise dans des array

foreach($tableau as $clé => $valeur) wink

Pour obtenir les informations du gang ainsi que son score il faut faire une jointure.

Hors ligne

Pied de page des forums