liste deroulante dynamique [HELP]

liste deroulante dynamique [HELP] - PHP - Programmation

Marsh Posté le 11-05-2003 à 13:43:48    

Hello ;)
 
voila, je cherche à faire une liste déroulante dynamique...
je m'explique, en fait je voudrais que cette liste affiche tout les champs d'une table :)
 
Par exemple, j'ai une table "pages" qui contiens 3 champs : "home, contacts et infos", la liste déroulante doit m'afficher ces trois champs.
 
C'est certainement possile, c'est pour une zone admin, en faite ça servira pour modifier le contenu des pages.
 
C'est un tout petit site, mais je voudrais quand même savoir si c'est genat de mettre carement le contenu des pages dans la bdd ?
 
thx ;)


Message édité par KdZ' le 14-05-2003 à 13:58:41
Reply

Marsh Posté le 11-05-2003 à 13:43:48   

Reply

Marsh Posté le 11-05-2003 à 13:57:17    

c'est évidemment possible, ensuite c'est a toi de voir s'il est necessaire d'afficher toutes ces infos.  [:spamafote] , car ca peut être destabilisant ( voire inutile) pour l'utilisateur

Reply

Marsh Posté le 11-05-2003 à 14:00:53    

J'ai bien dit que c'etait pour l'admin du site :o  
 
 :pt1cable:


Message édité par KdZ' le 11-05-2003 à 14:01:12
Reply

Marsh Posté le 11-05-2003 à 14:03:14    

KdZ' a écrit :

J'ai bien dit que c'etait pour l'admin du site :o  
 
 :pt1cable:


 
et alors, admin ca veut pas forcement dire informaticien  :sarcastic:  
tu viens chercher des conseils ou te faire flamer toi ?

Reply

Marsh Posté le 11-05-2003 à 14:06:26    

il suffit de faire une boucle qui génère les champs dans les "options" de la liste déroulante :
 

Code :
  1. if($total) {
  2.     while($row = mysql_fetch_array($result)) {
  3.          echo '<option value="'.$row['nom_team'].'">'.$row['nom_team'].'';
  4.  echo '</option>';
  5.       }
  6. }
  7. else echo 'Pas d\'enregistrements dans cette table...';


Message édité par Master_Jul le 11-05-2003 à 14:07:25
Reply

Marsh Posté le 11-05-2003 à 14:12:32    

:pfff: J'ai du mal m'exprimer lors du 1er post.
 
Ce sera un truc vraiment tout con :)
Voila ce que ça va donner en gros :  
 
http://62.23.2.149/forum/ubbhtml/upload/code_kdz.1052655018.JPG

Reply

Marsh Posté le 11-05-2003 à 14:17:27    

KdZ' a écrit :

:pfff: J'ai du mal m'exprimer lors du 1er post.
 
Ce sera un truc vraiment tout con :)
Voila ce que ça va donner en gros :  
 
http://62.23.2.149/forum/ubbhtml/u [...] 655018.JPG


 
 
"Par exemple, j'ai une table "pages" qui contiens 3 champs : "home, contacts et infos", la liste déroulante doit m'afficher ces trois champs. "
 
>> en fait ce n'est pas 3 champ mes 3 enregistrements
et non ce n'est pas genant de stocker le contenu html dans la bdd, mais pkoi tu ne listes pas ton repertoire qui contient tes pages pour faire ta liste box ?
et une fois qu'une page est selection tu prend le contenu que tu affiche en lecture écriture  [:spamafote]

Reply

Marsh Posté le 11-05-2003 à 14:23:17    

Oué, j'y est bien pensser mais bon ça doit être plus conpliquer nan ?
 
Je suis en train d'essayer le code donner plus haut (merci au passage :)) mais si tu trouves que t'a methode est mieux, pas de pb...
 
Qu'est-ce que tu en pensses ? sachant que c'est pour un site d'une dizaines de pages max :)
 
merci

Reply

Marsh Posté le 11-05-2003 à 14:30:34    

KdZ' a écrit :

Oué, j'y est bien pensser mais bon ça doit être plus conpliquer nan ?
 
Je suis en train d'essayer le code donner plus haut (merci au passage :)) mais si tu trouves que t'a methode est mieux, pas de pb...
 
Qu'est-ce que tu en pensses ? sachant que c'est pour un site d'une dizaines de pages max :)
 
merci


 
ben dans ton cas, je ne vois pas l'interet de passer par une bdd, ca te fait un intermediaire supplémentaire non necessaire
 
Si tu décides de faire comme ça, http://dev.nexen.net/docs/php/anno [...] eaddir.php commence par ca pour lister tes pages et les ajouter dans ta liste-box

Reply

Marsh Posté le 11-05-2003 à 14:31:21    

J'ai essayer le code php de Master_Jul mais j'ai un petit pb, voila mon code au final :
 
 

Code :
  1. <table width="100%" height="100">
  2.   <tr>
  3.     <td align="center" valign="middle"><?php
  4. // CONNEXION A LA BDD
  5. require("../inc/connect_base.php" );
  6. $resultat = mysql_query("SELECT * FROM pages" );
  7. $row = mysql_fetch_row($resultat);
  8. ?>
  9.       <form name="form1" id="form1" method="post" action="">
  10.         <p>Choisisser la page que vous vouèlez modifier dans la liste
  11.           :
  12.           <select name="select" size="1">
  13. <?php
  14. if($total)
  15. while($row = mysql_fetch_array($result))
  16. {
  17. echo ("<option value=\"'.$row['nom_team'].'\">'.$row['nom_team'].'" );
  18. echo ("</option>" );
  19. }
  20. else
  21. echo ('Pas d\'enregistrements dans cette table !');
  22. ?>
  23.           </select>
  24.         </p>
  25.         <p>
  26.           <textarea name="page" cols="100" rows="35">text par default</textarea>
  27.           <br />
  28.           <br />
  29.           <input type="submit" name="Submit" value="Sauvegarder" />
  30.           <input type="button" name="Submit3" value="Effacer" onclick="alert('Pour supprimer le contenu du formulaire, double-cliquer dedans.');"/>
  31.           <input type="reset" name="Submit2" value="Rétablir" />
  32.         </p>
  33.       </form>
  34.     </td>
  35.   </tr>
  36. </table>

 
 
 Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in e:\easyphp\www\entrainements\apla\admin\modif_page.php on line 29
 
Une idée ¿


Message édité par KdZ' le 11-05-2003 à 14:32:15
Reply

Marsh Posté le 11-05-2003 à 14:31:21   

Reply

Marsh Posté le 11-05-2003 à 14:35:34    

c'est laquelle ta ligne 29 déjà ?
 
+
 

Code :
  1. <?
  2. $host = 'localhost';
  3. $user = 'xxx';
  4. $pass = 'xxx';
  5. $db = 'xxx';
  6. $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
  7. mysql_select_db($db) or die ('Erreur :'.mysql_error());
  8. $select = "SELECT * FROM lan1 WHERE leader='1' ORDER BY nom_team";
  9. $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
  10. $total = mysql_num_rows($result);
  11. if($total) {
  12.  
  13.     while($row = mysql_fetch_array($result)) {
  14.          echo '<option value="'.$row['nom_team'].'">'.$row['nom_team'].'';
  15.  echo '</option>';
  16.       }
  17. }
  18. else echo 'Pas d\'enregistrements dans cette table...';
  19. mysql_free_result($result);
  20. mysql_close();
  21. ?>


 
Ce code permet de lister des valeurs d'un champs, j'ai des équipes dans une table, j'ai le champs équipe et je liste les noms d'équipe grace à la boucle.
 
Si tu veux lister les noms de champs uniquement, le plus simple serait encore de le faire à la main car la structure de ta table n'est pas censé changer et s'agrandir tous les 2 jours.
 
Si, par contre, tu veux lister le contenu d'un des champs, ma méthode me semble adaptée, après tu as besoin de redigirer en fonction du lien choisit il me semble dans ton cas.


Message édité par Master_Jul le 11-05-2003 à 14:42:05
Reply

Marsh Posté le 11-05-2003 à 14:40:24    

Scuse je l'ai pas mis, voila l'erreur maintenant (toujours avec le meme code mais je l'ai "eclairci" :  
 
 Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in e:\easyphp\www\entrainements\apla\admin\modif_page.php on line 26  
 
Et la ligne 26 est celle-ci :  
 
 

Code :
  1. echo ("<option value=\"'.$row['nom_team'].'\">'.$row['nom_team'].'" );

;)

Reply

Marsh Posté le 11-05-2003 à 14:44:15    

première chose, tu n'as pas de $total donc ta boucle peut difficilement marcher, regarde ce que j'ai édité au dessus, ensuite tu n'as pas les champs nom_team dans ta base, c'est à toi d'adapter

Reply

Marsh Posté le 11-05-2003 à 14:45:16    

echo ("<option value=\"".$row['nom_team']."\">".$row['nom_team']."</option>" );
 
et comme ca ?
 
edit :  :whistle:


Message édité par simogeo le 11-05-2003 à 14:50:35
Reply

Marsh Posté le 11-05-2003 à 15:01:50    

simogeo : c bon il n'y à plus d'erreur ;)
 
Master_Jul : je vais essayer :)
 
ps : ce que je voudrais c'est lister les noms des champs et pas leur contenu, c bon quand même ton code ?

Reply

Marsh Posté le 11-05-2003 à 15:15:55    

unexpected T_VARIABLE
voila la ligne en question :  $result = mysql_query ($select,$link) or die ('Erreur : '.mysql_error() );
 
 
il n'y a pourtant pas d'erreur :(
Arf, mon projet est bien mal partit :(

Reply

Marsh Posté le 11-05-2003 à 15:16:49    

KdZ' a écrit :

simogeo : c bon il n'y à plus d'erreur ;)
 
Master_Jul : je vais essayer :)
 
ps : ce que je voudrais c'est lister les noms des champs et pas leur contenu, c bon quand même ton code ?


 
le principe de boucle oui, sinon non, pourquoi tu as besoin de le faire "dynamiquement" ?
 

Citation :

Si tu veux lister les noms de champs uniquement, le plus simple serait encore de le faire à la main car la structure de ta table n'est pas censé changer et s'agrandir tous les 2 jours.

 
 

Reply

Marsh Posté le 11-05-2003 à 15:20:08    

KdZ' a écrit :

unexpected T_VARIABLE
voila la ligne en question :  $result = mysql_query ($select,$link) or die ('Erreur : '.mysql_error() );
 
 
il n'y a pourtant pas d'erreur :(
Arf, mon projet est bien mal partit :(  


 
il manque un ";" après mysql_error(), non ?


Message édité par simogeo le 11-05-2003 à 15:20:34
Reply

Marsh Posté le 11-05-2003 à 15:26:28    

simogeo : je viens de verifier, et ce n'est pas ça ;)
 
Sinon, j'ai besoin de le faire dynamiquement car si il y eu une autre page entre temps, ou qu'une ai été deleter... bref, tu vois ce que je veux dire, je souhaite que la liste deroulante m'affiche tous les champs dispo dnas la table "pages" ; parce que un champs correspond à une page ;)
 
voila une capture de phpmyadmin :  
http://62.23.2.149/forum/ubbhtml/upload/code_kdz.1052659429.JPG ps j'ai mis du 14 un peu partout histoire de remplir...
 
;)

Reply

Marsh Posté le 11-05-2003 à 15:26:55    

bizarre que tu ais toutes ces erreurs, moi ça marche très bien
 
[:meganne]


Message édité par Master_Jul le 11-05-2003 à 15:27:47
Reply

Marsh Posté le 11-05-2003 à 15:31:08    

ok pour le ";" ... en fait je pense que l'erreur doit venir de la ligne d'avant ou d'une accolade mal fermé ailleurs.
 
du reste, je pense que t'as pas très bien compris comment fonctionne les bdd, en fait tes pages ne doivent pas correspondre a des champs mais a des enregistrements.
 
à la rigueur, si tu tiens a le faire en bdd :
 
fais plutôt une table PAGES :
- page_id (auto_increment);
- page_name (varchar);
- page_body (text);
 
et ensuite tu stockes autant de pages que tu veux dans ta table PAGES  [:spamafote]  

Reply

Marsh Posté le 11-05-2003 à 15:36:24    

:jap: j'allais proposer ceci :
 
http://www.masterjul.net/vrac/exemple_sql.png

Reply

Marsh Posté le 11-05-2003 à 15:38:50    

"Oula" :o ça me surpasse :)
 
Eu, comme vous voulez en faite, je suis perdu maintenant... :pt1cable:


Message édité par KdZ' le 11-05-2003 à 15:39:13
Reply

Marsh Posté le 11-05-2003 à 15:40:59    

KdZ' a écrit :

"Oula" :o ça me surpasse :)
 
Eu, comme vous voulez en faite, je suis perdu maintenant... :pt1cable:


 
 
tu vas voir c'est pas très compliqué, tu prenais le modèle à l'envers en fait.  
 
> Master_Jul : même structure de base :D ( bon c'est logique)
 
bon courage, moi je vous laisse, ciao
 

Reply

Marsh Posté le 11-05-2003 à 15:42:52    

Moué, merci en tout cas, mais moi aussi je sort 2-3 heures, je reprend ça dans la soirée, si vous êtes là, ça m'arangerait :)
++
bonne journée ;)

Reply

Marsh Posté le 11-05-2003 à 15:51:24    

Oki, pas de problème, et après, tu pourras utiliser ce code sans problème :
 

Code :
  1. <select name="rubrique">
  2.         <?
  3. include "rubrique_listing.php";
  4. ?>
  5.       </select>


 
 
rubrique_listing.php
 

Code :
  1. <?
  2.   $host = 'localhost';
  3.   $user = 'xxx';
  4.   $pass = 'xxx';
  5.   $db = 'xxx';
  6.  
  7.  
  8.   $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
  9.   mysql_select_db($db) or die ('Erreur :'.mysql_error());
  10.  
  11.  
  12.   $select = "SELECT * FROM pages ORDER BY id"; 
  13. // j'ai mis order by id pour les afficher par ordre d'ajout, mais tu peux mettre "nom" pour avoir un ordre alphabétique
  14.   $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
  15.   $total = mysql_num_rows($result);
  16.    
  17.   if($total) {
  18.      
  19.         while($row = mysql_fetch_array($result)) {
  20.                echo '<option value="'.$row['id'].'">'.$row['nom'].'';
  21.         echo '</option>';
  22.            }
  23.   }
  24.   else echo 'Pas d\'enregistrements dans cette table...';
  25.    
  26.   mysql_free_result($result);
  27.  
  28.   mysql_close(); 
  29.  
  30.   ?>


 
Après tu obtiens ta liste déroulante avec une syntaxe comme celle là :
 

Code :
  1. <form action="modif_rubrique.php" method="post">
  2.           <select name="rubrique">
  3.               <option value="1" >accueil</option>
  4.               <option value="2" >contenu</option>
  5.               <option value="3" >projet</option>
  6.           </select>
  7.           <input type="submit" value="Go">
  8.         </div></form>


 
Où tu récupère la "value" comme variable pour traiter la rubrique sélectionnée, j'espère qu'il n'y a pas qq erreurs qui se sont glissé :D


Message édité par Master_Jul le 11-05-2003 à 15:52:23

---------------
En français, on écrit "connexion", pas "connection".
Reply

Marsh Posté le 11-05-2003 à 20:43:58    

Ouaaa!! merci bien, je vais essayer ça de suite :)
Par contre le fichier 'rubrique_listing.php', pas de pb, met le fichier là où j'ai mon formulaire (liste deroulante et textarea) je met quel code ? ton premier c bien ça hein ? :??:  
 
Et je doit aussi crée la meme table que sur la capture un peu plus haut, hum oki, ça devrait aller je pense, thx ;)

Reply

Marsh Posté le 11-05-2003 à 21:10:51    

Oup's, il doit y avoir une erreur, voila le code "generé" :
 <select name="rubrique" size="1">
 
          <br />
<b>Parse error</b>:  parse error, unexpected T_STRING in <b>e:\easyphp\www\entrainements\apla\admin\rubrique_listing.php</b> on line <b>2</b><br />
        </select>

Reply

Marsh Posté le 11-05-2003 à 21:19:34    

ok, alors montre nous ton code !  [:spamafote]

Reply

Marsh Posté le 11-05-2003 à 21:25:50    

c'est le code de Master_Jul ci-dessus.

Reply

Marsh Posté le 11-05-2003 à 21:47:01    

alors appelle directement rubrique_listing.php

Reply

Marsh Posté le 11-05-2003 à 21:49:06    

c ce que je fais :  
 
 

Code :
  1.  <?  
  2.  include "rubrique_listing.php";  
  3.  ?>

Reply

Marsh Posté le 11-05-2003 à 21:51:39    

non mais depuis la barre d'adresse du browser  :)


Message édité par simogeo le 11-05-2003 à 21:53:46
Reply

Marsh Posté le 11-05-2003 à 21:54:35    

scuse ;)
 
voila :  
 
 Parse error: parse error, unexpected T_STRING in e:\easyphp\www\entrainements\apla\admin\rubrique_listing.php on line 2

Reply

Marsh Posté le 11-05-2003 à 21:56:40    

source  :bounce:  !!!!! tu as du faire une erreur en passant tes variables de connexion !

Reply

Marsh Posté le 11-05-2003 à 21:59:39    

j'ai pourtan tout rempli comme il fallait :  
 
 

Code :
  1. <?php
  2.    $host = '';  
  3.    $user = '';  
  4.    $pass = '';  
  5.    $db = 'apla';  
  6.      
  7.      
  8.    $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );  

 
 
la ligne 2 c celle-ci :  
    $host = '';   (bien renseignée bien sur:))

Reply

Marsh Posté le 11-05-2003 à 22:03:43    

KdZ' a écrit :


la ligne 2 c celle-ci :  
    $host = '';   (bien renseignée bien sur:))
 


 
tu n'as rien a cacher, $host contient localhost  [:spamafote] si tu fais tes tests sur easyphp ( et que tu n'as rien modifier ).... surtout pas de caracteres bizarres.
 
essayes avec ca d'ailleurs --> $host = '';   pour voir si l'erreur vient de là  [:spamafote]


Message édité par simogeo le 11-05-2003 à 22:03:58
Reply

Marsh Posté le 11-05-2003 à 22:06:35    

pareil :(

Reply

Marsh Posté le 11-05-2003 à 22:11:14    

je viens de faire un côpier-coller du code de Master_Jul et je l'ai executé -> aucune parse error  c'est certain que tu as fait une boulette en recopiant.
 
fais moi un copier coller violent de tout le code Ctrl-A, Ctrl-C et Ctrl-V sur le forum  [:spamafote]

Reply

Marsh Posté le 11-05-2003 à 22:14:02    

effectivement c violent  :D :
 
 

Code :
  1. <?php
  2.    $host = 'localhost';  
  3.    $user = 'root';  
  4.    $pass = '';  
  5.    $db = 'apla';  
  6.      
  7.      
  8.    $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );  
  9.    mysql_select_db($db) or die ('Erreur :'.mysql_error());  
  10.      
  11.      
  12.    $select = "SELECT * FROM pages ORDER BY id";  
  13.  
  14.  // j'ai mis order by id pour les afficher par ordre d'ajout, mais tu peux mettre "nom" pour avoir un ordre alphabétique
  15.  
  16.    $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );  
  17.    $total = mysql_num_rows($result);  
  18.        
  19.    if($total) {  
  20.            
  21.            while($row = mysql_fetch_array($result)) {  
  22.                     echo '<option value="'.$row['id'].'">'.$row['nom'].'';  
  23.              echo '</option>';  
  24.               }  
  25.    }  
  26.    else echo 'Pas d\'enregistrements dans cette table...';  
  27.          
  28.    mysql_free_result($result);  
  29.      
  30.    mysql_close();  
  31.      
  32. ?>

 
 
voila pour rubrique_listing.php ;)
merci :jap:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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