remplissage d'une liste via une requete sql

Roomcorner
Invité n'ayant pas de compte PHPfrance

19 déc. 2005, 18:33

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

Mammouth du PHP | 19672 Messages

19 déc. 2005, 18:45

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
}
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 4 Messages

20 déc. 2005, 09:36

: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>

Petit nouveau ! | 4 Messages

20 déc. 2005, 09:41

ca me balance l'erreur suivante:

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

ViPHP
ViPHP | 2144 Messages

20 déc. 2005, 11:34

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é...

Petit nouveau ! | 4 Messages

20 déc. 2005, 11:46

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

Eléphant du PHP | 139 Messages

20 déc. 2005, 11:59

<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 ! ;)

Petit nouveau ! | 4 Messages

20 déc. 2005, 12:08

problème résolu!!!

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

merci a tous

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

20 déc. 2005, 13:04

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:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 19672 Messages

20 déc. 2005, 14:11

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 *.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: