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] Problème saut de ligne


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 29
    Points : 17
    Points
    17
    Par défaut [Tableaux] Problème saut de ligne
    Bonsoir à tous,

    J'ai un problème sur mon site : www.portfolio-alex.be/buddy , les images (ou bloc car il y a le pseudo, etc..) d'ajoutent à chaque fois à l'horizontale, ce qui fait que le design se défore complètement

    Comment faire pour qu'il y aie un saut de ligne automatique à la 6ème image ? 5 images sur chaque lignes quoi...

    On m'a dit que c'était parce que j'ai mis les 2 balises connection et déconnection dans le même tableau (colonnes différentes) que celui du bloc...

    Voilà mon code .

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    <table width="176" border="0">
               <tr>
                 <td width="17"><?php 
    // on se connecte à MySQL
     $db = mysql_connect('localhost', 'xxx', 'xxx'); 
     
     // on sélectionne la base
      mysql_select_db('xxx',$db); 
     
      // on crée la requête SQL
       $sql = 'SELECT * FROM buddy ORDER BY id DESC';
     
       // on envoie la requête
        $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
     
    // on fait une boucle qui va faire un tour pour chaque enregistrement 
    	while($data = mysql_fetch_assoc($req)) { 
     
    	// on affiche les informations de l'enregistrement en cours 
    	echo ?></td>
                 <td width="128"><table width="126" border="0">
                   <tr>
                     <td><div align="center" class="Style3"><? echo $data['nom']; ?></div></td>
                   </tr>
                   <tr>
                     <td><div align="center"><a href="buddy.php?id=<? echo $data['id']; ?>"><img src="<? echo $data['buddy']; ?>" width="120" height="120" border="0" /></a></div></td>
                   </tr>
                   <tr>
                     <td width="120" height="21"><div align="center" class="Style1">Par<span class="Style4"> <? echo $data['pseudo']; ?> </span></div>
                         <div class="Style4"></div></td>
                   </tr>
                 </table>             </td>
                 <td width="17"><? } // on ferme la connexion à mysql mysql_close(); ?></td>
               </tr>
             </table>
    Merci d'avance à celui qui m'aiderait

    Bonne soirée.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 63
    Points : 44
    Points
    44
    Par défaut
    J'ai pas envie de lire tous ton code alors je vais te donner la logique.
    Tu créé un compteur comme $cmpt=1 au début et tu fais $cmpt++; a la fin de ta boucle.

    Puis après faut que tu regardes avec un modulo (%) si ton nombre est divislbe par 5, si oui tu rajoutes un </tr><tr>, tu comprends ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par Vinzius
    J'ai pas envie de lire tous ton code alors je vais te donner la logique.
    Tu créé un compteur comme $cmpt=1 au début et tu fais $cmpt++; a la fin de ta boucle.

    Puis après faut que tu regardes avec un modulo (%) si ton nombre est divislbe par 5, si oui tu rajoutes un </tr><tr>, tu comprends ?
    Je comprends pas grand chose car je suis nul en php, mais effectivement on m'avait parlé d'une variable $compteur, mais le problème est que, si tu regardais mon code, tu verais que l'ouverture et la fermeture sont dans un tableau, qui lui est le même que celui dans lequel est le bloc. Car si je mettais en haut et en bas, les blocs s'aligneraient verticalement...

    Tu vois ?

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Premièrement, tu as un echo de trop :
    Il n'est d'absolument aucune utilité ici, c'est d'ailleurs limite s'il ne vas pas te causer des problèmes un jour.

    Ensuite, voici la structure dont parle Vinzius :

    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
    <table>
       <tr>
       <?php
       $compteur = 10;
       while($compteur <= 20){
          ?>
          <td><?php echo $compteur ; ?>
          </td>
          <?php
          ++$compteur;
          if(!($compteur % 5)){
             ?>
             </tr>
             <tr>
             <?php
          }
       }
       ?>
       </tr>
    </table>

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par Kirkis
    Salut

    Premièrement, tu as un echo de trop :
    Il n'est d'absolument aucune utilité ici, c'est d'ailleurs limite s'il ne vas pas te causer des problèmes un jour.

    Ensuite, voici la structure dont parle Vinzius :

    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
    <table>
       <tr>
       <?php
       $compteur = 10;
       while($compteur <= 20){
          ?>
          <td><?php echo $compteur ; ?>
          </td>
          <?php
          ++$compteur;
          if(!($compteur % 5)){
             ?>
             </tr>
             <tr>
             <?php
          }
       }
       ?>
       </tr>
    </table>
    Merci mais... je suis vraiment un nul et je compend rien au php, pour moi l'important ce que ma petite galerie marche... Ce code là, je le met ou dans mon code ? Mon code est-il juste ? Dois-je changer l'ouverture et la fermeture de place?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 63
    Points : 44
    Points
    44
    Par défaut
    On va pas non plus te macher tout le travail

  7. #7
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Je vais tenter de reformuler l'idée de Vinzius mais le fond est le même : Développez.com est un forum d'entraide, ce qui suppose que nous allons t'aider mais pas te faire le travail.
    D'aucuns se seraient contentés de t'orienter simplement comme l'a fait Vinzius mais j'ai ressenti le besoin d'aller plus dans le concret.

    Maintenant, charge à toi de comprendre l'exemple que je t'ai donné. J'ai essayé de te donner un extrait de code simple à comprendre et à utiliser.
    Commence par le mettre dans un nouvau fichier et par voir ce que cela donne si tu l'exécutes. Ensuite, essaie de faire le rapprochement entre cette boucle et la tienne.

    Bonne chance

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Oui merci, mais ce code ne va pas marcher car mes balises d'ouverture et de fermeture sont dans le même tableau que le reste...

    Image :



    ...et donc par conséquent c'est toujours le même tableau qui s'alonge et ne reviens pas à la ligne...
    Il faudrait peut-être (je sais pas si ça existe) mettre dans la boucle un ajout de ligne de cellule, ou quelque chose comme ça.

    Sinon, si vous avez une autre "tecnhique" pour mettre les 2 balises (début et fin9 je suis preneur, car avant je les avait misent en haut et en bas, mais après les blocs d'alignaient verticalement...

    L'idéal ce serait de faire comme ça , mais remplacer la simple image ici par tout le tableau, ce qui est impossible car quand je le fais les 2 balises php ne restent pas sur la même ligne que le tableau.

    Merci d'avance.

  9. #9
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Le code que je t'ai indiqué répond très exactement à la question posée au départ, à savoir de changer de ligne du tableau courant toutes les X cases. Tu peux incorporer ce tableau dans un autre conteneur HTML (div, table ou quoi que ce soit), peu importe. Tu peux également mettre un autre conteneur dans le td de mon exemple, cela n'empêchera pas le script de fonctionner.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Mais si mon tableau est déjà fais, comment je décortique ce code ? Et ce code je dois le mettre dans mon tableau ? Au début, à la fin ? Ou alors dans ma boucle (ce qui me parait impossible avec la présence du table)...

    EDIT: J'ai inséré ton code dans ma boucle que voilà : est-elle juste ? car ça ne marche toujours pas :'(

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // on fait une boucle qui va faire un tour pour chaque enregistrement 
    $compteur = 10;
    	while($data = mysql_fetch_assoc($req)) { 
     
       while($compteur <= 20){
          ++$compteur;
          if(!($compteur % 5)){
          }
       }

  11. #11
    Invité
    Invité(e)
    Par défaut
    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
    $valeur = '<td><div align="center" class="Style3"><? echo $data['nom']; ?></div></td> 
                   </tr> 
                   <tr> 
                     <td><div align="center"><a href="buddy.php?id=<? echo $data['id']; ?>"><img src="<? echo $data['buddy']; ?>" width="120" height="120" border="0" /></a></div></td> 
                   </tr> 
                   <tr> 
                     <td width="120" height="21"><div align="center" class="Style1">Par<span class="Style4"> <? echo $data['pseudo']; ?> </span></div> 
                         <div class="Style4"></div></td> 
    '; 
      switch ($compteur){ 
        case 1 : 
          echo '<tr>'; 
        case 2 : 
        case 3 : 
        case 4 : 
          echo $valeur; 
          $compteur++; 
          break; 
        case 5 : 
          $valeur .= '</tr>'; 
          echo $valeur; 
          $compteur=1; 
          break; 
      }

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Merci c'est gentil, mais je le mets où ce code ?

    edit : je crois que je vais peter les plombs avec cette boucle

    Est-ce juste cette boucle ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
       $compteur = 1;
    // on fait une boucle qui va faire un tour pour chaque enregistrement 
    while($data = mysql_fetch_assoc($req)) { 
     
    if($compteur == 5) 
    { 
    echo '<tr>'; echo $compteur = 1 ;  
    } 
    else 
    { 
    echo $compteur = $compteur+1 ; echo "<tr>"; 
    }

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Ah voilà, je crois que ma boucle est ok (oui/non ?)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
       $compteur = 1;
    // on fait une boucle qui va faire un tour pour chaque enregistrement 
    while($data = mysql_fetch_assoc($req)) { 
     
    if($compteur == 5) 
    { 
    echo '</tr><tr>'; $compteur = 1 ; 
    } 
    else { $compteur++ ; 
    }
    Le problème c'est que ça ne les aligne pas bien : www.portfolio-alex.be. Ils sont en diagonales...

  14. #14
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Plutôt que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if($compteur == 5)
    {
    echo '</tr><tr>'; $compteur = 1 ;
    }
    else { $compteur++ ;
    }
    Essaie ce que je t'ai proposé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(!($compteur % 5))
    {
       echo '</tr><tr>';
    }
    Tu es bien le seul à pouvoir dire si cela produit le résultat que tu attends, tu sais

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Non ton code ne va pas, mais par contre j'ai mis ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if($compteur == 5) 
    { 
    echo '</tr><tr></tr><tr></tr><tr></tr><tr>'; $compteur = 1 ; 
    } 
    else { $compteur++ ; 
    }
    ..et ça va nickel !! Exactement ce que je voulais !!

    Merci beaucoup et à une prochaine (j'espère pas ^^ bravo à ceux qui ont compris)

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

Discussions similaires

  1. [1.x] probléme saut de ligne
    Par chlock62 dans le forum Symfony
    Réponses: 2
    Dernier message: 11/10/2012, 15h49
  2. Problème saut de ligne dans mes champs
    Par xess91 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 19/05/2010, 16h59
  3. Problème saut de lignes !
    Par lami_dta_femme dans le forum Mise en page CSS
    Réponses: 17
    Dernier message: 30/04/2008, 00h05
  4. [VBA] Import Excel: problème saut de ligne
    Par davasm dans le forum Général VBA
    Réponses: 2
    Dernier message: 30/11/2007, 09h05
  5. Problème saut de ligne dans un tableau
    Par talggir dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 23/11/2005, 15h10

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