[PHP/Mysql] Lier deux formulaires ...

Lier deux formulaires ... [PHP/Mysql] - PHP - Programmation

Marsh Posté le 03-01-2004 à 01:00:46    

Je ne sais pas si c'est possible, mais je tente qd meme,
voila j'ai un formulaire, connecté a une basedd sql
ce que je veux c'est que lorsqu'une ligne d'un formulaire est séléctionné, elle puisse agir sur la seconde, voyez lexemple il est parlant ...
 
http://membres.lycos.fr/zeprodigy/form.jpg
 
 

Code :
  1. ...<form method="post" action="action.php">
  2. <select name="client">Choissiez votre option:
  3. <?php
  4. $connexion = mysql_connect("localhost","root","" );
  5. mysql_select_db("test",$connexion);
  6. $requete = "SELECT nom FROM client";
  7. $liste = mysql_query($requete);
  8. while($row = mysql_fetch_row($liste)) {
  9.          print "\t\t<option>".($row[0])."\n";
  10. }
  11. ?>
  12. </select>
  13. </form>
  14. ...

Reply

Marsh Posté le 03-01-2004 à 01:00:46   

Reply

Marsh Posté le 03-01-2004 à 01:40:56    

c vraiment pas possible ?

Reply

Marsh Posté le 03-01-2004 à 01:45:43    

c'est pas un prob php mais un prob html/js

Reply

Marsh Posté le 03-01-2004 à 01:50:00    

Ayuget a écrit :

c'est pas un prob php mais un prob html/js


 
'fin, oui et non, s'il veut que la deuxième liste n'affiche que des solutions possibles en rapport avec la première, ce sera lourd à faire en js...
 
Voir le remote scripting peut être, je vois que ça

Reply

Marsh Posté le 03-01-2004 à 01:57:49    

je vois pas comment il pourrait sans recharger sa page, changer comme ca les valeurs de son select sans JS et avoir récupéré toutes les infos d'un coup.

Reply

Marsh Posté le 03-01-2004 à 02:02:43    

idem, jvois pas non plus, pourtant il  me semble avoir déjà vu ca quelques part

Reply

Marsh Posté le 03-01-2004 à 02:05:59    

Ayuget a écrit :

je vois pas comment il pourrait sans recharger sa page, changer comme ca les valeurs de son select sans JS et avoir récupéré toutes les infos d'un coup.


 
J'ai pas dit sans js non plus, le remote scripting (parce que y a que ça qui pourrait le faire sans tout recharger) est du dhtml, et utilise donc le javascript

Reply

Marsh Posté le 03-01-2004 à 02:11:04    

oki :jap:
mais je demande a voir ;)

Reply

Marsh Posté le 03-01-2004 à 02:24:23    

Je mets un exemple basique dès que je peux (y a juste que le js et moi n'avons jamais été ami :D)

Reply

Marsh Posté le 03-01-2004 à 02:28:51    

naceroth a écrit :

Je mets un exemple basique dès que je peux (y a juste que le js et moi n'avons jamais été ami :D)


 
ca serait sympa ouais  :hello:

Reply

Marsh Posté le 03-01-2004 à 02:28:51   

Reply

Marsh Posté le 03-01-2004 à 02:56:47    

the_prodigy a écrit :


ca serait sympa ouais


 
Bon, c'est vachement basique comme exemple, j'utilise 3 fichiers :
 
remote_index.html :

Code :
  1. <html>
  2. <frameset rows="0,100%" border="0">
  3. <frame name="RemoteScripting" src="blank.html">
  4. <frame name="formulaire" src="remote.html">
  5. <noframes>
  6. <body>
  7. Pas de frames !
  8. </body>
  9. </noframes>
  10. </frameset>
  11. </html>


 
remote.html (celui qui contient le formulaire donc)
 

Code :
  1. <html>
  2. <head>
  3. <title>test du remote scripting</title>
  4. <script language="javascript">
  5. function TraiteReponse(valeur) {
  6. nouvel_element = new Option(valeur,0);
  7. document.fiche.titre.options[document.fiche.titre.length] = nouvel_element;
  8. }
  9. </script>
  10. </head>
  11. <body>
  12. <form name="fiche" action="remote.php" method="post" target="RemoteScripting">
  13. <select name="id" onChange="fiche.submit();">
  14. <option value="0">liste 1</option>
  15. <option value="1">liste 2</option>
  16. </select><br><br>
  17. <select name="titre">
  18. </select>
  19. </form>
  20. </body>
  21. </html>


 
et remote.php qui doit renvoyer le résultat :
 

Code :
  1. <?php
  2. mysql_connect('localhost','root','');
  3. mysql_select_db('ma_base');
  4. $query = mysql_query('select titre from ma_table where id_parent = '.$_POST['id']);
  5. $result = mysql_fetch_array($query);
  6. ?>
  7. <script language="JavaScript">
  8. top.formulaire.TraiteReponse('<?php echo $result['titre']; ?>');
  9. </script>


 
ça peut sûrement facilement s'améliorer, mais ça explique le concept : ne faire rechager par le serveur que la partie de la page qui doit être rechargée (la deuxième liste donc :))


Message édité par naceroth le 03-01-2004 à 03:04:53
Reply

Marsh Posté le 03-01-2004 à 03:46:22    

merci pour ton aide :) !
mais est ce que ces scripts apres modif, me permette davoir ce que je cherchais ... :??:

Reply

Marsh Posté le 03-01-2004 à 04:18:01    

Si j'ai bien compris la question (un changement dans la liste 1 doit modifier dynamiquement le contenu de la deuxième liste), oui.
 
Faut modifier remote.php pour qu'il lise tous les résultats (au lieu d'un seul actuellement) et modifier le javascript de remote.html pour qu'il vide la liste quand tu changes le choix dans la liste 1.
 
