Liste déroulante et valeur renvoyée

Liste déroulante et valeur renvoyée - PHP - Programmation

Marsh Posté le 06-04-2004 à 11:25:47    

Bonjour tout le monde,
 
J'ai un probleme avec le code suivant:
 
 

Code :
  1. <?php
  2. if (!(isset($_SESSION['valid_user'])) || (strncmp($_SESSION['privilege'],"1",1)!=0))
  3.  header("Location: connexion.php" );
  4. include("connect.inc" );
  5. $reqmarche="SELECT libelle, ident FROM marches";
  6. $result=mysql_query($reqmarche) or die ("Impossible de trouver les marches" );
  7. $ligne=mysql_fetch_array($result);
  8. ?>
  9. <center>
  10. <form method="post" action="index.php?page=besoins2&titre=<?php echo urlencode($ligne['libelle']); ?>">
  11.  <select name="marches" OnChange='javascript:submit()'>
  12.        <option>---Selectionner un marche---</option>
  13.               <?php while ($ligne=mysql_fetch_array($result)){ ?>
  14.               <option value="<?php echo $ligne['ident']; ?>"> <?php echo $ligne['libelle']; ?> </option>
  15.     <?php } ?>
  16.         </select>
  17. </form>
  18. </center>


 
Comme vous le voyez c'est un liste déroulante qui sélectionne les élément dans une table mysql.
 
Mon probleme se situe au niveau de la ligne action="........
 
Je voudrais transmettre dans la variable "titre" la valeur du champs selectionné (en fait ce qui est affiché et non la valeur renvoyé par POST qui n'est qu'un numéro).
 
Or avec mon code actuel, $ligne['libelle'] vaut toujours la même chose à savoir la premiere ligne.
 
Je crois que j'ai compris pourquoi ca faisait ca, mais je n'ais pas trouver comment remedier à cela.
 
 
Merci d'avance pour votre aide, et si mes explications sont pas très claires n'hésitez pas à demander des précisions :o


---------------
Tous les animaux pensent mais L'Homme est le seul qui pense qu'il n'en est pas un!
Reply

Marsh Posté le 06-04-2004 à 11:25:47   

Reply

Marsh Posté le 06-04-2004 à 11:34:23    

Salut,
Tu ne peux envoyer qu'une seule valeur par <select>(du moins sans bidouille JavaScript qui m'est inconnue :o). Ta table "marches" comporte bien une ID ? C'est elle qu'il faut transmettre, ça sera facile ensuite de retrouver "libelle" sur la page suivante !

Reply

Marsh Posté le 06-04-2004 à 11:44:04    

Ba en fait je transmet bien l'ID sur la page suivante par la methode POST et je retrouve le libelle sans probleme.
 
Mais la variable titre que je sougaite renseigné sert à donner un titre à la page, mais le titre est placé dans un autre cadre.  Mon cadre du haut vérifie si il ya une variable titre et affiche un titre en conséquence.
 
 
Et à la sortie du formulaire le titre est faut puisqu'il correspond à la valeur de la premiere ligne. (en suite en cliquant sur les differents liens de la page suivante le titre est bon puisque je l'ai retrouvé grace à l'ID mais le probleme survient lors du passage du formulaire à cette page)
 


---------------
Tous les animaux pensent mais L'Homme est le seul qui pense qu'il n'en est pas un!
Reply

Marsh Posté le 06-04-2004 à 12:17:24    

Je comprends ce que tu veux faire et je ne sais pas le faire. :o Cependant, je pense que si tu es obligé de faire ça c'est que l'architecture de la page est mal pensée. As-tu pensé a diviser ton code en fonctions ?

Reply

Marsh Posté le 06-04-2004 à 12:57:24    

Ba en fait je tourne comme ca :
 
Une page d'index ou j'inclue tous le reste:
 

Code :
  1. <?php
  2. session_start();
  3. ob_start();
  4. If (isset($_GET["page"]))
  5.     {
  6.  $page=$_GET["page"];}//if
  7. Else
  8.     {
  9.  $page='accueil';}//valeur par défaut de $page
  10. ?>
  11. <html>
  12. <head>
  13.     <title>Achats-Conseils</title>
  14. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  15. <link href="feuille_de_style.css" rel="stylesheet" type="text/css">
  16. </head>
  17. <body bgcolor="#FFFFFF" text="#0099CC">
  18. <table width="100%" border="0" cellspacing="1" cellpadding="1">
  19. <tr>
  20. <td><div align="center"> <img src="images/animlogoca.gif" width="90" height="65" border="0">
  21. </td>
  22. <td>
  23. <? include('haut.php'); // L'entete du site  
  24. ?>
  25. </td>
  26. </tr>
  27. <tr>
  28. <td WIDTH="200" valign="top"><div class="cadremenu"><? include('menu.php'); // la page menu du site ?></div>
  29. </td>
  30. <td ><div class="centre"><? include('centre.php'); // la page centrale ?></div>
  31. </td>
  32. </tr>
  33. <tr>
  34. <td width="19%" class="bas_gauche">
  35.  <center><p><HR>Design et erreurs de<BR>code en tout genre<BR>KARA</center>
  36. </td>
  37. <td width="100%"><? include('bas.php'); //la banniere inferieure ?>
  38. </td>
  39. </tr>
  40. </table>
  41. </body>
  42. </html>
  43. <?php ob_end_flush(); ?>


 
Et donc dans haut.php j'ai ca :
 

Code :
  1. <center>
  2. <span class="BANNIERE">Portail Achats-conseils</span><br>
  3. <?php
  4.             if (isset($_GET['titre'])) { ?>
  5.     <br>
  6.     <b><FONT color=#ff6633 size="5">
  7.             <?php echo $_GET['titre']; ?>
  8.     </FONT></b>
  9.  <?php }
  10. ?>


 
Donc c'est pour ca que je passe par les URL, j'ai pas trouvé d'autre moyen pour transmettre le titre à haut.php
 
Donc tout mes liens resemble à peu près à ca:
 

Code :
  1. <p align="center"><a href="index.php?page=logout&titre=Deconnection" >logout</a></p>


 
avec "page" pour savoir qu'elle page afficher (c'est geré dans le cadre centre.php) et "titre" pourt transmettre le titre à haut.php
 
 
 
Si y'a un moyen beaucoup plu simple, j'écoute tout et j'applique (pasque c'est vrai que c'est pas simple)
 


---------------
Tous les animaux pensent mais L'Homme est le seul qui pense qu'il n'en est pas un!
Reply

Marsh Posté le 06-04-2004 à 13:16:23    

En regardant rapidement, à ta place, je ferais des fonctions. *D'abord*, j'assignerais les variables, puis je les afficherais dans le code HTML.
 
Un truc du genre :

Code :
  1. rerquire('menu.php'); // contient la fonction menu()
  2. rerquire('centre.php'); // contien la fonction centre()
  3. if(...)
  4. $titre = ... ;
  5. else
  6. $titre = ..;
  7. $menu = menu();
  8. $centre = centre();
  9. echo "<html>
  10. <head><title>$titre</title></head>
  11. <h1>$menu</h1>
  12. $centre
  13. </html>";


Message édité par kalex le 06-04-2004 à 13:17:37
Reply

Marsh Posté le 06-04-2004 à 13:37:19    

Donc menu.php etc il faiut que je les transforme en enorme fonction qui renvoit des valeurs?
 
Mais quand ca fait de l'affichage j'aurait quoi dans $menu...?


---------------
Tous les animaux pensent mais L'Homme est le seul qui pense qu'il n'en est pas un!
Reply

Marsh Posté le 06-04-2004 à 14:04:07    

Salut mcclane,
 
Pour envoyer plusieur variable dans une liste deroulante je fais ca par exemple:
 
echo("<form><SELECT NAME='facture' onchange='location=this.options[this.selectedIndex].value'>" );
for($element_number=1;$element_number<$selected+1;$element_number++)
{
echo("<OPTION value='voir_commande.php?edit=facture&table_key=$table_key&part_drop=$element_number'>$element_number</OPTION>" );
}
echo"</form>";


Message édité par sonikbuzz le 06-04-2004 à 14:07:55
Reply

Marsh Posté le 06-04-2004 à 14:06:29    

mcclane a écrit :

Donc menu.php etc il faiut que je les transforme en enorme fonction qui renvoit des valeurs?
 
Mais quand ca fait de l'affichage j'aurait quoi dans $menu...?

Enorme ? Mais non ! toutes petites ! ;)
$menu serait une chaîne de caractère.
La doc officielle est assez bien faite :
http://www.unixtech.be/docs/php-fr/function.html

Reply

Marsh Posté le 06-04-2004 à 14:14:25    

Je suis un peut pres au meme niveau que toi et j ai fait le choix d'utiliser des feuilles de style pour placer mon menu.
 
<div id="menu_gauche" class="menu_gauche">
</div>
 
<div id="centre" class="centre">
</div>
 
avec en .css
.menu_gauche
{position:absolue; left:0;top:35pt;
}
.centre
{margin-left:110pt;
margin-top:35pt;
}
 
Cela te permet de reserver de la place sur ta page et de pas t enmerder avec les tableaux.
 
Si tu veux mettre a jour des portions de ta page tu met caremment une iframe:
<iframe name="center" src="default.php" width="790" height="100%" scrolling="yes" class="Sommaire"></iframe>
 
que tu peux mettre a jour avec cette fonction javascript
function openSideUrl(url)
{
parent.frames["center"].location=url;
}
 
Sinon comme le conseil kalex , met que des fonction dans ta page principale.
Ca te donne : echo fonction_menu()
et ta fonction menu genere du code html


Message édité par td-rat le 06-04-2004 à 14:17:17
Reply

Sujets relatifs:

Leave a Replay

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