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

EDI, CMS, Outils, Scripts et API PHP Discussion :

[Forum] Affichage d'un tableau de taille indéfinie


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 39
    Points : 30
    Points
    30
    Par défaut [Forum] Affichage d'un tableau de taille indéfinie
    Bonjour!
    J'essaye de faire un script php qui afficherait un tableau d'une taille variable.
    En entrée de programme je reçois la taille du tableau et en sortie j'envoie les différents rowspan qui composent ce tableau (note, ce n'est pas un exercice scolaire, c'est bel et bien pour moi :p).

    Un petit exemple rapide:

    Pour un tableau de taille 4:

    html:

    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
    <table>
    <tr>
    <td rowspan="4">D</td>
    <td rowspan="2">D1</td>
    <td rowspan="1">D11</td>
    </tr>
    <tr>
    <td rowspan="1">D12</td>
    </tr>
    <tr>
    <td rowspan="2">D2</td>
    <td rowspan="1">D12</td>
    </tr>
    <tr>
    <td rowspan="1">D12</td>
    </tr>
    </table>


    Pour ce programme la, mon code php devrait prendre en entrée 4 et me ressortir ceci:
    4 2 1 1 2 1 1


    Pour le moment, jusqu'à la taille 8 ca passe niquel.
    Mais dès que j'arrive au dessus de 16 y compris il y a toujours une erreur qui s'agrandit au fur et à mesure que la taille augmente.

    Voici 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
     
    <?php
     
    printf("Result -> 16 8 4 2 1 1 2 1 1 4 2 1 1 2 1 1 8 4 2 1 1 2 1 1 4 2 1 1 2 1 1\n");
     
    $lim = $argv[1];
     
    echo "Comm -> ";
     
    for ($save = $lim; $save >= 1; $save /= 2)
        echo $save . " ";
     
    if ($lim != 1)
       echo $save*2 . " ";
     
    for ($m1 = 2; $m1 < $lim; $m1 *= 2)
    {
            for ($m2 = $m1; $m2 >= 2; $m2 /= 2)
            {
                    echo $m2 . " ";
                    for ($m3 = $m2/2; $m3 >= 1; $m3 /= 2)
                            echo $m3 . " ";
                    echo $m3*2 . " ";
            }
    }
     
    printf("\n");
     
    ?>

    Et l'erreur qui en résulte est:

    Result -> 16 8 4 2 1 1 2 1 1 4 2 1 1 2 1 1 8 4 2 1 1 2 1 1 4 2 1 1 2 1 1
    Comm -> 16 8 4 2 1 1 2 1 1 4 2 1 1 2 1 1 8 4 2 1 1 4 2 1 1 2 1 1

    Je vois pourquoi ca plante mais je n'arrive pas à le régler.
    J'utilise trois variables $m1, $m2 et $m3. $m1 sert à stocker 2, 4, 8 puis seize (ce qui interrompt la boucle). $m2 va contenir des informations relatives à $m1:
    si $m1 = 2 alors $m2 = 2
    si $m1 = 4 alors $m2 = 4 puis $m2 = 2
    si $m1 = 8 alors $m2 = 8 puis 4 puis 2
    $m3 quand à lui est relatif a $m2.
    Si $m2 = 2 alors $m3 = 1 puis 1
    Si $m2 = 4 alors $m3 = 2 puis 1 puis 1
    Si $m2 = 8 alors $m3 = 4 puis 2 puis 1 puis 1
    etc...
    Et le soucis est que si $m2 > 4 alors il va y avoir plantage: 8 4 2 1 1 4 2 1 1 2 1 1 à la place de 8 4 2 1 1 2 1 1 4 2 1 1 2 1 1.
    Ici il y à une petite différence mais si j'essaye de faire un tableau avec une taille de 262144 l'erreur sera très importante. J'ai essayé de rajouter des boucles et parfois cela règle le problème avec 16 mais pas au dessus.

    Je voudrais juste savoir si quelqu'un à une idée afin de me sortir de mon pétrin?
    Merci d'avance dans tous les cas.

  2. #2
    Membre éclairé
    Avatar de hornetbzz
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Octobre 2009
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Octobre 2009
    Messages : 482
    Points : 773
    Points
    773
    Par défaut
    Salut

    J'ai l'impression que tu te compliques bien la vie.

    Pourquoi ne pas afficher ton tableau avec foreach .. ?
    Comme ça, tu peux afficher un tableau avec un contenu variable.

    Par exemple :
    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
    <?php
     
    $mon_tableau = array(0=>'truc', 1=> array('bidule', 'machin', 'chose') , 2=>'foo', 3=> 'bar') ;
     
    echo '<table>';
     
    foreach ( $mon_tableau as $valeur) {
      echo '<tr>'; // Une nouvelle ligne
     
      // Si tu as pls datas, et bien, tu affiches pls cellules dans ta ligne
      if (is_array( $valeur)) {
          foreach ($valeur as $chaque_valeur) {
                echo '<td>' . $chaque_valeur . '</td>' ; // Tes valeurs
          }
      }
      else {
         echo '<td>' . $valeur . '</td>' ; // Ta valeur unique dans une seule cellule
    }
      echo '</tr>'; // cloture de la nouvelle ligne
    }
     
    echo '</table>';

  3. #3
    Nouveau membre du Club
    Inscrit en
    Août 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 39
    Points : 30
    Points
    30
    Par défaut
    Le soucis est que j'aimerai parvenir à un tableau de cette forme:



    Donc avec des rowspan.

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    tu peux calculer le tableau avec un fonction "modulo" comme dans mon exemple si dessous mais ensuite je ne vois pas comment tu vas le remplir :

    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
    $nombreColonne = 6;
    $nombreLigne = pow(2, $nombreColonne - 1);
     
    ?>
    <table border="1">
     
        <?php for ($l = 0; $l < $nombreLigne; $l++) {?>
     
            <tr>
     
                <?php for ($c = 0; $c < $nombreColonne; $c++) {?>
                    <?php $div = pow(2, ($nombreColonne - $c - 1));?>
     
                    <?php if ($l % $div == 0) {?>
     
                        <td rowspan="<?php echo $div;?>" style="vertical-align : top;">
                            <?php echo $c;?> * <?php echo $l;?>
                        </td>
     
                    <?php }?>
     
                <?php }?>
     
            </tr>
     
        <?php }?>
     
    </table>

  5. #5
    Nouveau membre du Club
    Inscrit en
    Août 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 39
    Points : 30
    Points
    30
    Par défaut
    En fait j'ai fait autrement, plutot que de l'afficher de la gauche vers la droite je l'ai affiche du haut en bas et comme je connais la taille totale du nombre de cases qui seront en bas, il ne reste qu'a prendre un operateur qui contiendra se nombre et le diviser par deux a chaque balise <tr>.
    Merci quand meme ^^ (J'aurais bien galere -_-)

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/03/2013, 17h44
  2. Problème d'affichage de tableau a taille variable
    Par XantoTheMuseFan dans le forum C
    Réponses: 4
    Dernier message: 30/10/2011, 20h52
  3. [WD10] Declarer un tableau de taille indéfinie
    Par cool dans le forum WinDev
    Réponses: 1
    Dernier message: 19/09/2008, 09h42
  4. [MFC] Affichage d'un tableau
    Par SethPech dans le forum MFC
    Réponses: 7
    Dernier message: 23/02/2004, 15h48
  5. xml-xsl-fo : probleme d'affichage d'un tableau
    Par clindoeil dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 12/12/2003, 12h46

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