Récupérer données dans un menu dérroulant

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Récupérer données dans un menu dérroulant

par piotrowski-s » 10 mai 2008, 18:11

nickel tout fonctionne, bravo et merci...

par Cyrano » 10 mai 2008, 18:06

Ce n'est pas pour autant une bonne méthode : il faut du temps pour gagner en autonomie avec n'importe quelle technologie et PHP ne fait pas exception même si c'est plus facile que le Java ou le C++ par exemple. Apprendre les base est une étape indispensable précisément parce qu'en apprenant à les maîtriser, tu n'auras plus à te concentrer que sur les méthodologies de développement. Enfin bon, tu fais comme tu veux, mais je te dis ça par expérience personnelle.

par piotrowski-s » 10 mai 2008, 18:02

ça commence à rentrer... Je préfère être confronté de suite à des difficultées pour mon apprentissage plutot que d'apprendre les bases...
9a peut porter à confusion, mais je suis comme ça. Si je commence par les bases dans 1 moi j'y suis toujours, alors qu'en 24heures, j'ai déjà fait pas mal de chemin,... Je sais créé des tables, incrémenter les donnée d'un formulaire dans un bdd, créé des sessions, pour connexion sur page membres, je sais ça doit vous paraître peu, mais en 24heure, j'ai vraiment l'impression d'avoir fait un pas de géant. Merci à tous de votre ontribution

par Cyrano » 10 mai 2008, 17:58

Normal, ou presque parce que ça devrait t'afficher une erreur "undefined index menuid" : ta requête récupère la colonne "nom" et tu essayes d'afficher la colonne "menuid" : donc forcément tu n'as aucun affichage... Est-ce que tu comprends bien le fonctionnement du SQL pour faire des requêtes ?

par piotrowski-s » 10 mai 2008, 17:41

j'y suis allé, mais je n'ai as réussi.
Ce code m'a pourtnat l'air bon ,mais n'affiche rien...
Qu'en pensez-vous?
<SELECT NAME="menu"> 
            <? 
            $SQL = "SELECT nom FROM clients" ; 
            $result = mysql_query($SQL) or die('Erreur SQL : '.mysql_error()); 
            while ($val = mysql_fetch_array($result)){ 
               echo "<OPTION VALUE='".$val["menuid"]."'>".$val["menuitem"]."</option>"; 
            } 
            ?> 

par Cyrano » 10 mai 2008, 17:36

Je crois qu'avant de te lancer dans des réalisations complexe, il serait bon de faire une suite de tutos qui vont t'amener progressivement à utiliser le SQL et PHP, mais en commençant par le PHP tout court. :arrow: PHPDebutant, le menu de droite, fais-les dans l'ordre.

par d0m » 10 mai 2008, 17:24

je pense que ce que tu devrais faire c'est aller voir le manuel PHP pour cette fonction mysql_fetch_array.
Il y a des exemples simples pour comprendre son fonctionnement.

par piotrowski-s » 10 mai 2008, 17:22

j'ai abandonné, le code précédent, car trop complexe pour un débutant, ppouvez- vous m'indiquer s'il vous plaît comment faire pour utiliser ce code, variavle à remplir, etc...
D'avance merci.
<SELECT NAME="menu">
            <?
            $SQL = "SELECT nom FROM clients" ;
            $result = mysql_query($SQL) or die('Erreur SQL : '.mysql_error());
            while ($val = mysql_fetch_array($result)){
               echo "<OPTION VALUE='".$val["menuid"]."'>".$val["menuitem"]."</option>";
            }
            ?> 

par d0m » 10 mai 2008, 17:19

ça ne fonctione pas
est à bannir de ton vocabulaire.
donne nous ton code à cet étape et dis nous ce qui ne vas pas.

ton tableau $data est il affiché avec la ligne
printr($data); 
?

par piotrowski-s » 10 mai 2008, 15:57

j'ai trouvé ce code, qu'en pensez-vous ?
<SELECT NAME="menu">
            <?
            $SQL = "SELECT nom FROM clients" ;
            $result = mysql_query($SQL) or die('Erreur SQL : '.mysql_error());
            while ($val = mysql_fetch_array($result)){
               echo "<OPTION VALUE='".$val["menuid"]."'>".$val["menuitem"]."</option>";
            }
            ?> 

par d0m » 10 mai 2008, 15:44

Si tu viens de te mettre au php il faut proceder étape par étape.

Déjà en comprenant ce que tu fais et ce que tu utilises.

La première chose que tu fais c'est aller chercher en base le noms des clients.

tu fais ceci avec une requête :
<?php 
$sql = 'SELECT nom FROM clients';  

// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)  
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());  
Ca c'est ok.

Ensuite dis toi que la variable $req contient plusieurs lignes, chaque ligne étant un enregistrement de la table clients contenant le nom.

Il n'y a pas de fonction toute prête en php qui va mettre dans un tableau TOUTES tes lignes du résultat de la requête. La fonction mysql_fetch_assoc va mettre dans un tableau UNE SEULE ligne du résultat la première. Si tu le réutilises sur ce résultat, tu auras la deuxième ligne, puis la troisème etc...
Il va donc falloir boucler avec cette fonction pour extraire toutes les lignes :
$data = array();
while($ligne =  mysql_fetch_assoc($req);{
  //on range dans le tableau la ligne résultat en cours
  $data[] = $ligne;
}

//on affiche le tableau pour voir à quoi il ressemble
printr($data);
...

ensuite tu pourras boucler sur ce tableau et en extraire les noms pour les afficher dans la liste déroulante.

par piotrowski-s » 10 mai 2008, 15:29

je n'ai pas reussi, je précise que je me suis mis au php hier soir a 23h30, donc un coup de main serait le bienvenu, d'avance merci...

par orgerix » 10 mai 2008, 15:19

Reli ce que je t'ai dis :wink:
Bon, déjà, tu utilise mysql_fetch_array(), qui renvoie un tableau indexé numériquement. Mieux vaut utiliser mysql_fetch_assoc() qui renvoit un tableau doulement indexé, numériquement et associativement (avec les noms des colonnes)
EDIT : préfère les balises PHP aux balises code. Comme ca, on peut profiter de la coloration syntaxique

par piotrowski-s » 10 mai 2008, 14:49

j'ai essayé ça <select name="nom" size="1">
<option><?php echo $data['nom']; ?></option>
</select>
mais là c'est vide, je veut dire le menu déroullanet n'affiche pas les options .
Voici le code que j'utilis epour la requête:
<?
$sql = 'SELECT nom FROM clients';

 
      // on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die) 
      $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
 
      // on récupère le résultat sous forme d'un tableau 
      $data = mysql_fetch_array($req); 
 
      // on libère l'espace mémoire alloué pour cette interrogation de la base 
      mysql_free_result ($req); ?>
Merci de votre aide par avance..

par d0m » 10 mai 2008, 14:34

ok alors il faut que tu comprennes la différence entre le PHP et le code HTML.

en gros le code PHP est interpreté par le serveur, les variables sont calculés etc... et le remplacement se fait dans la page.

Il faut donc avant tout que tu comprennes cette différence entre le PHP et le html pour identifier ce que tu dois mettre entre les balises de code PHP et l'affichage en html.

Par exemple ta liste est du code html :

Code : Tout sélectionner

<select name="nom" size="1"> <option>....</option> </select>
ce qu'il ya entre les balises <options></options> doit être une chaine de caractère fixe.
c'est là qu'intervient le PHP. Il calcule dynamiquement (ici en allant chercher dans ta base de données) la valeur à mettre entre les balises option. il faut donc afficher mettre comme l'a dit orgerix le contenu de la variable php entre les balises.