Formulaire, select listes & javascript

Résolu/Fermé
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 - 27 mai 2008 à 13:14
djoyanna Messages postés 16 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 8 septembre 2008 - 13 juin 2008 à 10:00
Bonjour,

J'ai reçu un mail d'une personne me demandant conseil sur de l'ajax, je me permet de poster ici pour que ça profite à d'autres personnes par la même occasion.
Voici le mail :



bonjour, en faisant des recherches sur le net concernant un soucis de progra que j'ai je suis tombé sur cette concversion que vous avez u : http://www.commentcamarche.net/forum/affich 2513024 php chercher dans bdd avec select option

le sujet m'interresse beaucoup. vous parliez d'envoyer un exemple par mail a celui qui recherchait des solution. je sais que ca date mais ne sait on jamais si vous avez toutjours ce script pour exemple je suis interesser.

voici mon probleme :
je suis en train de rédiger un sondage qui s'appui sur des BDD. j'ai donc 3 table :
question : id_question, intitule_question
reponse : id_reponse, intitule_reponse, id_question
reponse_client : id_question, id_reponse, id_client

je souhaite donc afficher la question puis dans un <select><option> les reponses possible pour chaque question.

Voilà ou j'en suis :
J'arrive a afficher les question grace a une requete toute simple :
SELECT distinct * FROM question
que j'affiche grace a un foreach .

ensuite pour afficher les reponse correspondante je recupere l'id_question dans la premiere requete et dans un foreach imbriquer j'exécute la requete :
SELECT distinct *
FROM reponse,question
where question.id_question=reponse.id_question
and reponse.id_question= '".$question."'

j'arrive bien a afficher les question puis afficher les reponse dans le select option.

Mais quand j'envois les reponse pour etre enregistrer dans la table reponse_client j'arrive a récupérer id_question correspondant mais pas l'id_reponse choisi par l'utilisateur. il retient a chaque fois l'id_reponse de la derniere reponse possible.
voici ma requete d'insertion :
INSERT INTO reponse_client (id_coupon, id_question,id_reponse )
VALUES ( '".($pID)."', '".($pIdQuestion)."','".($pIdReponse)."')";

voici un exemple pour etre plus claire :

question 1
imaginons que les reponses soit inscrite dans un menu deroulant (<select><option> )
<<reponse 1 >>
<<reponse 2 >>-->réponse choisi par l'utilisateur
<<reponse 3 >>

voici ce qu'il enregistre dans reponse_client :
id_question = 1 ; id_reponse=3
au lieur de
id_question = 1 ; id_reponse=2

je pense que je n'ai pas été très clair mais c'est assez difficile d'expliquer . je vous ai mis mon code au cas ou.
Merci pour votre aide et excusez moi de vous écrire directement sur le votre mail mais je me suis dis que puisque vous l'affichier sur le chat cela ne vous derangerai pas.

$lResult3 = $lCoupon->SelectQuestion();

foreach ($lResult3 as $row3)
{
    echo '<p>';
    echo $row3['intitule_question'];
    echo '</p>';
    $question=$row3['id_question'];
    $lResult4 = $lCoupon->SelectReponse($question);    
?>
    <select name="id_reponse" size=">1" id="id_reponse"  value="<?=$row4['id_reponse']?>">
<p>
<?    //affichage des reponse possible dasn option
        
        foreach ($lResult4 as $row4)
        {  
    
        echo '<option value='.$row4['id_reponse'].'>'; 
        echo $row4['intitule_reponse']; 
        echo $row4['id_reponse'];
        $id_reponse=$row4['id_reponse'];
        echo'</option>';
        }
?>
</select>
<input type="hidden" name="question" id="question" value="<?=$question?>" />
<input type="hidden" name="id_reponse" id="id_reponse" value="<?=$id_reponse?>" />
<input type="hidden" name="recherche2" id="recherche2" value="<?=$recherche2?>" />
<?
        if (!empty($_POST["ValideReponse"]))
        { 
         if ( isset($_POST["id_reponse"]) ) 
             {
                {     //insertion dans bdd            
                    $lCoupon->mIdQuestion = $question;
                    $lCoupon->mIdReponse = $id_reponse;
                    $lCoupon->mID = $recherche2;    
                    $lResult = $lCoupon->AddReponse();
                } 
                $liste = serialize($id_reponse);
                echo $liste;
            }
        } 

}

?>
<input type="submit" value="Valider" name="ValideReponse"/>

<!--recuperation des IDcoupon,question et reponse pour envois dans coupon_client4.php-->


<p>
</fieldset>
</form>



(merci de ne pas répondre pour le moment je vais poster la solution)

5 réponses

kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
27 mai 2008 à 13:46
Re, donc en fait c'est normal que tes valeurs soient mauvaise puisque tu boucle sur tes réponses pour chaque question, en donnant pour valeur à ta variable enregistrée en hidden la valeur de la dernière réponse sur laquelle tu as bouclé (normal).

Le plus simple c'est de mettre en place une petite fonction javascript à lancer sur l'évênement "onchange" de tes select list des réponses qui aura pour but de mettre à jour le champ caché lorsque tu change de réponse.

Pour cela tu vas devoir identifier clairement chaque select list par un identifiant unique, par exemple 'id_reponse' avec en plus un numéro de question concaténé à ce libellé. Tu vois ce que je veux dire ?

Voilà ce que ça donne :

<script language="javascript">
function updateValue ( index, selectObj ){
    // --- Retrieve elements with name 'id_reponse'
    var elems = document.getElementsByTagNames("id_reponse");
    // --- And update the value of the one corresponding to the question (cf index)
    elems[index].value = selectObj.options[selectObj.options.selectedIndex].value;
}
</script>

<?
$lResult3 = $lCoupon->SelectQuestion();
$count = 0; // Nb questions

foreach ($lResult3 as $row3)
{
    echo '<p>';
    echo $row3['intitule_question'];
    echo '</p>';
    $question=$row3['id_question'];
    $lResult4 = $lCoupon->SelectReponse($question);    
?>
    <select name="select_reponse" size=">1" id="id_reponse"  value="<?=$row4['id_reponse']?>" onchange="updateValue('<?=$count?>',this)">
<p>
<?    //affichage des reponse possible dasn option
        
        foreach ($lResult4 as $row4)
        {  
    
        echo '<option value='.$row4['id_reponse'].'>'; 
        echo $row4['intitule_reponse']; 
        echo $row4['id_reponse'];
        $id_reponse=$row4['id_reponse'];
        echo'</option>';
        }
?>
</select>
<input type="hidden" name="question" id="question" value="<?=$question?>" />
<input type="hidden" name="id_reponse" id="id_reponse" value="<?=$id_reponse?>" />
<input type="hidden" name="recherche2" id="recherche2" value="<?=$recherche2?>" />
<?
        if (!empty($_POST["ValideReponse"]))
        { 
         if ( isset($_POST["id_reponse"]) ) 
             {
                {     //insertion dans bdd            
                    $lCoupon->mIdQuestion = $question;
                    $lCoupon->mIdReponse = $id_reponse;
                    $lCoupon->mID = $recherche2;    
                    $lResult = $lCoupon->AddReponse();
                } 
                $liste = serialize($id_reponse);
                echo $liste;
            }
        } 

   // --- Increase question counter
   $count++;

}

?>
<input type="submit" value="Valider" name="ValideReponse"/>

<!--recuperation des IDcoupon,question et reponse pour envois dans coupon_client4.php-->


<p>
</fieldset>
</form>


Voilà, mes modifications sont en gras.
La fonction javascript se charge de mettre à jour la valeur de la réponse sélectionnée dans le champ correspondant.

