Affichage des résultats en alterné...

Pierre_invité
Invité n'ayant pas de compte PHPfrance

15 févr. 2006, 14:24

Bonjour à vous tous.

Suite à une contrainte graphique, je dois afficher des résultats de recherche en alterné...

Je m'explique :

Je fais une recherche dans une table (pas de soucis !), mais je dois les afficher de façon alterné,
Dans un tableau (HTML) dans deux cellules par ligne.
La première ligne doit comporter :
Première cellule : la photo de la personne
Deuxième cellule : Les coordonnées de la personne

La deuxième ligne doit comporter :
Première cellule : Les coordonnées de la personne
Deuxième cellule : la photo de la personne

La troisième ligne doit comporter :
Première cellule : la photo de la personne
Deuxième cellule : Les coordonnées de la personne

etc...

Est ce possible ?
Comment doit procéder
Merci de votre aide

Pierre.

ViPHP
fab
ViPHP | 2657 Messages

15 févr. 2006, 14:28

http://expreg.com/rex_article.php?art=alternace_coul

c'est un article sur les couleurs mais c'est le meme principe sauf qu'ici a la place de changer les couleurs tu devras changer la disposition de tes TD
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Pierre_invité
Invité n'ayant pas de compte PHPfrance

15 févr. 2006, 16:01

Fab
Merci de ta réponse je vais y jeter un oeil...

Pierre.

Pierre_invité
Invité n'ayant pas de compte PHPfrance

15 févr. 2006, 19:20

Fab,
J'ai retourné le code, que tu m'as proposé de regarder, dans tous les sens...
Je n'y arrive pas...

J'ai essayé (ce qui donnait le meilleurs résultat!) :
$affich = array('image();', 'coordonnes();'); 
$nb = count($affich); 
$i = 0; 

while ($enr01 = mysql_fetch_array($resultat01)) 
{
echo '<tr>';
echo "<td>";
echo $affich[$i % $nb];
echo "</td><td>";
echo $affich[($i+1) % $nb];  // "+1" sinon il affiche la même chose que dans la cellule précédente...
echo "</td>";
echo "</tr>";
}
$i++
Il affiche bien en altenance "image()" et "coordonnees()"
mais comme "image()" et "coordonnees()" font référence à des fonctions et qu'à ce niveau... le code n'est pas interpreté....

et donc ca affiche :

Code : Tout sélectionner

image(); coordonnes(); coordonnes(); image(); image(); coordonnes(); coordonnes(); image();
Je ne sais pas comment m'y prendre...
Si tu avais une idée... merci de mettre sur la voie.

Pierre.

Mammouth du PHP | 19672 Messages

15 févr. 2006, 21:18

Le principe de base, c'est l'utilisation d'un modulo : pour faire une ligne sur deux, on fera un modulo sur 2, ce qui donne schématiquement la chose suivante :
<table summary="">
<?php
/* Code de requêtes... */
/* On crée le point de départ: */
$p = 0;
while ($enr01 = mysql_fetch_array($resultat01))
{
    if($p % 2)
    {
?>
  <tr>
    <td>Image</td>
    <td>Coordonnées</td>
  </tr>
<?php
    }
    else
    {
?>
  <tr>
    <td>Coordonnées</td>
    <td>Image</td>
  </tr>
<?php
    }
    /* On incrémente le repère servant à alterner les lignes */
    $p++;
}
?>
</table>
En clair, si le pointeur $p est pair, on met l'image à gauche, les coordonnées à droite, sinon, on fait l'inverse.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
fab
ViPHP | 2657 Messages

15 févr. 2006, 21:21

on va faire simple
<?php
$row = "paire"; // la premiere ligne sera paire
while(...)
{
?>
<tr>
  <td>Blabla</td>
  <td>Blabla 2</td>
</tr>
<?php 
if($row == "paire")
{
$row = "impaire"; // pour la prochaine fois
  ?>
<tr>
  <td>Photo</td>
  <td>Nom</td>
</tr>
<?php
}
else
{
  $row = "paire"; // pour la prochaine fois
?>
<tr>
  <td>Nom</td>
  <td>Photo</td>
</tr>
<?php
}
?>
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

ViPHP
fab
ViPHP | 2657 Messages

15 févr. 2006, 21:22

non je refuse Cyrano tu postes pas a ma place rho ! c'est quoi ces manieres :p
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }