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&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>";
?>