Je n'ai pas testé le code car je ne peux pas mais l'idée est là.
2
djoyanna Messages postés 16 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 8 septembre 2008 1
13 juin 2008 à 10:00
bonjour
me revoici avec un nouveau souci :( dans la suite de ce script.
dans l'affichage de chaque liste de reponse il y a une option autre qui permet d'afficher un champs text au cas ou les reponses ne conviennent pas a lutilisateur
la fonction js qui sui me permet de rendre visible ou non le champs text quan l'utilisateur clik sur autre. Dans chaque question il y a une zone 'autre' individuelle .
voici ma fonction :

function RendVisibleAutre(texte)
{

if (texte=="autre")
document.getElementById("autre_reponse").style.visibility= 'visible';
else
document.getElementById("autre_reponse").style.visibility= 'hidden';
}
</script>

voici son utilisation :

<?php
$i=0;
$i=i++;
echo "<SELECT size=1 onchange='RendVisibleAutre(this.value,autre_reponse".$i.")'

name='reponse".$nbQuestion."'> ";
foreach ($lResult4 as $row4)
{
//affichage des reponse possible dasn option
$reponse=$row4['id_reponse'];
echo "\n".'<option value='.$row4['id_reponse'].'>';
echo $row4['intitule_reponse'];
//echo $reponse;
echo '</option>';

}
echo "<option value='autre'>autre</option></SELECT>";
?>
<p><div id='autre_reponse"<?echo $i?>"' style="visibility:hidden;position:absolute;">

<input type="text" name='autre'></div>
</p>

ca ne fonctionne pas :(
cela vien peut etre du fait que je ne passe pas la variable $i dans la fonction js?
ou alors j'ai mal formuler ma fonction???
je ne voi pas...
1
tout dabord merci pour ta réponse
j'ai essayer mais ca ne fonctionne pas. il me compte le nombre de question.
je ne compren pas telement le principe (moi et le javascript :( ).
tu as écris : "id_reponse' avec en plus un numéro de question concaténé à ce libellé."
je ne compren pas pourquoi il faut concatener avec le numéro de la question ?

je suis perdu ....
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
27 mai 2008 à 16:09
Re, en fait oubli mon explication du haut car entre temps j'ai fait des modifications sans mettre à jour mes explications :s (oubli de ma part, désolé)

Donc je ré-explique ton erreur.
Ce que tu fais avec cette première partie de code :

foreach ($lResult3 as $row3)
{
    echo '<p>';
    echo $row3['intitule_question'];
    echo '</p>';
    $question=$row3['id_question'];
    $lResult4 = $lCoupon->SelectReponse($question);    
?>
    <select name="id_reponse" size=">1" id="id_reponse"  value="<?=$row4['id_reponse']?>">
<p>
<?    //affichage des reponse possible dasn option
        
        foreach ($lResult4 as $row4)
        {  
    
        echo '<option value='.$row4['id_reponse'].'>'; 
        echo $row4['intitule_reponse']; 
        echo $row4['id_reponse'];
        $id_reponse=$row4['id_reponse'];
        echo'</option>';
        }
?>
</select>
<input type="hidden" name="question" id="question" value="<?=$question?>" />
<input type="hidden" name="id_reponse" id="id_reponse" value="<?=$id_reponse?>" />
<input type="hidden" name="recherche2" id="recherche2" value="<?=$recherche2?>" />


Tu as une boucle principale (foreach ($lResult3 as $row3)) dans laquelle, pour chaque question tu vas mettre une liste de réponse à sélectionner, avec en plus des champs cachés (question,id_reponse et recherche2)
Je ne vois pas à quoi sert 'recherche2' mais ce champ n'étant pas gênant on en parlera pas.
Concernant les deux autres champs cachés, notamment 'id_reponse', si j'ai bien compris il s'agit du champ dans lequel tu veux enregistrer l'identifiant de la réponse sélectionnée par l'utilisateur.
Or, que fais ton script, pour chaque question :
- tu initialise et rempli une variable '$id_reponse' dans une boucle :
foreach ($lResult4 as $row4)
        {  
        echo '<option value='.$row4['id_reponse'].'>'; 
        echo $row4['intitule_reponse']; 
        echo $row4['id_reponse'];
        $id_reponse=$row4['id_reponse'];
        echo'</option>';
        }

Remarque : A la fin de ta boucle, la variable prends donc bien la valeur de l'identifiant de ta dernière réponse (ce qui est ton problème actuellement)
- puis une fois cette boucle d'affichage des questions (comme des options de la liste de la question courante), tu repli les champs cachés, dont le champ 'id_reponse' avec pour valeur la valeur de la variable $id_reponse qui a donc comme je l'ai dis dans la remarque, pris la valeur de la dernière réponse (et non celle que l'utilisateur aura sélectionné, à moins qu'il ne sélectionne la dernière)

Résumé : Tu vois bien que le soucis c'est que tu met dans tes champs cachés, les identifiants des dernières réponses et non ceux des réponses sélectionnées par l'internaute.

Explication de comment résoudre ce problème :
Il faut simplement mettre à jour le champ caché 'id_reponse' correspondant à ta question lorsque l'utilisateur sélectionne / change de réponse. Pour cela j'ai mis en place la fonction javascript suivante (dont le code était érroné j'ai fais une erreur dans le code précédent) :

function updateValue ( index, selectObj ){
    // --- Retrieve elements with name 'id_reponse'
    var elems = document.getElementsByNames("id_reponse");
    // --- And update the value of the one corresponding to the question (cf index)
    elems[index].value = selectObj.options[selectObj.options.selectedIndex].value;
}


Que fais cette fonction ? Si tu n'es pas adepte du javascript je te propose de me faire confiance sur le code ^^
Cette fonction prends en paramètre deux valeur : un indice (qui correspond au numéro de la question (commencant par '0'), et un objet de type HTML SELECT qui correspond à la liste des réponses à une question.
La première instruction de la fonction :
var elems = document.getElementsByNames("id_reponse");
permet de récupérer tous les éléments HTML de ta page dont le nom est 'id_reponse' et qui correspondront donc à l'ensemble des champs cachés 'id_reponse' (un par question normalement). L'instruction 'getElementsByNames' retourne un tableau de tous les éléments ainsi retrouvés.
C'est lors de la deuxième instruction que va nous servir l'indice (variable 'index') pour sélectionner le bon champ 'id_reponse' dans le tableau qui a été retourné, afin de pouvoir mettre à jour sa valeur avec celle que l'utilisateur a sélectionnée. Dans le tableau retourné, l'indice 0 (elems[0]) correspond au champ 'id_reponse' de la première question, l'indice 1 (elems[1]) correspond au champ 'id_reponse' de la deuxième question, etc. Donc si l'on fais elems[index] dans la fonction on récupèrera le champ 'id_reponse' correspondant à la question numéro 'index' (dont la valeur est celle qui est données lorsque l'on écrit le champ SELECT sur la page (cf le conpteur $count qui est incrémenté à chaque question)
Le deuxième paramètre fait référence donc à la liste des réponses d'une question, et nous permets de récupérer la valeur de l'option sélectionnée : selectObj.options[selectObj.options.selectedIndex].value;

Voilà pour l'explication de la fonction javascript, maintenant comment la mettre en place ? Et bien on veut la déclencher lorsque l'utilisateur change la réponse sélectionnée, on va donc mettre à jour l'évênement 'onchange' des élements SELECT de ta page, en donnant comme paramètre le numéro de la question (pour retrouver le bon champ 'id_reponse' correspondant, ainsi qu'un "pointeur" sur la liste des réponses de manière à pouvoir récupérer la valeur sélectionnée :
onchange="updateValue("<?=$count?>",this);"

Le compteur $count est bien sur initialisé à 0 au début de ta page et incrémenté à chaque nouvelle question :
$count = 0;
et
$count++; (en fin de boucle sur les questions)

Voilà, je pense avoir fait le tour concernant les explications, voici le code mis à jour :
<script language="javascript">
function updateValue ( index, selectObj ){
    // --- Retrieve elements with name 'id_reponse'
    var elems = document.getElementsByNames("id_reponse");
    // --- And update the value of the one corresponding to the question
    elems[index].value = selectObj.options[selectObj.options.selectedIndex].value;
}
</script>

<?
$lResult3 = $lCoupon->SelectQuestion();
$count = 0; // Nb questions

foreach ($lResult3 as $row3)
{
    echo '<p>';
    echo $row3['intitule_question'];
    echo '</p>';
    $question=$row3['id_question'];
    $lResult4 = $lCoupon->SelectReponse($question);    
?>
    <select name="select_reponse" size=">1" id="id_reponse"  value="<?=$row4['id_reponse']?>" onchange="updateValue('<? echo $count?>',this)">
<p>
<?    //affichage des reponse possible dasn option
        
        foreach ($lResult4 as $row4)
        {  
    
        echo '<option value='.$row4['id_reponse'].'>'; 
        echo $row4['intitule_reponse']; 
        echo $row4['id_reponse'];
        $id_reponse=$row4['id_reponse'];
        echo'</option>';
        }
?>
</select>
<input type="hidden" name="question" id="question" value="<?=$question?>" />
<input type="hidden" name="id_reponse" id="id_reponse" value="<?=$id_reponse?>" />
<input type="hidden" name="recherche2" id="recherche2" value="<?=$recherche2?>" />
<?
        if (!empty($_POST["ValideReponse"]))
        { 
         if ( isset($_POST["id_reponse"]) ) 
             {
                {     //insertion dans bdd            
                    $lCoupon->mIdQuestion = $question;
                    $lCoupon->mIdReponse = $id_reponse;
                    $lCoupon->mID = $recherche2;    
                    $lResult = $lCoupon->AddReponse();
                } 
                $liste = serialize($id_reponse);
                echo $liste;
            }
        } 

   // --- Increase question counter
   $count++;

}

?>
<input type="submit" value="Valider" name="ValideReponse"/>

<!--recuperation des IDcoupon,question et reponse pour envois dans coupon_client4.php-->


<p>
</fieldset>
</form>


Quelques autres explications : Attention à ne pas nommer de la même manière deux types de champs différent dans ta page ! Tu avais nommé tes listes de réponse 'id_reponse' comme pour tes champs cachés, ce que j'ai mis à jour en nommant tes listes 'select_reponse' pour ne pas avoir de confusion, tant au niveau de la conpréhension qu'au niveau du bon déroulement du script.

Une dernière chose, si ce que j'ai donné n'a pas de bug et fonctionne, tu verra que si tu ne modifie pas les choix de réponses et soumet ton formulaire directement, les identifiants des réponses ne sont pas mis à jour correctement (puisqu'il le sont uniquement lorsque l'utilisateur modifie la réponse).
Il faut donc forcer les champs cachés à être correctement initialisés dès le départ (après chargement de ta page).

Pour cela, tu peux rajouter une fonction javascript qui mettra à jour tes champs après avoir créé les listes (une sorte d'initialisation donc). Voici le code de la fonction javascript :
function initLists ( ){
   // --- Retrieve a list of the select lists
   var lists = document.getElementsByNames("select_reponse");
   // --- Roll on each retrieved list
   for ( var i = 0; i < lists.length; i++ ){
      // --- Provoke the update function on this list
      updateValue(i,lists[i]);
   }
}


Cette fonction va mettre à jour tes champs cachés après la création de ton formulaire, il faut donc l'appeler à la fin de ton script.

Voici le code global de ta page (pour ce que tu m'as donné au départ) :
<script language="javascript">

function initLists ( ){
   // --- Retrieve a list of the select lists
   var lists = document.getElementsByNames("select_reponse");
   // --- Roll on each retrieved list
   for ( var i = 0; i < lists.length; i++ ){
      // --- Provoke the update function on this list
      updateValue(i,lists[i]);
   }
}

function updateValue ( index, selectObj ){
    // --- Retrieve elements with name 'id_reponse'
    var elems = document.getElementsByNames("id_reponse");
    // --- And update the value of the one corresponding to the question
    elems[index].value = selectObj.options[selectObj.options.selectedIndex].value;
}
</script>

<?
$lResult3 = $lCoupon->SelectQuestion();
$count = 0; // Nb questions

foreach ($lResult3 as $row3)
{
    echo '<p>';
    echo $row3['intitule_question'];
    echo '</p>';
    $question=$row3['id_question'];
    $lResult4 = $lCoupon->SelectReponse($question);    
?>
    <select name="select_reponse" size=">1" id="id_reponse"  value="<?=$row4['id_reponse']?>" onchange="updateValue('<? echo $count?>',this)">
<p>
<?    //affichage des reponse possible dasn option
        
        foreach ($lResult4 as $row4)
        {  
        echo '<option value='.$row4['id_reponse'].'>'; 
        echo $row4['intitule_reponse']; 
        echo $row4['id_reponse'];
        $id_reponse=$row4['id_reponse'];
        echo'</option>';
        }
?>
</select>
<input type="hidden" name="question" id="question" value="<?=$question?>" />
<input type="hidden" name="id_reponse" id="id_reponse" value="<?=$id_reponse?>" />
<input type="hidden" name="recherche2" id="recherche2" value="<?=$recherche2?>" />
<?
        if (!empty($_POST["ValideReponse"]))
        { 
         if ( isset($_POST["id_reponse"]) ) 
             {
                {     //insertion dans bdd            
                    $lCoupon->mIdQuestion = $question;
                    $lCoupon->mIdReponse = $id_reponse;
                    $lCoupon->mID = $recherche2;    
                    $lResult = $lCoupon->AddReponse();
                } 
                $liste = serialize($id_reponse);
                echo $liste;
            }
        } 

   // --- Increase question counter
   $count++;

}

?>
<input type="submit" value="Valider" name="ValideReponse"/>

<!-- Initialise each answer list -->
<script language="javascript">
   initLists ();
</script>

<!--recuperation des IDcoupon,question et reponse pour envois dans coupon_client4.php-->

<p>
</fieldset>
</form>


Voilà, si tu as des questions plus précises éventuellement, ou si le code ne fonctionne pas fais le moi savoir (si erreur, ce serait bien que tu fasse un minimum d'inverstigation dessus pour soit le résoudre, soit pouvoir me dire quel est le libellé de l'erreur (pour erreur javascript par exemple), la ligne où ça coince, etc, bref tout ce qui pourra aider pour résoudre le problème plus vite :)
0
djoyanna Messages postés 16 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 8 septembre 2008 1 > kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013
27 mai 2008 à 16:39
merci beaucoup pour toutes ces explication détaillés; tu as l'air de métriser vraiment le sujet :) . je comprend maintenant pourquoi est ce qu'il ne prend pas en compte mon id_reponse.
je vais essayer ce que tu as modifié et te tiens au courant.
encore merci
0
djoyanna Messages postés 16 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 8 septembre 2008 1 > kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013
27 mai 2008 à 16:55
alors voilà j'ai testé et malheuresement ... ca ne fonctionne pas . voilà ce qu'il se passe :
--> déjà il ne m'affiche les question et c'est étrange car tu n'as rien changer concerv=nant la requete $lResult3..
--> donc il n'ya que les reponse dans les menus déroulant qui s'affichent trié comme sil y avait les question .
--> en plus l'enregistrement se fait donc ca signifie que les question sont bien présentent mais ne safichent pas.
--> bien que l'enregistrement se fasse c'est toujours la meme histoire il enregistre l'id de la derniere réponse a chaque fois.

voici ce que me dit firebug dès que je selectionne une réponse :

document.getElementsByNames is not a function
initLists()coupon_client3.ph... (line 16)
[Break on this error] var lists = document.getElementsByNames("select_reponse");

je ne sais pas si je t'ai aider... encore merci pour ton aide
0
djoyanna Messages postés 16 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 8 septembre 2008 1
27 mai 2008 à 17:02
je vien de capté que je j'ai ajouter un head sur ma page donc j'ai l'impression que ca ne fonctionne pas a cause de ca car il est possible que j'en appel déjà un <head>. il faut que je vérifie ca , mon script est assez volumineu
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
27 mai 2008 à 17:19
Ok, sinon pour ce qui est de l'erreur sur la fonction getElementsByNames, rajoute ces lignes javascript au début de ton script (avant tout ce que je t'ai donné) :

 if(!document.getElementById) document.getElementById=function (id) {
 return eval("document.all."+id);
 }
 if(!document.getElementsByName) document.getElementsByName=function (name) {
 var el=document.all,result=new Array(),j=0;
 for(var i=0;i<el.length;i++) if(el[i].name.toLowerCase()==name.toLowerCase()) result[j++]=el[i];
 return result;
 }
 if(!document.getElementsByTagName) document.getElementsByTagName=function (tagName) {
 var el=document.all,result=new Array(),j=0;
 for(var i=0;i<el.length;i++) if(el[i].tagName.toLowerCase()==tagName.toLowerCase()) result[j++]=el[i];
 return result;
 } 


ça va permettre de définir les fonctions javascript non comprises par certains navigateur pour ces navigateurs.
Autre petite remarque, j'ai l'impression que j'ai mis un espace lors de l'appel à la fonction de mise à jour des champs cachés :
<script language="javascript">
      init();
</script>

S'il y a un espace entre 'init' et '()' supprime le.

Sinon, pour commencer, uniquement pour tester si la page se construit bien, tu peux commenter l'appel de cette fonction 'init' pour ne pas l'exécuter. Dans un premier temps seulement, au moins pour voir si la page se contruit bien, et ensuite uniquement si tout se passe bien tu décommente pour voir si l'initialisation se fait bien (pas d'erreur javascript)


Au besoin (vraiment au besoin car je suis très pris), si ta page s'affiche bien mais qu'il y a des erreurs javascript ou autre s lorsque tu tente de modifier une réponse, soumettre le formulaire, etc., enregistre la page HTML et envoi la moi sur mon mail, comme ça je pourrai simuler ta page sans avoir accès à ta base de données, ceci pour tester les codes javascript (ça ira plus vite :) )

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
djoyanna Messages postés 16 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 8 septembre 2008 1
12 juin 2008 à 16:23
coucou
ca fais longtmep mais g vraiment galéré !!!
j'y suis arrivé
$recherche2= $_POST["id"];

echo 'Numéro coupon ';
echo $recherche2;

$nbQuestion = 0;
$i = 0;



$lResult3 = $lCoupon->SelectQuestion();
foreach ($lResult3 as $row3)
{ $nbQuestion++;

echo '<p>';
echo $row3['intitule_question'];
echo '</p>';
$question=$row3['id_question'];

$lResult4 = $lCoupon->SelectReponse($question);

echo " <SELECT size=1 onchange='RendVisibleAutre(this.value)' name='reponse".$nbQuestion."'> ";
foreach ($lResult4 as $row4)
{

//affichage des reponse possible dasn option
$reponse=$row4['id_reponse'];

echo "\n".'<option value='.$row4['id_reponse'].'>';
echo $row4['intitule_reponse'];
//echo $reponse;
echo '</option>';
}
?>
<option value='autre'>autre</option></SELECT>



<p>
<div id="test" style="visibility:hidden;position:absolute;">
<input type="text" name='autre<?echo $i;?>'></div>
</p>


merci pour votre aide
0