OVH Cloud OVH Cloud

layer et php

4 réponses
Avatar
Thierry Perrain
quelqu'un aurait il une solution à mon problème ...

Comment à partir d'une liste deroulante en php ...

<form action="">
<select
onchange="ouvrir.(this.form.choix.options[this.form.choix.options.selectedIndex].value)()"
name="choix" size="1" class="recherche">
<?
$i="0";
while ($i<$n):
$valeur=$categories[$i];
if ($valeur==""){echo"";}
else {echo"<option value=\"$i\">$valeur";}
$i++;
endwhile;
?>
</select>

qui fonctionne correctement, (sauf ma ligne js)

recupérer et envoyer la valeur à un javascript qui me permettra d'ouvrir un
layer avec les infos relatives au choix,
infos contenues elles memes dans une table mysql.

function ouvrir.$i(){
if (document.getElementById) { //IE5 ou Netscape 6
document.getElementById(\"Layer$i\").style.visibility=\"visible\";
}
if (document.layers) { //NS4.X seul
document.Layer$i.visibility=\"visible\"
}
}

$i étant relatif aux possibilités offertent par ma liste

ca, ca ne marche pas ...

merci ...

4 réponses

Avatar
Olivier Miakinen
quelqu'un aurait il une solution à mon problème ...


Il faut dire que c'est loin d'être clair...

Comment à partir d'une liste deroulante en php ...

<form action="">
<select
onchange="ouvrir.(this.form.choix.options[this.form.choix.options.selectedIndex].value)()"
name="choix" size="1" class="recherche">
<?
$i="0";
while ($i<$n):
$valeur=$categories[$i];
if ($valeur==""){echo"";}
else {echo"<option value="$i">$valeur";}
$i++;
endwhile;
?>
</select>

qui fonctionne correctement, (sauf ma ligne js)

recupérer et envoyer la valeur à un javascript qui me permettra d'ouvrir un
layer avec les infos relatives au choix,
infos contenues elles memes dans une table mysql.

function ouvrir.$i(){


Tiens, ton erreur est peut-être là. Si tu veux définir autant de
fonctions qu'il y a de catégories tu dois les appeler ouvrir0(),
ouvrir1(), etc. plutôt que ouvrir.0(), ouvrir.1(), etc.

Mais le mieux serait d'avoir une seule fonction et de lui passer l'id en
paramètre.

if (document.getElementById) { //IE5 ou Netscape 6
document.getElementById("Layer$i").style.visibility="visible";
}
if (document.layers) { //NS4.X seul
document.Layer$i.visibility="visible"
}
}

$i étant relatif aux possibilités offertent par ma liste


Bon, écoute. Sachant que PHP et JavaScript sont dans des mondes
complètement séparés, il ne sert jamais à rien de se faire des n½uds
au cerveau en cherchant à faire fonctionner les deux en même temps
dès le début.

Commence donc par faire fonctionner ton code JavaScript en HTML seul,
avec deux ou trois catégories, et *ensuite seulement* tu le rendras
variable en fonction de PHP et MySQL.

--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)

Avatar
CrazyCat
Thierry Perrain wrote:
Comment à partir d'une liste deroulante en php ...
<form action="">
<select
onchange="ouvrir.(this.form.choix.options[this.form.choix.options.selectedIndex].value)()"
name="choix" size="1" class="recherche">
qui fonctionne correctement, (sauf ma ligne js)
function ouvrir.$i(){
if (document.getElementById) { //IE5 ou Netscape 6
document.getElementById("Layer$i").style.visibility="visible";
}
if (document.layers) { //NS4.X seul
document.Layer$i.visibility="visible"
}
}


C'est horrible!
Donc, tu crées autant de fonctions qu'il y a de <option>? Quel est
l'intérêt d'une fonction alors? fais donc des appels directs!

Moi, j'aurais plutôt fait:
function ouvrir(a_select) {
the_select = eval(a_select.options);
for (i=0; i<the_select.length; i++) {
if (the_select.options[i].selected == true) {
document.getElementById("Layer"+i).style.visibility = visible;
}
}
}

Et en html/php:
<select onchange="javascript:ouvrir(this);" name="choix">
<?
...
?>
</select>

Bon, je te met ce code comme ça, c'est juste l'idée, il y a certainement
des erreurs :)


--
Aide informatique: http://help-info.forumactif.com
Humour: http://www.chatfou.com
Tchattez en liberté: http://www.crazy-irc.net

Avatar
Thierry Perrain
Merci, c'est vrai que j'ai tendance à me compliquer la vie...
c'est ok

"CrazyCat" a écrit dans le message de news:
dro2v8$j9h$
Thierry Perrain wrote:
Comment à partir d'une liste deroulante en php ...
<form action="">
<select
onchange="ouvrir.(this.form.choix.options[this.form.choix.options.selectedIndex].value)()"
name="choix" size="1" class="recherche">
qui fonctionne correctement, (sauf ma ligne js)
function ouvrir.$i(){
if (document.getElementById) { //IE5 ou Netscape 6
document.getElementById("Layer$i").style.visibility="visible";
}
if (document.layers) { //NS4.X seul
document.Layer$i.visibility="visible"
}
}


C'est horrible!
Donc, tu crées autant de fonctions qu'il y a de <option>? Quel est
l'intérêt d'une fonction alors? fais donc des appels directs!

Moi, j'aurais plutôt fait:
function ouvrir(a_select) {
the_select = eval(a_select.options);
for (i=0; i<the_select.length; i++) {
if (the_select.options[i].selected == true) {
document.getElementById("Layer"+i).style.visibility = visible;
}
}
}

Et en html/php:
<select onchange="javascript:ouvrir(this);" name="choix">
<?
...
?>
</select>

Bon, je te met ce code comme ça, c'est juste l'idée, il y a certainement
des erreurs :)


--
Aide informatique: http://help-info.forumactif.com
Humour: http://www.chatfou.com
Tchattez en liberté: http://www.crazy-irc.net



Avatar
Thibaut Allender
Merci, c'est vrai que j'ai tendance à me compliquer la vie...


et celle des autres aussi...
http://giromini.org/usenet-fr/repondre.html

[snip le quotage de pouple manchot/goret/barrez la mention inutile]

--
thibaut allender | http://capsule.org | http://photo.capsule.org