IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] Retour à la ligne


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 13
    Points : 8
    Points
    8
    Par défaut [Tableaux] Retour à la ligne
    Bonjour

    J'ai un script qui récupère des photos depuis une base de donnée pour les afficher ensuite sur une page web

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    function showPhotos($cat,$page,$end)
    {
      global $database,$ds_cats2,$ds_cats5,$SETTINGS;
     
      $start = $page * $end - ($end);
     
      $data = '';
     
      $query = mysql_query("SELECT * FROM ".$database['prefix']."Photos".
                                     WHERE cat = \''.$cat.'\''
                                     )."
                                     ORDER BY name
                                     LIMIT $start,$end
                                     ")
     
      while ($PHOTO = mysql_fetch_object($query))
      {
        $data .= '<td align="center"><img src="'.cleanData($PHOTO->pic1).'" height="100" width="90" alt="'.cleanData($PHOTO->name).'" title="'.cleanData($PHOTO->name).'"> <br /><span class="album"><a href="' 'index.php?cmd=PHOTO&amp;cat='.$PHOTO->cat.'&amp;PHOTO='.$PHOTO->id).'" title="'.cleanData($PHOTO->name).'">'.cleanData($PHOTO->name).'</a></span>'.($PHOTO->submitted_by ? '<br>&nbsp;&nbsp;&nbsp;&nbsp;'.$ds_cats2.' '.cleanData($PHOTO->submitted_by) : '').'</td>';
      }
     
      $data .= '<br>';
     
      return mysql_num_rows($query)>0 ? $data : '<br>';
    }
    Les photos sont affichées à l'aide du template:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <table cellpadding="4" cellspacing="1" border="0" width="100%">
     
     
    <tr>
     
       <?php echo $this->PHOTOS; ?>
    </tr>
     
    </table>
    Ce script m'affiche toutes les photos sur une seule ligne, ce que je veux c'est afficher 5 photos sur chaque ligne.

    Comment je dois m'y prendre?

    Merci par avance de votre aide.

  2. #2
    Membre averti

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 206
    Points : 319
    Points
    319
    Par défaut
    OMG ! Regarde déjà comment coder en HTML ^^ tu n'as pas mis de cellules td dans tes lignes tr. TR signifie une ligne et TD une cellule, essaye sa :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <table cellpadding="4" cellspacing="1" border="0" width="100%">
     <tr>
      <td> 
       <?php echo $this->PHOTOS; ?>
      </td>
    </tr> 
    </table>
    Bien sur il faut pour chaque photo recréer une ligne TR et une cellule TD

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    euh je ne sais pas si t'as tout lu, mais non je ne crois pas!!

    <td align="center"><img src="'.cleanData($PHOTO->pic1).'" height="100" width="90" alt="'.cleanData($PHOTO->name).'" title="'.cleanData($PHOTO->name).'"> <br /><span class="album"><a href="' 'index.php?cmd=PHOTO&amp;cat='.$PHOTO->cat.'&amp;PHOTO='.$PHOTO->id).'" title="'.cleanData($PHOTO->name).'">'.cleanData($PHOTO->name).'</a></span>'.($PHOTO->submitted_by ? '<br>&nbsp;&nbsp;&nbsp;&nbsp;'.$ds_cats2.' '.cleanData($PHOTO->submitted_by) : '').'</td>

    Merci quand même pour la réponse si constructive

  4. #4
    Membre averti

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 206
    Points : 319
    Points
    319
    Par défaut
    Bah c'est ce que je dis quand même lol :o Dans ta fonction tu as mis tes TD dans un while donc il vont tous êtres à la suite dans le même phrase, donc quand tu va faire ton echo, tu va afficher X cellules à la suite, et toutes dans UN seul TR , donc UNE seule ligne... Sinon change le code de ta fonction pour rajouter les TR à chaque photo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while ($PHOTO = mysql_fetch_object($query))
    {
        $data .= '<tr><td align="center"><img src="'.cleanData($PHOTO->pic1).'" height="100" width="90" alt="'.cleanData($PHOTO->name).'" title="'.cleanData($PHOTO->name).'"> <br /><span class="album"><a href="' 'index.php?cmd=PHOTO&amp;cat='.$PHOTO->cat.'&amp;PHOTO='.$PHOTO->id).'" title="'.cleanData($PHOTO->name).'">'.cleanData($PHOTO->name).'</a></span>'.($PHOTO->submitted_by ? '<br>&nbsp;&nbsp;&nbsp;&nbsp;'.$ds_cats2.' '.cleanData($PHOTO->submitted_by) : '').'</td></tr>';
    }
    Et tu vire les TR dans le template :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <table cellpadding="4" cellspacing="1" border="0" width="100%">
       <?php echo $this->PHOTOS; ?>
    </table>
    Là sa devrait mieux marcher.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Oui mais la j'aurais une seule photo par ligne, or je voudrais avoir 5 photos sur chaque ligne

    j'ai pensé à un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    $a = 0;
     
     
     
        if ($a == 0) {
            echo "<tr>";
        }
        $a++;
    echo "<td>";
     
        Mon code
     
    echo "
      </td>";
     
        if ($a == 5) {
            echo "</tr>";
            $a = 0;
        }
    mais je n'arrive pas à l'intégrer dans le script

  6. #6
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 11
    Points : 13
    Points
    13
    Par défaut
    ououlala le patient est atteint de cellulite aïgue !!!!! c'est un problème CSS et html pas PHP.

    remède : le div

    grandes lignes : definir un cadre de largeur X et s'arranger pour le div contenant l'image + son padding multiplier par le nombre d'images voulu soit inférieur à la largeur du cadre pere

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    echo "<div style=\"width:600px\">";
     while ($PHOTO = mysql_fetch_object($query))
    {
     echo "<div style=\"float:left; width:100px; margin:10px; border:1px solid #000\">";
     echo "<img src=\".......\" />";
     echo "</div>";
    
    }
    Ce code html est baucoup plus léger qu'un tableau, de deux ça t'avite pas mal de test en php pour le retour à la ligne et de plus si le nombre d'image n'est pas un multiple de 5 il faut que tu pense à compléter le nombre de cellule pour finir le tableau pour avoir un code propre valide XHTML.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    C'est bien un problème PHP!!
    la preuve j'ai trouvé la solution!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    $a = 0;
    while ($PHOTO = mysql_fetch_object($query))
      {
     
            if ($a == 0) {
    $data .= '<tr>';
    }
    $a++;
     
        $data .= '<td align="center"><img src="'.cleanData($PHOTO->pic1).'" height="100" width="90" alt="'.cleanData($PHOTO->name).'" title="'.cleanData($PHOTO->name).'"> <br /><span class="album"><a href="' 'index.php?cmd=PHOTO&amp;cat='.$PHOTO->cat.'&amp;PHOTO='.$PHOTO->id).'" title="'.cleanData($PHOTO->name).'">'.cleanData($PHOTO->name).'</a></span>'.($PHOTO->submitted_by ? '<br>&nbsp;&nbsp;&nbsp;&nbsp;'.$ds_cats2.' '.cleanData($PHOTO->submitted_by) : '').'</td>';
     
         if ($a == 5) {
            $data .= '</tr>';
            $a = 0;
        }
     
      }
    par contre ton code ne semble pas fonctionner, et t'as oublié de fermer le premier <div>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 04/07/2007, 14h33
  2. [Tableaux] retour a la ligne automatique
    Par cell dans le forum Langage
    Réponses: 3
    Dernier message: 04/08/2006, 11h48
  3. [Tableaux] sscanf() et retour à la ligne
    Par Mucsy dans le forum Langage
    Réponses: 1
    Dernier message: 17/05/2006, 14h16
  4. Conserver les retours à la ligne
    Par arwen dans le forum ASP
    Réponses: 2
    Dernier message: 04/12/2003, 12h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo