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 Perl Discussion :

[langage] Comment diviser une colonne en plusieur colonnes


Sujet :

Langage Perl

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 9
    Points : 6
    Points
    6
    Par défaut [langage] Comment diviser une colonne en plusieur colonnes
    Bonjour,

    J'ai une liste des variables qui sont affichées sur une seule colone (l'une après l'autre) et comme le nombre de ces variables est grand je cherche une solution pour qu'elles soient affichées sur 3 colones.

    voilà le code pour la partie en question:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    elsif ($variables_fields[3] eq "Checkbox") {
    print qq!<tr><td valign=top><nobr><font face="$font_face" size="$standard_font_size" color=$alternate_font_color><b>$variables_fields[1]:</td><td>\n!;
    foreach $entry (@options) {
    print qq!<input type="checkbox" name="$variables_fields[2]" value="$entry"> <font face="$font_face" size="$standard_font_size">$entry<br>\n!;
    }
    print qq!</td></tr>\n!;
    }
    $variables_fields[1]: est le nom de la liste des variables. (j'ai un seul nom)
    $variables_fields[2]: c'est la liste de variables que je cherche à la mettre sur 3 colones. (car il y a plus de 20 variables à afficher)

    Merci à vous tous.

  2. #2
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Je vais juste répondre sur l'aspect algorithmique, à toi de mettre ça en Perl ...

    Tu as deux solutions pour formater une vingtaine de valeurs sur 3 colonnes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    V1    V2    V3
    V4    V5    V6
    V7    ....
    V16   V17   V18
    V19   V20
    ou
    :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    V1    V8    V15
    V2    V9    V16
    V3    ....
    V6    V13   V20
    V7    V14
    Dans la première solution, tu parcours la liste de tes valeurs, et toutes les 3 valeurs, tu affiches à la ligne avec ces trois valeurs. C'est le cas simplissime.

    Dans la seconde solution, tu parcours la liste des valeurs numérotées du début jusqu'au nombre de valeurs divisé par trois (la partie entière, seulement, incrémentée de un si le reste de la division est non nul, soit int($nb / 3)+(($nb%3)==0)). Pour chaque indice ainsi obtenu, tu affiche une ligne contenant la valeur à l'indice, à l'indice+1 et à l'indice+2.

    Ce n'est pas très compliqué non plus ...
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  3. #3
    Futur Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    merci pour reponse... j'ai compris ce que vous avez dit mais je n'arrive pas à le realiser la deuxième solution que vous m'avez indiqué (la solution qui marche bien avec mon cas) car nul en perl
    même avec le modification je n'arrive pas à afficher les valeur sur deux colones.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    elsif ($variables_fields[3] eq "Checkbox") {
    print qq!<tr><td valign=top><nobr><font face="$font_face" size="$standard_font_size" color=$alternate_font_color><b>$variables_fields[1]:</td><td>\n!;
     
    foreach $entry (@options) {
    $half_count = ($entry / 2);
    $half_count = ($half_count - int($half_count));
    $Checkbox_list .= "<input type=\"checkbox\" name=\"$variables_fields[2]\" value=\"$entry\"> <font face=\"$font_face\" size=\"$standard_font_size\">$entry<br>\";
    $Checkbox_list .= "<input type=\"checkbox\" name=\"$variables_fields[2]\" value=\"$entry\"> <font face=\"$font_face\" size=\"$standard_font_size\">$entry<br>\";
    }
    print qq!</td></tr>\n!;
    }

    comme vous voyez dans la pièce jointe, mes valeures (liste de produits) sont beaucoup et actuellement ils sont mal repartie (avis de visiteurs) et je cherche une solution pour ça.

    Aidez moi SVP
    Images attachées Images attachées  

  4. #4
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Citation Envoyé par moniatn
    merci pour reponse... j'ai compris ce que vous avez dit mais je n'arrive pas à le realiser la deuxième solution que vous m'avez indiqué (la solution qui marche bien avec mon cas) car nul en perl
    même avec le modification je n'arrive pas à afficher les valeur sur deux colones.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    elsif ($variables_fields[3] eq "Checkbox") {
    print qq!<tr><td valign=top><nobr><font face="$font_face" size="$standard_font_size" color=$alternate_font_color><b>$variables_fields[1]:</td><td>\n!;
     
    foreach $entry (@options) {
    $half_count = ($entry / 2);
    $half_count = ($half_count - int($half_count));
    $Checkbox_list .= "<input type=\"checkbox\" name=\"$variables_fields[2]\" value=\"$entry\"> <font face=\"$font_face\" size=\"$standard_font_size\">$entry<br>\";
    $Checkbox_list .= "<input type=\"checkbox\" name=\"$variables_fields[2]\" value=\"$entry\"> <font face=\"$font_face\" size=\"$standard_font_size\">$entry<br>\";
    }
    print qq!</td></tr>\n!;
    }
    Je suis désolé ... j'ai du mal à comprendre ce que fait ce code Perl. N'ayant pas d'idée de ce que contient @options, je ne capte pas bien la suite.

    Qu'est ce qui est fait de $Checkbox_list, ensuite ?
    Pourquoi est-elle renseignée avec la concaténation de deux fois la même chose ?
    A quoi va servir $half_count ?

    Côté webdesign : L'élément <tr> ... </tr> doit il contenir TOUTES les options, ou bien est-il utilisé pour générer ce fameux retour à la ligne outes les n options ?

    Il faut correctement penser le HTML au préalable, pour le faire générer ensuite par Perl qui y ajoutera les éléments dynamiques et/ou répétitifs.

    Bon courage.
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  5. #5
    Membre habitué Avatar de rcageot
    Profil pro
    rien
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Points : 170
    Points
    170
    Par défaut
    en fait comme 2Eurocents te l'a expliqué, tu peux faire comme ceci :

    tu initialises une variable à 0
    my $nb =0;

    à chaque passage de ta boucle foreach tu incrémentes $nb

    si (($nb%3)==0), tu rajoutes un </td><td> pour fermer ta colonne
    sinon tu incrits un <br> pour juste faire un retour à la ligne

    ce qui veut dire que tu auras plein de cellules sur une ligne avec 3 options seulement dedans
    Si un ricard vaut un steak, j'ai bien bouffé une vache hier soir !
    L'art de poser les bonnes questions dans les forums afin de ne pas passer pour un

  6. #6
    Membre habitué Avatar de rcageot
    Profil pro
    rien
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Points : 170
    Points
    170
    Par défaut
    autre option si tu ne veux que 3 colonnes et pas seulement 3valeurs /colonnes
    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
     
    my @Options = ( "Option1","Option2","Option3","Option4","Option5"
                   ,"Option6","Option7","Option8","Option9","Option10"
                   ,"Option11","Option12","Option13","Option14");
    my $nbcol =3;
    my $count =0;
    my $split  =int(($#Options) / $nbcol)+1;
    print "<table>\n";
    print "<tr><td>\n";
    foreach $opt (@Options) {
       if ( (($count%$split) == 0) && ($count != 0) ){
          print "</td></tr>\n";
          print "<tr><td>\n";
       }
       print "<br>$opt\n";
       $count +=1;
    }
    print "</td></tr>\n";
    print "</table>\n";
    Si un ricard vaut un steak, j'ai bien bouffé une vache hier soir !
    L'art de poser les bonnes questions dans les forums afin de ne pas passer pour un

Discussions similaires

  1. [PHP 5.2] Comment Diviser une page en plusieurs colonne
    Par pacar dans le forum Langage
    Réponses: 5
    Dernier message: 28/07/2014, 16h47
  2. Réponses: 6
    Dernier message: 23/11/2012, 23h26
  3. Une colonne a plusieurs colonnes.Comment faire?
    Par Kostiaannecy dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 08/10/2011, 16h59
  4. Comment créer une listBox avec plusieurs colonnes ?
    Par volcom_2222 dans le forum VB.NET
    Réponses: 6
    Dernier message: 27/02/2010, 11h44
  5. Comment remplir une listview de plusieurs colonnes?
    Par Chacha35 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 10/09/2009, 12h19

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