OVH Cloud OVH Cloud

push perl

18 réponses
Avatar
lolodev
bj

j'ai un code existant qui effetue une requ=EAte puis met les resultats
en liste et cr=E9=E9 un select/option html:
my @categories;
my @categoriesid;
my $data;

my $db_query =3D "SELECT catName,catNum FROM Categories ORDER by
catName";
$dbh=3D$db->prepare($db_query);
$dbh->execute();

while (($data,$numid)=3D$dbh->fetchrow_array()) {
push (@categories, $data);
}
my $categorylist;
my $i;
my $j;
my @categories_to_print;
my $category;
my $thename;

$categorylist =3D '<SELECT NAME=3D"category" CLASS=3D"forms">';
$categorylist .=3D '<OPTION VALUE=3D"">Toutes les
cat=E9gories</OPTION>';
foreach $category (@categories) {
if ($category =3D~ /^([^:]+):/) {
$category =3D $1;
}
push (@categories_to_print, $category) unless
$categories_to_print[$#categories_to_print] eq $category;
}


for ($i=3D0; $i<=3D(int($#categories_to_print)); $i++) {
for ($j=3D$i; $j<=3D$#categories_to_print;
$j+=3D(int($#categories_to_print)+1)) {
$thename =3D &shortcat($categories_to_print[$j]);

$categorylist .=3D "<OPTION
VALUE=3D\"$thename\">$thename</OPTION>";

}

}
$categorylist .=3D '</SELECT>';

Je cherche d=E9sesp=E9rement =E0 introduire l'id catNum =E0 la place du
libell=E9 catname dans l'attribut VALUE de OPTION ...???

merci
bonne journ=E9e

8 réponses

1 2
Avatar
Jacques Caron
Salut,

On Tue, 25 Oct 2005 16:39:45 +0200, lolodev
wrote:

sauf que je n'ai pas l'id catnum ...
dans chaque <td>, je souhaiterai <td><a
hrefÊtnum>cartname</a></td><td><a hrefÊtnum>catname</td>
avec la moitie de catname par colonne.
du coup je perds le lien tableau avec catnum ...


Va falloir quand même essayer de comprendre ce qui se passe pour se
débrouiller tout seul, un de ces jours...

my @cats = values %cathash;
my $half;
{
use integer;
$half =(scalar @catnames + 1) / 2;
}
print join "",map {qq[<TR><TD><A
HREF="$cats[$_]->{catNum}">$cats[$_]->{catName}</A></TD><TD>].(defined
$cats[$_+$half]?qq!<A
HREF="$cats[$_+$half]->{catNum}">$cats[$_+$half]->{catName}</A>!||"&nbsp;")."</TD></TR>"}
(0 .. ($half-1));

Toujours pas testé, mais ça doit pas être bien loin.

Jacques.
--
Oxado http://www.oxado.com/

Avatar
lolodev
oui mais j commencé :))) j'ai ajouté une gestion des couleurs 1/2
lignes + le comptage des elements par catname / lignes (je modifie un
catalogue)

je cherche d'ailleur un bon tutorial qui reprendrai les notions que
vous utilisez

merci bonne journée
Avatar
Jacques Caron
Salut,

On Wed, 26 Oct 2005 09:16:06 +0200, lolodev
wrote:

je cherche d'ailleur un bon tutorial qui reprendrai les notions que
vous utilisez


man perlreftut

Jacques.
--
Oxado http://www.oxado.com/

Avatar
lolodev
je suis désollé mais je séche encore sur un truc ....

@categories est un tableau qui renvoie des libellés sous la forme:
lib cat1:lib souscat1: lib soussouscat1

j'ai une variable $catname qui contient <lib cat1>
la table category est de la forme:
catNum(clé), catName (lib)

je cherche à syntaxer l'expr reg afin de recupérer un tableau
contenant lib souscat1 et son catNum sous le forme:
my %cathash = map
{
$_->{catName} =~ /^([^:]+):/?
($1 => {catName=> $1, catNum=>$_->{catNum}}):
($_->{catName} => $_)
}
@$categories;

mais je n'arrive pas à ecrire l'expression reguliere ...

merci
Avatar
Jacques Caron
Salut,

On Fri, 28 Oct 2005 09:25:03 +0200, lolodev
wrote:

je suis désollé mais je séche encore sur un truc ....

@categories est un tableau qui renvoie des libellés sous la forme:
lib cat1:lib souscat1: lib soussouscat1

j'ai une variable $catname qui contient <lib cat1>
la table category est de la forme:
catNum(clé), catName (lib)

je cherche à syntaxer l'expr reg afin de recupérer un tableau
contenant lib souscat1 et son catNum sous le forme:
my %cathash = map
{
$_->{catName} =~ /^([^:]+):/?
($1 => {catName=> $1, catNum=>$_->{catNum}}):
($_->{catName} => $_)
}
@$categories;

mais je n'arrive pas à ecrire l'expression reguliere ...


Pas tout compris, mais je pense que /^[^:]+:([^:]+)/ doit faire l'affaire.

Jacques.
--
Oxado http://www.oxado.com/

Avatar
lolodev
bonsoir Jacques,

en fait, je cheche à remplacer :
if ($catname) {
foreach $category (grep { /^$catname:/; } @categories)
{
if ($category =~ /^($catname:[^:]+):/) {
$category = $1;
}
push (@categories_to_print, $category) unless
$categories_to_print[$#categories_to_print] eq $category;
}

}

par une syntaxe comme la tienne avec "map".
$catname contient une chaine de la forme lib1:lib2:lib3:...
l'instruction grep { /^$catname:/; } doit recupérer le niveau lib2 et
créer uen nouvelle liste.

voilà
bonne soirée
Avatar
lolodev
bonsoir Jacques,

en fait, je cheche à remplacer :
if ($catname) {
foreach $category (grep { /^$catname:/; } @categories)
{
if ($category =~ /^($catname:[^:]+):/) {
$category = $1;
}
push (@categories_to_print, $category) unless
$categories_to_print[$#categories_to_print] eq $category;
}

}

par une syntaxe comme la tienne avec "map".
$catname contient une chaine de la forme lib1:lib2:lib3:...
l'instruction grep { /^$catname:/; } doit recupérer le niveau lib2 et
créer uen nouvelle liste.

voilà
bonne soirée
merci
Avatar
lolodev
en gros , je cherche :
pour $catname (mon lib1), à remonter tous ses lib2
1 2