sorte de formulaire

sorte de formulaire - PHP - Programmation

Marsh Posté le 21-10-2012 à 10:50:03    

Bonjour,
je débute en php.
J'aurais besoin d'aide pour un script vraiment tout bête pour une sorte de formulaire
 
voila, j'ai un arbre du genre  
je propose A ou B si l'internaute choisi A je propose A1 ou A2 ou A3
par exemple je vais dire
ton problème en informatique concerne.... "un ralentissement" etc etc
ensuite si l'internaute clique sur ralentissement je propose
"ton ordinateur est a jour?"
etc etc
 
par contre les questions ne seront pas toujours par oui ou par non
voila merci beaucoup de votre aide
j'espère avoir été clair.


Message édité par newbi1 le 22-10-2012 à 11:40:54
Reply

Marsh Posté le 21-10-2012 à 10:50:03   

Reply

Marsh Posté le 21-10-2012 à 11:16:27    

Hello

 

Recherche "formulaires multiples" sur internet : tu trouveras des exemples de scripts.

 

Il y a 2 optiques à considérer : soit tu mets dans la page html toutes les possibilités, avec changement via javascript, soit tu fais des allers-retours serveur pour traiter chaque choix et renvoyer un formulaire. (Il reste l'ajax, un hybride des 2 solutions, d'ailleurs)

 

Autrement, si tu n'as qu'un seul sous-niveau, et que les entrées du formulaire A ne sont pas très nombreuses, pourquoi ne pas considérer un seul formulaire avec des balises <optgroup> ? (Pareil, une petite recherche te donnera des exemples).


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 21-10-2012 à 11:43:31    

je sèche
 
je m'y connais a peu près bien en html seulement
et pour ce qui est trouver des script exemple j'ai un peu de mal ...

Reply

Marsh Posté le 21-10-2012 à 12:00:22    

si quelqu'un pouvait ne serait-ce que me donner un script, je n'arrive pas à en trouver et le peux que je trouve ne fonctionne pas :/

Reply

Marsh Posté le 22-10-2012 à 11:39:51    

En fait j'ai trouvé un script préfabriqué
le seul problème c'éest qu'il a deux niveau et j'aimerais un peu d'aide pour faire le troisième niveau
 
voici le fichier index.php

Code :
  1. <html>
  2. <head>
  3. <title>AFFICHER UNE LISTE DÉROULANTE EN FONCTION D'UNE AUTRE LISTE SANS RECHARGER LA PAGE OU PASSER L'INFORMATION PAR L'URL EN UTILISANT LA TECHNOLOGIE AJAX</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  5.     <script type="text/javascript">
  6. /**
  7.  * Permet d'envoyer des données en GET ou POST en utilisant les XmlHttpRequest
  8.  */
  9. function sendData(param, page)
  10. {
  11.  if(document.all)
  12.  {
  13.   //Internet Explorer
  14.   var XhrObj = new ActiveXObject("Microsoft.XMLHTTP" ) ;
  15.  }//fin if
  16.  else
  17.  {
  18.      //Mozilla
  19.   var XhrObj = new XMLHttpRequest();
  20.  }//fin else
  21.  //définition de l'endroit d'affichage:
  22.  var content = document.getElementById("contenu" );
  23.  XhrObj.open("POST", page);
  24.  //Ok pour la page cible
  25.  XhrObj.onreadystatechange = function()
  26.  {
  27.   if (XhrObj.readyState == 4 && XhrObj.status == 200)
  28.    content.innerHTML = XhrObj.responseText ;
  29.  }
  30.  XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  31.  XhrObj.send(param);
  32. }//fin fonction SendData
  33.     </script>
  34. </head>
  35. <body>
  36. <b>
  37. Créer par Hanini Yassine, Le 29/09/2005<br />
  38. <br />
  39. Cette page à pour but d'afficher une liste déroulante en foncion d'une autre liste sans recharger la page ou passer l'information par l'url en utilisant la technologie AJAX<br />
  40. <br />
  41. <a href="http://perso.wareteam.com/comment_demander_des_informations_au_serveur_sans_recharger_la_page-.php">http://perso.wareteam.com/comment_demander_des_informations_au_serveur_sans_recharger_la_page-.php</a><br />
  42. <br />
  43. </b>
  44. <?php
  45.    // Paramètres de la Connexion à la base MYSQL
  46.    $user="root";
  47.    $host="localhost";
  48.    $password="";
  49.    $database="base";
  50.    $i=0; // variable de test
  51.    $j=0; // variable pour garder la valeur du premier enregistrement catégorie pour l'affichage
  52.      
  53.    $connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible" );
  54.    
  55.    mysql_select_db($database,$connexion);
  56.    
  57.    // Séléction de tous les enregistrements de la table Catégorie
  58.    $rq="Select * from script_categorie order by designation;";
  59.    $result= mysql_query ($rq) or die ("Select impossible" );
  60.    echo "<form method='POST' action='valid.php'>";?>   <select size="1" name="cat" OnChange="sendData('id='+this.value,'liresc.php')" onKeyUp="sendData('id='+this.value,'liresc.php')">
  61. <?php   
  62.    while ($dt=mysql_fetch_row($result))
  63.    {
  64.     // Remplir la liste déroulante des catégorie  
  65. echo "<option value=".($dt[0]).">".($dt[1])."</option>";
  66.     if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
  67.    }
  68.    
  69.    ?>   
  70.    </select><br><br>
  71.  
  72.    <div id="contenu">
  73. <?php 
  74.   // affichage des sous-catégorie appartenant à la première catégorie.
  75.    echo "<select size='1' name='souscat'>"; 
  76.     $rq="Select * from script_sous_categorie where idcat=".$j." order by designation;";
  77.     $result= mysql_query ($rq) or die ("Select impossible" );
  78.      // $i = initialise le variable i
  79.     $i=0;
  80.     while ($dt=mysql_fetch_row($result))
  81.     {
  82.  echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[2])."</option><br>";
  83.     }   
  84. echo "</select>";
  85.    ?> 
  86.    </div>
  87. </form>
  88. </body>
  89. </html>


 
 
 
 
