Tableau multi-colonne extrait d'une base sql
Hors ligneElidris Le 20/08/2007 à 02:01 Profil de Elidris Configuration de Elidris

Encéphalo plat !
Bonjour à tous,

J'ai un problème pour afficher le resultat d'une requête SQL dans un tableau à plusieurs colonnes...



<?php 
echo 
'<table>'; 
// On récupère le résultat de la requête SQL de sélection des données sur les navigateurs
$resultat = mysql_query("SELECT auteur FROM proverbe"); 
// Nombre maximum de lignes souhaitées
$max_colonnes = 3; 
// On compte le nombre de résultat
$nb_resultat = mysql_num_rows($resultat); 
// On veut un maximum de 2 colonnes donc on calcul le nombre de colonnes en arrondissant à l'entier supérieur
$nb_lignes = ceil($nb_resultat / $max_colonnes); 
// On cré un tableau par ligne
for($i = 1; $i <= $nb_lignes; $i++)
{
     ${'ligne'.$i} = array();
}
 
// On initialise la ligne en cours à 1, première ligne
$ligne_en_cours = 1; 
// On initialise le nombre de colonne à 1 qui va nous servir de compteur de colonne
$nb_colonnes = 1; 
// On parcourt le tableau $resultat de la requête et on stock chacune des lignes dans le nouveau tableau $tab
while($tab = mysql_fetch_array($resultat))
{
  
  
// On insère les résultats dans les tableaux créés ci-dessus
  array_push(${'ligne'.$ligne_en_cours}, $tab['auteur']);  
  
// On vérifie si l'on est pas au maximum de ligne souhaité afin de revenir à la première ligne
  if($ligne_en_cours == $nb_lignes)
  {
     $ligne_en_cours = 1;     
     
// On passe à la colonne suivante
     $nb_colonnes++;     
  
// On passe à la ligne suivante s'il reste suffisemment de colonnes pour arriver au $max_colonnes
  // autrement, on laisse l'insertion dans la ligne 1
  } elseif($ligne_en_cours != $nb_lignes && ($nb_resultat - $nb_colonnes) >= $max_colonnes) {
       $ligne_en_cours++;
  }
}
 
// On commence l'affichage ligne par ligne
for($i = 1; $i <= $nb_lignes; $i++)
{
  if($i != 1)
  {
       echo'</tr>';
  }
  echo'<tr>';  
  
// On parcourt le tableau de la ligne pour son affichage
  foreach(${'ligne'.$i} as $ligne)
  {
       echo'<td>'.$ligne.'</td>';
  }
}
echo
'</table>'; ?>


Ce code m'affiche bien mon résultat sur 3 colonnes, la problème c'est que il y a des doublons, j'aimerais que si il trouve 2 resultats identiques ou 3 ou 4, il ne me l'affiche q'une seule fois.

Pourriez-vous m'aider sur la façon de procéder ?



Ok j'ai trouvé en plus simple, je poste la réponse vu que je ne peux pas supprimer mon post :


<?php
$query
="SELECT DISTINCT auteur FROM proverbe";
$result=mysql_query($query);
// On choisit de faire trois colonnes
$NbCol=3;
// Il y a un total de NbTot enregistrements
$NbTot=mysql_num_rows($result);
// Il va falloir un certain nombre de lignes
$NbLigne=1+(int)($NbTot/$NbCol);
// Premier enregistrement
$Lig=0; // Pour savoir sur quelle ligne on est
// tant qu'il y a des fiches
echo '<table width="551" border="0" align="center" cellpadding="0" cellspacing="0"><tr><td><ul>';
while ($val = mysql_fetch_row($result)) {
   echo '<li><a class="lien" href="index.php?page=modules/page_auteur&amp;aut='.$val[0].'" title="'.$val[0].'">'.$val[0].'</a></li><br />';
   $Lig=$Lig+1;
   if($Lig==$NbLigne){echo "</ul></td>
   <td valign=top><ul>"
;$Lig=0;}
   // enregistrement suivant
}
echo "</ul></td></tr></table>";
?>
--
"Les experts auront beau se mettrent tous d'accord, il peuvent se tromper."
Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels