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] Afficher 3 infos dans une cellule de facon répétitive


Sujet :

Langage PHP

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 159
    Points : 54
    Points
    54
    Par défaut [Tableaux] Afficher 3 infos dans une cellule de facon répétitive
    Bonjour,

    - j'aimerais que quand j'ai ecrit 3 famille, il crée une nouvelle cellule sur la meme ligne
    - ensuite remettre encore trois nom dans cette nouvelle cellule
    - j'aimerais remplir autant de case qu'il faut avec 3 famille et ce jusqu'à ce qu'il n'y ait plus de resultat à la requete

    'aimerais que ca s'affiche comme ça de façon automatique :
    - famille1 | - famille 4 | -famille 7 |
    - famille2 | - famille 5 | -famille 8 | précédent
    - famille3 | - famille 6 |________ |

    mais j'ai des regroupements par 2 et un seul par trois

    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
    <table width="300" border="1" align="center" cellpadding="2" cellspacing="0" class="texteclaire">
        <tr>
        <td height="70">
        <?
        $compteur=1;
        $query=("SELECT DISTINCT * FROM FAMILLE_INTERNET ");
        $result=mysql_query($query);
            while($fam = mysql_fetch_array($result)){
                if ($compteur % 3 == 0){
                    echo '</td><td>';
                    }
                $codefamille=$fam['CodeFamilleInternet'];
                $taillecodefamille=strlen($codefamille);
                if ($taillecodefamille==3){
                    if (!empty($codefamille)){
                        echo '- <a href="index.php?famille='.$codefamille.'" class="texteclaire2">'.$fam['Intitule'].'</a><br>';
                        }
                    }
                $compteur++;
            }
        ?>
    </td>
    <td align="right" valign="middle"><a href="javascript:window.history.go(-1)">Précédent</a></td>
    </tr>
    </table>

  2. #2
    Membre chevronné
    Avatar de Bidouille
    Inscrit en
    Mars 2003
    Messages
    1 275
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 1 275
    Points : 1 992
    Points
    1 992
    Par défaut
    Cela semble difficile puisque l'attibut ROWSPAN doit figurer sur la première balise <tr>.
    Seul moyen : parcourir deux fois les enregistrements
    Rédacteur PHP / Delphi ADO / Novell / OpenOffice.org

    Inutile de m'envoyer vos questions par MP, je ne réponds que par le forum.

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 159
    Points : 54
    Points
    54
    Par défaut
    y a pas besoin de rowspan, enfin je crois, voilà comment j'aimerais procéder :

    ouverure de la balise <td>
    j'affiche une famille, retour à la ligne
    j'affiche la suivante, retour à la ligne
    j'affiche le troisième
    fermeture de la balise </td>

    ceci répété tant qu'il reste des resultats

  4. #4
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    en fait il faut que tu recupère le nombre d enregs avec mysql_num_rows,
    aue tu le divise par 3 pour avoir ton nombre de lignes et ensuite sur chaque ligne, tu ecris
    la famille courante, famille courante + 3, famille courante +6 en faisant des tests bien entendu pour pas accéder a du vide.
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 159
    Points : 54
    Points
    54
    Par défaut
    je peux pas je ne prends pas tous les resultas de ma requete (la base a été créé bizaremment)

  6. #6
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    mwé ben la c'est pas gagné
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  7. #7
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Citation Envoyé par budiste
    je peux pas je ne prends pas tous les resultas de ma requete (la base a été créé bizaremment)
    Passe alors par un tableau intermédiaire :

    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
     
    $compteur = 0;
    $tablo    = array(array(),array(),array());
    $query=("SELECT DISTINCT * FROM FAMILLE_INTERNET ");
    $result=mysql_query($query);
    while($fam = mysql_fetch_assoc($result)){
       $codefamille       = $fam['CodeFamilleInternet'];
       $taillecodefamille = strlen($codefamille);
       if ($taillecodefamille == 3){
          if (!empty($codefamille)){
             $la_famile = array('code' => $codefamille, 'intitule' => $fam['Intitule']);
             $tablo[$compteur % 3][] = $la_famille;
          }
       }
       $compteur++;
    }
     
    foreach($tablo as $ligne) {
       echo '<tr>';
       foreach($ligne as $famille) {
          echo '<td><a href="index.php?famille='.$famille['code'].'" class="texteclaire2">'.$famille['intitule'].'</a></td>';
       }
       for($i = count($ligne) ; $i < count($tablo[0]) ; $i++) {
          echo '<td>&nbsp;</td>';
       }
       echo '</tr>';
    }
    EDIT: après relecture du thread je me rends compte que je me suis fourvoyé car tu veux en faite une seul ligne et non pas trois...

  8. #8
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    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
    while($fam = mysql_fetch_array($result)){ 
                $codefamille=$fam['CodeFamilleInternet']; 
                $taillecodefamille=strlen($codefamille); 
                if ($taillecodefamille==3){ 
                    if (!empty($codefamille)){ 
                        echo '- <a href="index.php?famille='.$codefamille.'" class="texteclaire2">'.$fam['Intitule'].'</a><br>'; 
                        } 
                    } 
                if ($compteur % 3 == 0){ 
                    echo '</td><td>'; 
                    } 
     
                $compteur++; 
            }
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 159
    Points : 54
    Points
    54
    Par défaut
    j'ai copié ton code mais avec $compteur=1 ca fait comme avant et avec $compteur=2 ca fait me fait trois cellule avec 1 seule famille et les autres avec trois famille

  10. #10
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    il faut mettre compteur = 0 !

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 159
    Points : 54
    Points
    54
    Par défaut
    la base est trop merdique en fait :
    j'ai refait un code propre et simple, pour voir la valeur du compteur :

    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
    <? include('connect.php');?>
    <table width="100%">
    <tr>
    <?
    	$compteur=1;
    	$query=("SELECT DISTINCT * FROM FAMILLE_INTERNET ");
    	$result=mysql_query($query);
    		while($fam = mysql_fetch_array($result)){
                $codefamille=$fam['CodeFamilleInternet'];
                $taillecodefamille=strlen($codefamille);
                if ($taillecodefamille==3){
                	echo '- <a href="index.php?famille='.$codefamille.'" class="texteclaire2">'.$fam['Intitule'].'</a><br>';
                    echo $compteur.'<br>';
    				}
    			$compteur++;			
    			}
    ?>
    </tr>
    </table>
    et voilà le résultat à l'écran :
    - Matériels
    1
    - Logiciels
    2
    - Connectique
    10
    - Apple
    11
    - Imagerie
    12
    - Réseaux
    13
    - Multimédia
    14
    - Medias
    15
    - Téléphonie
    16

    Va falloir que je motive la personne à modifié la base

  12. #12
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Et comme ça ?
    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
    <? include('connect.php');?>
    <table width="100%">
    <tr>
    <?
       $compteur=1;
       $query=("SELECT DISTINCT * FROM FAMILLE_INTERNET ");
       $result=mysql_query($query);
          while($fam = mysql_fetch_array($result)){
                $codefamille=$fam['CodeFamilleInternet'];
                $taillecodefamille=strlen($codefamille);
                if ($taillecodefamille==3){
                   echo '- <a href="index.php?famille='.$codefamille.'" class="texteclaire2">'.$fam['Intitule'].'</a><br>';
                    echo $compteur.'<br>';
    $compteur++;         
                }
     
             }
    ?>
    </tr>
    </table>

  13. #13
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    oui la c est ta condition strlen qui fout le wide en fait
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 159
    Points : 54
    Points
    54
    Par défaut
    merci, j'ai fait comme tu m'as dit ensuite j'ai affiché $compteur modulo 3 pour chaque pour voir et j'ai abouti au code suivant qui fonctionne nickel :
    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
    <? include('connect.php');?>
    <table width="100%">
    <tr>
    <?
       $compteur=1;
       $query=("SELECT DISTINCT * FROM FAMILLE_INTERNET ");
       $result=mysql_query($query);
          while($fam = mysql_fetch_array($result)){
                $codefamille=$fam['CodeFamilleInternet'];
                $taillecodefamille=strlen($codefamille);
                if ($taillecodefamille==3){
                   if ($compteur%3==1){
    			   		echo '<td>';
    					}
    			   echo '- <a href="index.php?famille='.$codefamille.'" class="texteclaire2">'.$fam['Intitule'].'</a><br>';
    			   if ($compteur%3==0){
    			   		echo '</td>';
    				}
    			   $compteur++;         
                   }
     
             	}
    ?>
    </tr>
    </table>

  15. #15
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    penses a
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 18/02/2009, 17h56
  2. Afficher le titre dans une cellule
    Par Tinien dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 29/10/2008, 12h06
  3. Afficher le répertoire dans une cellule
    Par Jeyjey1 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 07/02/2008, 14h03
  4. Réponses: 6
    Dernier message: 14/06/2007, 12h13
  5. [SWT] TableViewer Afficher un Composite dans une cellule
    Par ShakaZulu dans le forum SWT/JFace
    Réponses: 3
    Dernier message: 30/08/2006, 18h45

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