et le liresc.php

Code :
  1. <?php
  2. header('Content-type: text') ; // on déclare ce qui va être afficher
  3. // test des POST emis
  4. if(isset($_POST['id']) && !empty($_POST['id']) ){
  5.    $user="root";
  6.    $host="localhost";
  7.    $password="";
  8.    $database="base";
  9.    $connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible" ); 
  10.    mysql_select_db($database,$connexion);
  11.     $rq="Select * from script_sous_categorie where idcat=".$_POST['id']." order by designation;";
  12.     $result= mysql_query ($rq) or die ("Select impossible" );
  13.      // $i = initialise le variable i
  14.     $i=0;
  15. if (mysql_num_rows($result)>0)
  16. {
  17.   echo "<select size='1' name='souscat'>";
  18. }
  19. else
  20. {
  21.   echo utf8_encode("Pas de sous catégories disponible" );
  22. }
  23.     while ($dt=mysql_fetch_row($result))
  24.     {
  25.  echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[2])."</option><br>";
  26.     }   
  27. echo "</select>";
  28. }
  29. ?>


Message édité par newbi1 le 22-10-2012 à 19:35:55
Reply

Marsh Posté le 22-10-2012 à 17:24:24    

merci de mettre des balises [ code] pour ton message, c'est pas très lisible ...
et je n'arrive pas à ouvrir la source de ton lien ... Mais sinon il suffit de mettre un 3è SELECT dans l'absolu. Montre-nous ce que tu as fait.


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 22-10-2012 à 19:53:34    

NewsletTux a écrit :

merci de mettre des balises [ code] pour ton message, c'est pas très lisible ...
et je n'arrive pas à ouvrir la source de ton lien ... Mais sinon il suffit de mettre un 3è SELECT dans l'absolu. Montre-nous ce que tu as fait.


 
désolé pour les balises.
Pour le lien, c'est un vieux script que j'ai trouvé sur le net, et la page était fourni tel quel.
Bon j'ai éssayé de bidouiller mais j'obtiens "select impossible"
aussis j'ai pas compris pourquoi il n'y a qu'une seule balise </form>
 
bon voici les fichiers
 
index.php

Code :
  1. <html>
  2.  <head>
  3.   <title>AFFICHER UNE LISTE DÉROULANTE EN FONCTION D'UNE AUTRE LISTE SANS RECHARGER LA PAGE OU PASSER L'INFORMATION PAR L'URL EN UTILISANT LA TECHNOLOGIE AJAX
  4.   </title>
  5.   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  6.   <script type="text/javascript">
  7.    /**
  8.    * Permet d'envoyer des données en GET ou POST en utilisant les XmlHttpRequest
  9.    */
  10.    function sendData(param, page)
  11.    {
  12.    if(document.all)
  13.    {
  14.    //Internet Explorer
  15.    var XhrObj = new ActiveXObject("Microsoft.XMLHTTP" ) ;
  16.    }//fin if
  17.    else
  18.    {
  19.    //Mozilla
  20.    var XhrObj = new XMLHttpRequest();
  21.    }//fin else
  22.    //définition de l'endroit d'affichage:
  23.    var content = document.getElementById("contenu" );
  24.    XhrObj.open("POST", page);
  25.    //Ok pour la page cible
  26.    XhrObj.onreadystatechange = function()
  27.    {
  28.    if (XhrObj.readyState == 4 && XhrObj.status == 200)
  29.    content.innerHTML = XhrObj.responseText ;
  30.    }
  31.    XhrObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  32.    XhrObj.send(param);
  33.    }//fin fonction SendData
  34.   </script>
  35.  </head>
  36.  <body>
  37.  
  38. <?php
  39.        // Paramètres de la Connexion à la base MYSQL
  40.        $user="root";
  41.        $host="localhost";
  42.        $password="";
  43.        $database="base";
  44.        $i=0; // variable de test
  45.        $j=0; // variable pour garder la valeur du premier enregistrement catégorie pour l'affichage
  46.        
  47.        $connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible" );
  48.      
  49.        mysql_select_db($database,$connexion);
  50.      
  51.        // Séléction de tous les enregistrements de la table Catégorie
  52.        $rq="Select * from script_categorie order by designation;";
  53.        $result= mysql_query ($rq) or die ("Select impossible" );
  54.        echo "<form method='POST' action='valid.php'>";
  55. ?> 
  56.  
  57. <select size="1" name="cat" OnChange="sendData('id='+this.value,'liresc.php')" onKeyUp="sendData('id='+this.value,'liresc.php')">
  58.  
  59.    <?php 
  60.        while ($dt=mysql_fetch_row($result))
  61.        {
  62.         // Remplir la liste déroulante des catégorie   
  63.     echo "<option value=".($dt[0]).">".($dt[1])."</option>";
  64.         if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
  65.        }
  66.      
  67.     ?> 
  68. </select>
  69. <br><br>
  70.    
  71. <div id="contenu">
  72.     <?php
  73.       // affichage des sous-catégorie appartenant à la première catégorie.
  74.        echo "<select size='1' name='souscat'>";
  75.         $rq="Select * from script_sous_categorie where idcat=".$j." order by designation;";
  76.         $result= mysql_query ($rq) or die ("Select impossible" );
  77.          // $i = initialise le variable i
  78.         $i=0;
  79.         while ($dt=mysql_fetch_row($result))
  80.         {
  81.      echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[2])."</option><br>";
  82.         } 
  83.     echo "</select>";
  84.        ?>
  85. // BOUT DE CODE RAJOUTE ------------------------------------------------------------------------
  86. <select size="1" name="scat" OnChange="sendData('id='+this.value,'liresc.php')" onKeyUp="sendData('id='+this.value,'liresc.php')">
  87.  
  88.    <?php 
  89.        while ($dt=mysql_fetch_row($result))
  90.        {
  91.         // Remplir la liste déroulante des catégorie   
  92.     echo "<option value=".($dt[0]).">".($dt[1])."</option>";
  93.         if ($i==0) { $j=$dt[0]; $i=1; } // garder la valeur du premier enregistrement
  94.        }
  95.      
  96.     ?> 
  97. </select>
  98. <br><br>
  99.    
  100. <div id="scontenu">
  101.     <?php
  102.       // affichage des sous-catégorie appartenant à la première catégorie.
  103.        echo "<select size='1' name='ssouscat'>";
  104.         $rq="Select * from sscat where idcat=".$j." order by designation;";
  105.         $result= mysql_query ($rq) or die ("Select impossible" );
  106.          // $i = initialise le variable i
  107.         $i=0;
  108.         while ($dt=mysql_fetch_row($result))
  109.         {
  110.      echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[2])."</option><br>";
  111.         } 
  112.     echo "</select>";
  113.        ?>
  114. </div>
  115. </form>
  116.     </body>
  117.     </html>


 
et liresc.php

Code :
  1. <?php
  2. header('Content-type: text') ; // on déclare ce qui va être afficher
  3. // test des POST emis
  4. if(isset($_POST['id']) && !empty($_POST['id']) ){
  5.    $user="root";
  6.    $host="localhost";
  7.    $password="";
  8.    $database="base";
  9.    $connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible" ); 
  10.    mysql_select_db($database,$connexion);
  11.     $rq="Select * from script_sous_categorie where idcat=".$_POST['id']." order by designation;";
  12.     $result= mysql_query ($rq) or die ("Select impossible" );
  13.      // $i = initialise le variable i
  14.     $i=0;
  15. if (mysql_num_rows($result)>0)
  16. {
  17.   echo "<select size='1' name='souscat'>";
  18. }
  19. else
  20. {
  21.   echo utf8_encode("Pas de sous catégories disponible" );
  22. }
  23.     while ($dt=mysql_fetch_row($result))
  24.     {
  25.  echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[2])."</option><br>";
  26.     }   
  27. echo "</select>";
  28. }
  29. ?>
  30. // BOUT DE CODE RAJOUTE ------------------------------------------------
  31. <?php
  32. header('Content-type: text') ; // on déclare ce qui va être afficher
  33. // test des POST emis
  34. if(isset($_POST['id']) && !empty($_POST['id']) ){
  35.    $user="root";
  36.    $host="localhost";
  37.    $password="";
  38.    $database="base";
  39.    $connexion = mysql_connect($host,$user,$password) or die ("Connexion au serveur impossible" ); 
  40.    mysql_select_db($database,$connexion);
  41.     $rq="Select * from sscat where idcat=".$_POST['id']." order by designation;";
  42.     $result= mysql_query ($rq) or die ("Select impossible" );
  43.      // $i = initialise le variable i
  44.     $i=0;
  45. if (mysql_num_rows($result)>0)
  46. {
  47.   echo "<select size='1' name='ssouscat'>";
  48. }
  49. else
  50. {
  51.   echo utf8_encode("Pas de sous catégories disponible" );
  52. }
  53.     while ($dt=mysql_fetch_row($result))
  54.     {
  55.  echo "<option value=".utf8_encode($dt[0]).">".utf8_encode($dt[2])."</option><br>";
  56.     }   
  57. echo "</select>";
  58. }
  59. ?>


 
C'est du travail de boucher xD
 
ma table c'est "sscat"


Message édité par newbi1 le 22-10-2012 à 19:56:05
Reply

Marsh Posté le 24-10-2012 à 17:24:54    

tu peux afficher le contenu de la requête en question pour voir si ton $_POST est bien récupéré ?


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 25-10-2012 à 09:52:47    

en fait voilà
j'ai voulu laisser tomber la première méthode pour utiliser du code que je comprend.
 
Du coup j'ai changé le principe
le principe maintenant c'est de faire un formulaire basique
et d'envoyer $_POST sur la même page
la page sera raffraichie et en fonction de la valeur j'affiche tel ou tel second formulaire
 
mais j'ai un problème
voici mon code

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  3. <head>
  4.  <title>Page protégée par mot de passe</title>
  5.  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  6. </head>
  7. <body>
  8.  <form action="index.php" method="post">
  9. <select name="A">
  10. <option value="A1">A1</option>
  11. <option value="A2">A2</option>
  12. <option value="A3">A3</option>
  13. </select></br>
  14.   <input type="submit" value="Continuer" />
  15. </form>
  16. <?php
  17. if (!isset ($_POST['A']))
  18. { echo"veuillez remplir le formulaire"}
  19. //elseif (isset ($_POST['A']) AND $_POST['A']="A1" )
  20. //{echo "vous avez choisi A1"};
  21. // if($_POST['A']="A1" )
  22.  // { echo"A1"};
  23.  //if($_POST['A']="A2" )
  24.   //{ echo"A2"};
  25. // if($_POST['A']="A3" )
  26. //  { echo"A3"};
  27. //}
  28. ?>
  29. </body>
  30. </html>


Message édité par newbi1 le 25-10-2012 à 10:26:08
Reply

Marsh Posté le 25-10-2012 à 11:31:04    

bon j'y ai travaillé et j'ai réussi
 
voici mon code

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  3. <head>
  4.  <title>Page protégée par mot de passe</title>
  5.  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  6. </head>
  7. <body>
  8. <form action="index.php" method="post">
  9. <?php
  10. if (!isset ($_POST['A']))
  11. {
  12. echo "Votre doute concerne..."; ?>
  13. </br><select name="A">
  14. <option value="fake">choisissez</option>
  15. <option value="A1">teeeeeeeeest</option>
  16. <option value="A2">argn</option>
  17. </select></br>
  18. <?php}
  19. elseif (isset ($_POST['A']) AND $_POST['A']=="A1" )
  20. { $_POST['AA'] = NULL ?>
  21. <select name="AA">
  22. <option value="AA1">bloup</option>
  23. <option value="AA2">fiou</option>
  24. </select></br>
  25. <?php }
  26. elseif (isset ($_POST['A']) AND $_POST['A']=="A2" )
  27. { $_POST['AB'] = NULL?>
  28. <select name="AB">
  29. <option value="AB1">j'ai fait un ajout</option>
  30. <option value="AB2">j'ai fait un oubli</option>
  31. </select></br>
  32. <?php }
  33. ?>
  34.   </br><input type="submit" value="Continuer" />
  35. </form>
  36. </body>
  37. </html>


 
Le problème c'est que la deuxième liste "bloup, fiou" est affiché par défault :/
comment l'affiché seulement après avoir renseigné le formulaire?


Message édité par newbi1 le 25-10-2012 à 11:31:25
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed