Tableau 2 enregistrement sur une ligne puis nouvelle ligne [Résolu]

Signaler
Messages postés
13
Date d'inscription
mardi 6 février 2007
Statut
Membre
Dernière intervention
14 novembre 2009
-
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
-
Bonjour, je fais appel à votre bonté.
Je bloque sur un de mes script que voici:
   $query 'SELECT * FROM t_etablissement WHERE cat_id 1';
          $result = mysql_query($query)
          or die ('Impossible d\'exécuter la requête');
          $row = mysql_fetch_array($result);
          $nb_records = mysql_num_rows($result);
          $nb_ligne = ceil($nb_records/2);
          $k = 0;
            echo '';
for ($i = 1; $i <= $nb_ligne; $i++)
{
echo '----
';
for ($j = 1; $j <= 2; $j++)
{
if($k >= $nb_records)
{echo', ';}
else
{
echo',

<li style="padding-left:5px;">'.$row['nom_etablissement'].'
</li>
<li style="padding-left:5px;">'.$row['adresse_etablissement'].'</li>

';
$query_type = 'SELECT * FROM t_etablissement
LEFT JOIN t_souscat ON t_etablissement.souscat_id = t_souscat.id_souscat
WHERE t_etablissement.cat_id = 1';
$result_type = mysql_query($query_type)
or die ('Impossible d\'exécuter la requête');
$row_type = mysql_fetch_array($result_type);
echo'<li style="padding-left:5px;">Type: '.$row_type['nom_souscat'].'</li>
, ';
$k++;
}
}
echo '';
}
            echo '
';

J'aimerai avoir un tableau de ce genre là:
img_enr1, data_enr1, img_enr2, data_enr2,

...




Avec mon script, J'arrive plutôt à un tableau comme:
img_enr1, data_enr1, img_enr1, data_enr1,

...



Il faut sans doute bouclé sur chaque enregistrement mais je ne vois pas du tout ou mettre cette boucle...
Merci d'avance pour votre aide.

1 réponse

Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
15
Salut,

Effectivement, il faut boucler sur chaque ligne du résultat. Il faut considérer que chaque ligne va aller dans une cellule de ton tableau. Il faut donc commencer la boucle juste avant le <td> et la finir jsute après le </td>
Mais comme tu veux 2 éléments par ligne, il faut que tu rajoutes </tr><tr> une fois sur deux. Pour ça, il faut une variable que tu initialises à 0, puis que tu incrémentes au début de ta boucle : il te suffit de vérifier si la valeur est paire, auquel cas, tu passe à une nouvelle ligne en fermant la ligne courante et en ouvrant une autre :
Un truc dans ce genre :

echo '';
$i = 0;while (FALSE !($row mysql_fetch_array($result))) {
// Affichage des données de cet enregistrement
if (0 == $i % 2) {
echo '----
';
}
}
echo '
';


Voilà en gros sur le principe, je te laisse adapter plus précisément à ton cas.

--
Neige

N'hésitez pas à lire la doc