Votre question

liste déroulante php mysql

Tags :
  • MySQL
  • Php
  • Programmation
Dernière réponse : dans Programmation
11 Mai 2012 23:47:42

Bonsoir le forum,
je me permet de faire appel à vos connaissances afin de m’éclairer sur un problème que je ne parvient pas à résoudre.

J'ai une base de donnée avec des client et j'aimerais bien faire une page qui me permet d’éditer la fiche d'un client en recherchant par noms.
j'ai un formulaire qui resemble à cela mais ne fonctionne pas :
http://

Cela me permet d'afficher les noms de mes clients et de cliquer sur rechercher afin de'afficher la fiche dans une page edit_client.php
le problème, c'est qu'il faut que le lien qui ouvre varie en fonction du n° de client ex :edit_client.php?num=430

en sachant que que ma table est : client
mon champ numéro de client : num_client

je vous place le code de ma page avec le menu.
  1. <?php
  2.  
  3. require_once("include/verif.php");
  4. include_once("include/config/common.php");
  5. include_once("include/language/$lang.php");
  6. include_once("include/utils.php");
  7. include_once("include/headers.php");?>
  8.  
  9. <?php
  10. include_once("include/finhead.php");
  11. ?>
  12. <table width="760" border="0" class="page" align="center">
  13. <tr>
  14. <td class="page" align="center">
  15. <?php
  16. include_once("include/head.php");
  17. ?>
  18. </td>
  19. </tr>
  20. <tr>
  21. <td class="page" align="center">
  22. <?php
  23.  
  24.  
  25. $Sql = " SELECT * FROM " . $tblpref ."client WHERE num_client='$num'";
  26. if ($user_com == r) {
  27. $Sql = "SELECT num_client, nom FROM " . $tblpref ."client
  28. WHERE " . $tblpref ."client.permi LIKE '$user_num,'
  29. or " . $tblpref ."client.permi LIKE '%,$user_num,'
  30. or " . $tblpref ."client.permi LIKE '%,$user_num,%'
  31. or " . $tblpref ."client.permi LIKE '$user_num,%'
  32. ";
  33. }
  34. ?>
  35. <form name="formu" method="post" action="edit_client.php?num=<?php echo "$num" ?>">
  36. <center><table >
  37. <caption><?php echo $lang_chercher_cli; ?></caption>
  38. <tr>
  39. <td class="texte1">
  40. <?php echo $lang_client; ?></td><td class="texte1">
  41. <?php
  42. require_once("include/configav.php");
  43. if ($liste_cli!='y') {
  44. $rqSql="$rqSql order by nom";
  45. $result = mysql_query( $rqSql ) or die( "Exécution requête impossible.");
  46. ?>
  47. <SELECT NAME='listeville'>
  48. <OPTION VALUE='null'><?php echo $lang_choisissez; ?></OPTION>
  49. <?php
  50. while ( $row = mysql_fetch_array( $result)) {
  51. $numclient = $row["num_client"];
  52. $nom = $row["nom"];
  53. ?>
  54. <OPTION VALUE='<?php echo $numclient; ?>'><?php echo $nom; ?></OPTION>
  55. <?php
  56. }
  57. ?>
  58. </SELECT>
  59. <?php }else{ ?>
  60. <script type="text/javascript" src="javascripts/montrer_cacher.js"></script>
  61.  
  62. <?php
  63. include_once("include/choix_cli.php");
  64. } ?>
  65. <tr>
  66. </td>
  67. </tr>
  68. <tr>
  69. </td>
  70. </tr>
  71. <tr>
  72. </td>
  73. </tr>
  74. <tr>
  75. </td>
  76. </tr>
  77. <tr>
  78. </td>
  79. <tr>
  80. <td class="submit" colspan="2"> <input type="submit" name="submit" value=<?php echo $lang_rech ?>>
  81. </td>
  82. </tr>
  83. </tr>
  84.  
  85. </table></center></form>
  86. </td></tr><tr><td>
  87. <?php
  88. include("help.php");
  89. echo"</td></tr><tr><td>";
  90. include_once("include/bas.php");
  91. ?>
  92. </td></tr>
  93. </table>
  94. </body>
  95. </html>


