Afficher données de 2 tables dans un tableau

Messages postés
90
Date d'inscription
jeudi 16 mai 2002
Statut
Membre
Dernière intervention
10 septembre 2006
- - Dernière réponse : cs_AlexN
Messages postés
719
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
- 28 août 2006 à 13:55
Bonjour,

Je cherche comment je peux faire pour afficher les données provenant de 2 tables différentes dans un tableau.
J'ai une table Roster_members et une tabel DKP.
Le champs en commun est name pour la table Roster_members et personnage pour la table DKP.
On affiche donc dans la 1ère colonne les données venant de Roster_members et dans la deuxième les données de la table DKP
Mais si il n'y a pas d'enregistrement correspondant dans la table DKP, on affiche malgré tout dans la 1ère colonnes les données de la table Roster_members et dans la deuxième colonne on affiche 0 si aucun enregistrement trouvé par rapport à chaque donnée de la première table.

Voici un bout du code:
<?
// on se connecte à notre base
$base = mysql_connect ('HOST', 'SERVER', 'PASSWORD');
mysql_select_db ('TABLE', $base);


// on prépare une requête permettant de calculer le nombre total d'éléments qu'il faudra afficher sur nos différentes pages
$sql  = 'SELECT count(*) FROM Roster_members';


// on exécute cette requête
$resultat = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());


// on récupère le nombre d'éléments à afficher
$nb_total = mysql_fetch_array($resultat);


// on teste si ce nombre de vaut pas 0if (($nb_total $nb_total[0]) 0) {
    echo 'Aucune réponse trouvée';
}
else {
    //echo 'Nom</td>';
 
 // sinon, on regarde si la variable $debut (le x de notre LIMIT) n'a pas déjà été déclarée, et dans ce cas, on l'initialise à 0
    if (!isset($_GET['debut'])) $_GET['debut'] = 0;

     // début du tableau
  echo '<center>';
  echo '<table bgcolor=\"#000000\">'.\"\n\";
  // première ligne on affiche les titres nom et classe dans 2 colonnes
  echo '----
';
  echo 'Personnage, ';
  echo 'DKP, ';
  //echo 'Niveau, ';
  echo ''.\"\n\";

   
   
    $nb_affichage_par_page = 25;
   
    // Préparation de la requête avec le LIMIT
    $sql = 'SELECT name, class, level FROM Roster_members ORDER BY name ASC LIMIT '.$_GET['debut'].','.$nb_affichage_par_page;
    // on exécute la requête
    $req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());
 
    // on va scanner tous les tuples un par un
    while ($data = mysql_fetch_array($req)) {
        // on affiches les résultats dans la <table>
  // on stocke dans $couleur la valeur retournée par l'appel de la fonction qui prend en paramètres $couleur1 et $couleur2
  $couleur = alt_couleur($couleur1, $couleur2);
  echo '----
';
  
  echo ''.stripslashes(htmlentities(trim($data['name']))).', ';
  echo ''.stripslashes(htmlentities(trim($data['dkp']))).', ';
 
  //echo ''.stripslashes(htmlentities(trim($data['level']))).', ';
  echo ''.\"\n\";
  //}
    }
 
 echo '
';
 echo '</center>'."\n";
 // fin du tableau
?>
Afficher la suite 

2 réponses

Messages postés
719
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
6
0
Merci
cette requête :

select r.


name, class, level, DKP.tonchamp
from Roster_members r
left outer join DKP d on r.name= d.personnage limit 0,30

prend les lignes de la table Roster_members et fait la jointure externe gauche avec la table DKP sur le champ name/personnage (et rajoute les lignes de la table Roster_members pour lesquels il n'a pas d'information correspondante dans la table DKP, elle met des NULL à la place)
Commenter la réponse de cs_AlexN
Messages postés
719
Date d'inscription
lundi 5 décembre 2005
Statut
Membre
Dernière intervention
8 janvier 2014
6
0
Merci
pardon petite erreur :

select r.name, class, level, d.tonchamp
from Roster_members r
left outer join DKP d on r.name= d.personnage limit 0,30

à cause du surnommage de la table DKP.
Commenter la réponse de cs_AlexN