Mais sinon, le principe du remote scripting est là, et ça réponds à ta question :)

Reply

Marsh Posté le 03-01-2004 à 05:04:42    

naceroth a écrit :

Si j'ai bien compris la question (un changement dans la liste 1 doit modifier dynamiquement le contenu de la deuxième liste), oui.
 
Faut modifier remote.php pour qu'il lise tous les résultats (au lieu d'un seul actuellement) et modifier le javascript de remote.html pour qu'il vide la liste quand tu changes le choix dans la liste 1.
 
Mais sinon, le principe du remote scripting est là, et ça réponds à ta question :)


 
la premiere liste affiche le resultat de la requete :

Code :
  1. $requete=mysql_db_query('SELECT nom FROM client');


 
la deuxieme affiche en conséquence la valeur

Code :
  1. $requete2=mysql_db_query('SELECT prenom FROM client');


 
 
en liste 1 on selectionne le nom
et en liste 2 on obtient le prénom ..
 
javoue g du mal a relier les deux bouts


Message édité par the_Prodigy le 03-01-2004 à 05:05:03
Reply

Marsh Posté le 03-01-2004 à 16:41:35    

Bon, on va le reprendre au ralenti parce que j'ai peur de ne pas avoir compris la question :/
 
Tu veux que dans la liste 2 apparaisse tous les prénoms correspondant au nom choisi dans la liste 1 (auquel vas il manque un WHERE dans $requete2) ou que l'unique prénom correspondant au nom de la liste 1 apparaisse automatiquement ? (auquel cas faire 2 select est un peu se compliquer la vie, pourquoi pas un <option>CHIRAC, Jacques</option> ?)

Reply

Marsh Posté le 03-01-2004 à 18:24:04    

naceroth a écrit :

Bon, on va le reprendre au ralenti parce que j'ai peur de ne pas avoir compris la question :/
 
Tu veux que dans la liste 2 apparaisse tous les prénoms correspondant au nom choisi dans la liste 1 (auquel vas il manque un WHERE dans $requete2) ou que l'unique prénom correspondant au nom de la liste 1 apparaisse automatiquement ? (auquel cas faire 2 select est un peu se compliquer la vie, pourquoi pas un <option>CHIRAC, Jacques</option> ?)


 
pourquoi pas un <option>CHIRAC, Jacques</option>, simplement parce que ces deux valeurs, sont dans un base de donnée.
 
... g peut etre mal expliké .:/

Reply

Marsh Posté le 03-01-2004 à 20:17:14    

je vois bien qu'elles sont dans une bd, mais d'après tes requêtes, elles sont dans la même :)
 
tu peux faire

Code :
  1. $requete = "SELECT nom, prenom FROM client";
  2. $liste = mysql_query($requete);
  3.  
  4. while($row = mysql_fetch_array($liste)) {
  5.     print "\t\t<option>".strtoupper($row['nom']).', '.$row['prenom']."</option>\n";
  6. }


 
ou je comprends de moins en moins ? :)

Reply

Sujets relatifs:

Leave a Replay

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