remplissage d'une liste via une requete sql

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 : remplissage d'une liste via une requete sql

par Cyrano » 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 *.

par Truc » 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:

par Room » 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

par psaikopat » 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 ! ;)

par Room » 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

par iclo » 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é...

par Room » 20 déc. 2005, 09:41

ca me balance l'erreur suivante:

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

par Room » 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>

par Cyrano » 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
}
?>

remplissage d'une liste via une requete sql

par Roomcorner » 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