Merci pour votre aide

Autres pages sur : liste deroulante php mysql

a c 232 L Programmation
12 Mai 2012 11:43:57

Salut,

Je comprends pas bien ce que tu essaies de faire en passant un num dans l'URL de l'action ?

Et là tu ne nous as passé qu'un formulaire, mais pas la page qui traitait les données il me semble ?
m
0
l
12 Mai 2012 11:58:47

pour faire simple, voici le lien de ma page :

http://autocleanconcept.be/facturier/chercher_cli.php

login : admin
mp : admin

allez sur l'onglet client, cliquez sur rechercher puis sur le bouton rechercher.

Dans la page http://autocleanconcept.be/facturier/edit_client.php il est censé avoir les info du client
en fait, le bouton rechercher m'envoi bien sur la bonne page mais ne me place pas le ?num=1 derrière le ".php"

la page qui est normalement demandé pour le client 1 est http://autocleanconcept.be/facturier/edit_client.php?nu...
La page qui est normalement demandé pour le client 2 est http://autocleanconcept.be/facturier/edit_client.php?nu...

Voila, j'esspere que cela est plus claire car il est vrai que ce n'est pas évident à expliquer.
m
0
l
Contenus similaires
12 Mai 2012 12:17:13

En fait, je pense que j'ai trouvé d'ou vient le probleme.

il me retourne bien sur la page http://autocleanconcept.com/facturier/edit_client.php?n...
mais ne m'affiche pas le n° du client derierre.

en fait, dans ma page je pense qu'il me manque l'info qui va chercher dans la base de donné le n° de client lié au client

j'ai bien cela : <form name="formu" method="post" action="edit_client.php?num=<?php echo "$num" ?>">
mais le $num ne me donne pas le numéro de client.

si je change le code en <form name="formu" method="post" action="edit_client.php?num=<?php echo "1" ?>">
il m'affiche bien le client 1 quand je recherche.

comme faire pour que le $num soit associé au n° de client ?

m
0
l
a c 232 L Programmation
12 Mai 2012 12:20:17

Bah c'est normal ça. Tu essaies de passer une valeur de formulaire alors que tu n'as pas validé le formulaire.

Il faut que tu mettes ton formulaire en method GET, et que tu appelles ton select "num" pour récupérer la valeur dans l'URL.
m
0
l
12 Mai 2012 12:26:17

j'ai appliqué la method GET et maintenant il me retourne cela comme adresse quand je clique sur rechercher:
http://autocleanconcept.com/facturier/edit_client.php?l...

le 452 dans l'adresse est bien le bon n° de client que j'ai choisis pourtant

Comment fait on pour appeler le select "num" ?
m
0
l
12 Mai 2012 12:36:51

je remarque que dans mon code j'ai un <SELECT NAME='listeville'> qui apparaît.

En sachant que dans ma base de donnée mon champ n° de client est num_client comment faire pour changer cela ?

code de ma page recher_cli.php :

  1. <?php
  2. /*
  3.  * Factux le facturier libre
  4.  * Copyright (C) 2003-2004 Guy Hendrickx
  5.  *
  6.  * Licensed under the terms of the GNU General Public License:
  7.  * http://www.opensource.org/licenses/gpl-license.php
  8.  *
  9.  * For further information visit:
  10.  * http://factux.sourceforge.net
  11.  *
  12.  * File Name: chercher_factures.php
  13.  * formulaire de recherche des factures
  14.  *
  15.  * * * Version: 1.1.5
  16.  * * * * Modified: 23/07/2005
  17.  *
  18.  * File Authors:
  19.  * Guy Hendrickx
  20.  *.
  21.  */
  22. require_once("include/verif.php");
  23. include_once("include/config/common.php");
  24. include_once("include/language/$lang.php");
  25. include_once("include/utils.php");
  26. include_once("include/headers.php");?>
  27.  
  28. <?php
  29. include_once("include/finhead.php");
  30. ?>
  31. <table width="760" border="0" class="page" align="center">
  32. <tr>
  33. <td class="page" align="center">
  34. <?php
  35. include_once("include/head.php");
  36. ?>
  37. </td>
  38. </tr>
  39. <tr>
  40. <td class="page" align="center">
  41. <?php
  42.  
  43.  
  44. $Sql = " SELECT * FROM " . $tblpref ."client WHERE num_client='$num'";
  45. if ($user_com == r) {
  46. $Sql = "SELECT num_client, nom FROM " . $tblpref ."client
  47. WHERE " . $tblpref ."client.permi LIKE '$user_num,'
  48. or " . $tblpref ."client.permi LIKE '%,$user_num,'
  49. or " . $tblpref ."client.permi LIKE '%,$user_num,%'
  50. or " . $tblpref ."client.permi LIKE '$user_num,%'
  51. ";
  52. }
  53. ?>
  54. <form name="formu" method="GET" action="edit_client.php?num=<?php echo "$num" ?>">
  55. <center><table >
  56. <caption><?php echo $lang_chercher_cli; ?></caption>
  57. <tr>
  58. <td class="texte1">
  59. <?php echo $lang_client; ?></td><td class="texte1">
  60. <?php
  61. require_once("include/configav.php");
  62. if ($liste_cli!='y') {
  63. $rqSql="$rqSql order by nom";
  64. $result = mysql_query( $rqSql ) or die( "Exécution requête impossible.");
  65. ?>
  66. <SELECT NAME='listeville'>
  67. <OPTION VALUE='null'><?php echo $lang_choisissez; ?></OPTION>
  68. <?php
  69. while ( $row = mysql_fetch_array( $result)) {
  70. $numclient = $row["num_client"];
  71. $nom = $row["nom"];
  72. ?>
  73. <OPTION VALUE='<?php echo $numclient; ?>'><?php echo $nom; ?></OPTION>
  74. <?php
  75. }
  76. ?>
  77. </SELECT>
  78. <?php }else{ ?>
  79. <script type="text/javascript" src="javascripts/montrer_cacher.js"></script>
  80.  
  81. <?php
  82. include_once("include/choix_cli.php");
  83. } ?>
  84. <tr>
  85.  
  86. </td>
  87. </tr>
  88. <tr>
  89. </td>
  90. </tr>
  91. <tr>
  92. </td>
  93. </tr>
  94. <tr>
  95. </td>
  96. </tr>
  97. <tr>
  98. </td>
  99. <tr>
  100. <td class="submit" colspan="2"> <input type="submit" name="submit" value=<?php echo $lang_rech ?>>
  101. </td>
  102. </tr>
  103. </tr>
  104.  
  105. </table></center></form>
  106. </td></tr><tr><td>
  107. <?php
  108. include("help.php");
  109. echo"</td></tr><tr><td>";
  110. include_once("include/bas.php");
  111. ?>
  112. </td></tr>
  113. </table>
  114. </body>
  115. </html>
m
0
l
a c 232 L Programmation
12 Mai 2012 12:38:54

Il faut mettre <select name="num">

Ou sinon, tu lieu de récupérer la valeur $num, il faut récupérer la valeur $listeville
m
0
l
12 Mai 2012 15:33:10

ne me faut il pas un truc dans le genre dans mon code pour que cela fonctionne ?

while($data = mysql_fetch_array($req))
{
$num_client =$data['num_client'];

et si oui, où le placer ?
m
0
l
12 Mai 2012 15:34:22

non, sorry

plutot comme cela

while($data = mysql_fetch_array($req))
{
$num =$data['num_client'];
m
0
l
a c 232 L Programmation
12 Mai 2012 16:35:02

Avec un select name="num" c'est impossible que tu aies un paramètre listeville.
fais voir le code
m
0
l
12 Mai 2012 16:57:16

  1. <?php
  2. /*
  3.  * Factux le facturier libre
  4.  * Copyright (C) 2003-2004 Guy Hendrickx
  5.  *
  6.  * Licensed under the terms of the GNU General Public License:
  7.  * http://www.opensource.org/licenses/gpl-license.php
  8.  *
  9.  * For further information visit:
  10.  * http://factux.sourceforge.net
  11.  *
  12.  * File Name: chercher_factures.php
  13.  * formulaire de recherche des factures
  14.  *
  15.  * * * Version: 1.1.5
  16.  * * * * Modified: 23/07/2005
  17.  *
  18.  * File Authors:
  19.  * Guy Hendrickx
  20.  *.
  21.  */
  22. require_once("include/verif.php");
  23. include_once("include/config/common.php");
  24. include_once("include/language/$lang.php");
  25. include_once("include/utils.php");
  26. include_once("include/headers.php");?>
  27.  
  28. <?php
  29. include_once("include/finhead.php");
  30. ?>
  31. <table width="760" border="0" class="page" align="center">
  32. <tr>
  33. <td class="page" align="center">
  34. <?php
  35. include_once("include/head.php");
  36. ?>
  37. </td>
  38. </tr>
  39. <tr>
  40. <td class="page" align="center">
  41. <?php
  42.  
  43.  
  44. $Sql = " SELECT * FROM " . $tblpref ."client WHERE num_client='$num'";
  45. if ($user_com == r) {
  46. $Sql = "SELECT num_client, nom FROM " . $tblpref ."client
  47. WHERE " . $tblpref ."client.permi LIKE '$user_num,'
  48. or " . $tblpref ."client.permi LIKE '%,$user_num,'
  49. or " . $tblpref ."client.permi LIKE '%,$user_num,%'
  50. or " . $tblpref ."client.permi LIKE '$user_num,%'
  51. ";
  52. }
  53. ?>
  54. <form name="formu" method="GET" action="edit_client.php?num=<?php echo "$num" ?>">
  55. <center><table >
  56. <caption><?php echo $lang_chercher_cli; ?></caption>
  57. <tr>
  58. <td class="texte1">
  59. <?php echo $lang_client; ?></td><td class="texte1">
  60. <?php
  61. require_once("include/configav.php");
  62. if ($liste_cli!='y') {
  63. $rqSql="$rqSql order by nom";
  64. $result = mysql_query( $rqSql ) or die( "Exécution requête impossible.");
  65. ?>
  66. <select name="num">
  67. <OPTION VALUE='null'><?php echo $lang_choisissez; ?></OPTION>
  68. <?php
  69. while ( $row = mysql_fetch_array( $result)) {
  70. $numclient = $row["num_client"];
  71. $nom = $row["nom"];
  72. ?>
  73. <OPTION VALUE='<?php echo $numclient; ?>'><?php echo $nom; ?></OPTION>
  74. <?php
  75. }
  76. ?>
  77. </SELECT>
  78. <?php }else{ ?>
  79. <script type="text/javascript" src="javascripts/montrer_cacher.js"></script>
  80.  
  81. <?php
  82. include_once("include/choix_cli.php");
  83. } ?>
  84. <tr>
  85.  
  86. </td>
  87. </tr>
  88. <tr>
  89. </td>
  90. </tr>
  91. <tr>
  92. </td>
  93. </tr>
  94. <tr>
  95. </td>
  96. </tr>
  97. <tr>
  98. </td>
  99. <tr>
  100. <td class="submit" colspan="2"> <input type="submit" name="submit" value=<?php echo $lang_rech ?>>
  101. </td>
  102. </tr>
  103. </tr>
  104.  
  105. </table></center></form>
  106. </td></tr><tr><td>
  107. <?php
  108. include("help.php");
  109. echo"</td></tr><tr><td>";
  110. include_once("include/bas.php");
  111. ?>
  112. </td></tr>
  113. </table>
  114. </body>
  115. </html>


pourtant j'ai bien cela qui me revient :

edit_client.php?listepays=p0&listeville=1&submit=Rechercher
m
0
l
a c 232 L Programmation
12 Mai 2012 17:11:26

Supprime le ?num=<?php echo "$num" ?> dans le action du formulaire.

Et c'est que tu n'as pas mis à jour sur le site, ou que les include qu'il y a insère d'autres formulaires qu'on ne voit pas là...
m
0
l
12 Mai 2012 17:37:24

j'ai supprimé le ?num=<?php echo "$num" ?> dans l'action du formulaire

et rien qui change.
edit_client.php?listepays=p0&listeville=1&submit=Rechercher

j'ai effectivement include/choix_cli.php qui comporte des listeville et listepays

  1. <script type="text/javascript">
  2. var pays = new Array;
  3. var ville=new Array;
  4.  
  5. <?php
  6. $sql1="SELECT SUBSTRING(nom, 1, 1)as lettre FROM `" . $tblpref ."client` WHERE actif != 'non'GROUP by SUBSTRING(nom, 1, 1)";
  7. $req2 = mysql_query($sql1) or die('Erreur SQL !<br>'.$sql1.'<br>'.mysql_error());
  8. while($data6 = mysql_fetch_array($req2)){
  9. $initiale=$data6['lettre'];
  10. $lettre[]=$initiale;
  11. }
  12.  
  13. $l=0;
  14. foreach ($lettre as $value) {
  15. echo"pays[$l] = new Array( \"p$l\",\"$value\");";
  16. echo"ville[\"p$l\"] = new Array;";
  17. $rqSql2 ="$rqSql AND `nom` LIKE '$value%' ORDER BY NOM";
  18. $req = mysql_query($rqSql2) or die('Erreur SQL !<br>'.$rqSql2.'<br>'.mysql_error());
  19. $v=0;
  20. while($data = mysql_fetch_array($req))
  21. {
  22.  
  23. $nom= addslashes($data['nom']);
  24. echo"ville[\"p$l\"][\"$v\"]= new Array(\"$data[num_client]\", \" $nom \");";
  25.  
  26. $v=$v+1;
  27. }
  28. $l=$l+1;
  29. }
  30. ?>
  31. function filltheselect(liste, choix)
  32. {switch (liste)
  33. {
  34. case "listepays":
  35. raz("listeville");
  36. //raz("listerue");
  37. for (i=0; i<ville[choix].length; i++)
  38. {
  39. new_option = new Option(ville[choix][i][1],ville[choix][i][0]);
  40. document.formu.elements["listeville"].options[document.formu.elements["listeville"].length]=new_option;
  41. }
  42.  
  43. break;
  44. }
  45. }
  46.  
  47. function raz(liste)
  48. {l=document.formu.elements[liste].length;
  49. for (i=l; i>=0; i--)
  50. document.formu.elements[liste].options[i]=null;
  51. }
  52. </script>
  53.  
  54. <select class="OPTION" ID="cluster" name="listepays" onChange='javascript:filltheselect(this.name, this.value)'>
  55. <script type="text/javascript">
  56. for (i=0; i<pays.length; i++)
  57. document.write("<option value=\"" +pays[i][0]+ "\">" +pays[i][1]);
  58. </script>
  59. </select>
  60.  
  61. <select class="OPTION" ID="cluster2"name="listeville" onChange='javascript:filltheselect(this.name, this.value)'>
  62. <script type="text/javascript">
  63. for (i=0; i<ville["p0"].length; i++)
  64. document.write("<option value=\"" +ville["p0"][i][0]+ "\">" +ville["p0"][i][1]);
  65. </script>
  66. </select>


si je supprime l'include choix_client.php je n'ai plus les noms de client dans la liste de mon formulaire
m
0
l
12 Mai 2012 18:38:11

j'ai créer une page choix_cli2.php et changer l'include de ma page chercher_cli.php

j'essaye de modifier le code de la page choix_cli2 afin qu'il ne m'affiche plus listeville et listepays.

un moment, j'ai su afficher le n° de client comme il faut mais alors ma liste de choix ne fonctionne plus.

y connais tu quelques chose dans ce code ?

  1. <script type="text/javascript">
  2. var pays = new Array;
  3. var ville=new Array;
  4.  
  5. <?php
  6. $sql1="SELECT SUBSTRING(nom, 1, 1)as lettre FROM `" . $tblpref ."client` WHERE actif != 'non'GROUP by SUBSTRING(nom, 1, 1)";
  7. $req2 = mysql_query($sql1) or die('Erreur SQL !<br>'.$sql1.'<br>'.mysql_error());
  8. while($data6 = mysql_fetch_array($req2)){
  9. $initiale=$data6['lettre'];
  10. $lettre[]=$initiale;
  11. }
  12.  
  13. $l=0;
  14. foreach ($lettre as $value) {
  15. echo"pays[$l] = new Array( \"p$l\",\"$value\");";
  16. echo"ville[\"p$l\"] = new Array;";
  17. $rqSql2 ="$rqSql AND `nom` LIKE '$value%' ORDER BY NOM";
  18. $req = mysql_query($rqSql2) or die('Erreur SQL !<br>'.$rqSql2.'<br>'.mysql_error());
  19. $v=0;
  20. while($data = mysql_fetch_array($req))
  21. {
  22.  
  23. $nom= addslashes($data['nom']);
  24. echo"ville[\"p$l\"][\"$v\"]= new Array(\"$data[num_client]\", \" $nom \");";
  25.  
  26. $v=$v+1;
  27. }
  28. $l=$l+1;
  29. }
  30. ?>
  31. function filltheselect(liste, choix)
  32. {switch (liste)
  33. {
  34. case "listepays":
  35. raz("listeville");
  36. //raz("listerue");
  37. for (i=0; i<ville[choix].length; i++)
  38. {
  39. new_option = new Option(ville[choix][i][1],ville[choix][i][0]);
  40. document.formu.elements["listeville"].options[document.formu.elements["listeville"].length]=new_option;
  41. }
  42.  
  43. break;
  44. }
  45. }
  46.  
  47. function raz(liste)
  48. {l=document.formu.elements[liste].length;
  49. for (i=l; i>=0; i--)
  50. document.formu.elements[liste].options[i]=null;
  51. }
  52. </script>
  53.  
  54. <select class="OPTION" ID="cluster" name="listepays" onChange='javascript:filltheselect(this.name, this.value)'>
  55. <script type="text/javascript">
  56. for (i=0; i<pays.length; i++)
  57. document.write("<option value=\"" +pays[i][0]+ "\">" +pays[i][1]);
  58. </script>
  59. </select>
  60.  
  61. <select class="OPTION" ID="cluster2"name="listeville" onChange='javascript:filltheselect(this.name, this.value)'>
  62. <script type="text/javascript">
  63. for (i=0; i<ville["p0"].length; i++)
  64. document.write("<option value=\"" +ville["p0"][i][0]+ "\">" +ville["p0"][i][1]);
  65. </script>
  66. </select>


pour moi, le problème ce situe dans cette partie la :

  1. <select class="OPTION" ID="cluster2"name="listeville" onChange='javascript:filltheselect(this.name, this.value)'>
  2. <script type="text/javascript">
  3. for (i=0; i<ville["p0"].length; i++)
  4. document.write("<option value=\"" +ville["p0"][i][0]+ "\">" +ville["p0"][i][1]);
  5. </script>

m
0
l
12 Mai 2012 21:19:22

Bon, j'ai essayé plusieurs solution et j'en ai trouvé une qui fonctionne.

j'ai modifié le code de choix_cli2.php comme ceci :

  1. <select class="OPTION" ID="cluster" name="listepays" onChange='javascript:filltheselect(this.name, this.value)'>
  2. <script type="text/javascript">
  3. for (i=0; i<pays.length; i++)
  4. document.write("<option value=\"" +pays[i][0]+ "\">" +pays[i][1]);
  5. </script>
  6. </select>
  7.  
  8. <select class="OPTION" ID="cluster2"name="num" onChange='javascript:filltheselect(this.name, this.value)'>
  9. <script type="text/javascript">
  10. for (i=0; i<ville["p0"].length; i++)
  11. document.write("<option value=\"" +ville["p0"][i][0]+ "\">" +ville["p0"][i][1]);


tout les listevilles ont été modifié en num et maintenant, lors d'une recherche il me donne cela comme adresse de page :
edit_client.php?listepays=p0&num=452&submit=Rechercher

il indique toujours listepays mais le num=452 m'affiche bien la fiche du client 452 donc c'est bon.

Ce n'est surement pas ce qu'il y a de plus propre comme code mais on fait comme on peut.
Si il y une possibilité de faire plus propre, je suis preneur.
Un grand merci pour l'aide
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS