Page 1 sur 1

remplissage d'une liste via une requete sql

Posté : 19 déc. 2005, 18:33
par Roomcorner
Bonjour a tous
besoin d'un petit conseil

en fait g besoin d'une liste déroulante remplie via une requete SQL

connexion a la base impek
récup des données dans un tableau impek

je veut juste savoir comment on remplie une liste déroulante grace au tableau de résultat

merci a tous ceux qui pourront m'aider

en mm temps j'en suis sur que c'est super simple :D

Posté : 19 déc. 2005, 18:45
par Cyrano
C'est effectivement très simple : tu dois parcourir ton tableau de résultat et pour chaque ligne jusqu'à ce qu'il n'y en ait plus tu crées une balise option; Sommairement, ça ressemble à ça:
<?php
/* On considèrera que la connexion est OK */
$sql = "SELECT titre FROM ma_table";
$resultat = mysql_query($sql) or die ("<p>Erreur d'exécution de la requête SQL : ". mysql_error() ."</p>\n");
if(mysql_num_rows($resultat) > 0)
{
?>
<select name="liste_1">
<?php
    while($ligne = mysql_fetch_assoc($resultat))
    {
?>
  <option value="<?php echo($ligne['titre']); ?>"><?php echo($ligne['titre']); ?></option>
<?php
    }
?>
</select>
<?php
}
?>

Posté : 20 déc. 2005, 09:36
par Room
:shock:
c'est chelou ton code...

/******************************************/
$r_sql_process = "requete....";
$result = @mysql_query($r_sql_process);

if(@mysql_num_rows($result) != 0){
$proc = mysql_fetch_assoc($result);
}else{
die("aucun processus trouvé");
};

/*************/

<select name="select">
<option>------ Sélectionner un processus -------</option>
<?php
while ($ligne = mysql_fetch_row($result)) {
?>
<option value="<?php echo($ligne['titre_process']); ?>"><?php echo($ligne['titre_process']); ?></option>
<?php
}
?>

/****************************************************/
ca doit clocher quelque part alors mais je ne voit pas où!!!
merci de votre aide




</select>

Posté : 20 déc. 2005, 09:41
par Room
ca me balance l'erreur suivante:

notice : undefined index: titre_process in "lien......php" on line 252

Posté : 20 déc. 2005, 11:34
par iclo
Ce n'est pas le code de Cyrano qui est louche mais ce que tu en as fais ;)
mysql_fetch_assoc($resultat) et mysql_fetch_row($resultat) ne reviennent pas au même....
Cherche de ce côté...

Posté : 20 déc. 2005, 11:46
par Room
j'ai repompé exactement le code de cirano mais ca me déclenche l'erreur du dessus!!

ca signifie koi alors $ligne['titre']??
si je comprend bien c'est les résultats placés dans la collone 'titre' de mon tableau ligne.

j'ai la tete qui chauffe lol

Posté : 20 déc. 2005, 11:59
par psaikopat
<select name="liste">
          <? 
    if (isset($result1)) 
    { 
        mysql_free_result($result1); 
    } 
    $query1 = "SELECT * FROM machin ORDER BY Id ASC"; 
    $result1 = mysql_query($query1); 
    while($champ = mysql_fetch_assoc($result1)) 
    { 
?>
          <option value="<? echo $champ['Id']; ?>"><? echo $champ['Truc']; ?></option>
          <? 
    } 
?>
        </select>
C'est la meme chose mais bon on ne sait jamais ! ;)

Posté : 20 déc. 2005, 12:08
par Room
problème résolu!!!

Il faut utiliser la fonction mysql_fetch_assoc($result) aulieu de mysql_fetch_row($result)

merci a tous

Posté : 20 déc. 2005, 13:04
par Truc
problème résolu!!!

Il faut utiliser la fonction mysql_fetch_assoc($result) aulieu de mysql_fetch_row($result)

merci a tous
tu n'as surtout pas suivis le pourquoi du comment:
mysql_fetch_assoc()
mysql_fetch_row()

tu veras que les indices ne sont pas les memes:

$ligne['titre'] devient $ligne[0]. :wink:

Posté : 20 déc. 2005, 14:11
par Cyrano
Je voudrais revenir sur un point: en général si je dis "ça devrait ressembler à ça", il faut comprendre "voici le schéma de fonctionnement" et non" copie et colle ce code ça va marcher"

D'autre part sur mysql_fetch_... :
  1. mysql_fetch_assoc() va produite un tableau associatif, donc un tableau dont les index seront nommés avec les noms des champs de la table spécifiés dans la requête;
  2. mysql_fetch_row() va produire un tableau indexé, donc un tableau dont les index seront numérotés de 0 à n à partir du premier jusqu'au dernier champ précisé dans la requête;
  3. mysql_fetch_array() va produire un tableau avec les deux types d'index : on aura donc au choix $var['premier champ'] ou $var[0] qui afficheront la même donnée;
Petit truc : faites donc afficher vos variables pour en voir le contenu, en utilisant var_dump() ou printf() pour des tableaux et n'utilisez pas SELECT *.