Afficher des données avec une seule requete

WRInaute impliqué
Bonjour,

J'aimerais savoir si il est possible d'afficher les données issues de la base de donnée sur plusieurs ID avec une seule requête ?

Au lieu de faire plusieurs requêtes comme ci-dessous pour afficher le name et description, peut-on tous les réunir en une seule ?

Il y a 9 requêtes à la suite en réalité.

Code:
$sql1 = mysql_query("SELECT name, description ".$mysql->pref."_items WHERE id=11 LIMIT 1");
$sql1row = mysql_fetch_assoc($sql1);

$sql = mysql_query("SELECT name, description ".$mysql->pref."_items WHERE id=14 LIMIT 1");
$sql2row = mysql_fetch_assoc($sql2);

$sql3 = mysql_query("SELECT name, description ".$mysql->pref."_items WHERE id=21 LIMIT 1");
$sql3row = mysql_fetch_assoc($sql3);

$sql4 = mysql_query("SELECT name, description ".$mysql->pref."_items WHERE id=41 LIMIT 1");
$sql4row = mysql_fetch_assoc($sql4);

$sql5 = mysql_query("SELECT name, description ".$mysql->pref."_items WHERE id=8 LIMIT 1");
$sql5row = mysql_fetch_assoc($sql5);

etc...
 
WRInaute accro
Code:
$sql = mysql_query("SELECT name, description ".$mysql->pref."_items WHERE id IN (11, 14, 21, 41, 8)");
 
WRInaute passionné
Code:
"SELECT name, description ".$mysql->pref."_items WHERE id IN ('11','14','21','41',...)
:?:

Edit Grilled
 
WRInaute impliqué
Ok, mais comment vous affichez les donnée après ?

Je faisais echo $sql1row['name'];

pour afficher le name pour la première requête.

Mais dans ce cas, comment afficher séparément le name pour chaque ID ?
 
WRInaute accro
Perso je bouclerais une bonne fois pour toute sur les différents enregistrements de manière à remplir un tableau PHP avec les données, ce qui permet de les employer à loisir par la suite, sans avoir besoin de boucler à chaque fois sur les résultats.
 
WRInaute impliqué
Tu peux me montrer brièvement ? Je comprends pas trop ce que tu veux dire.
 
WRInaute accro
Code:
$tab_data = array()
$sql = mysql_query("SELECT id,name, description ".$mysql->pref."_items WHERE id IN (11, 14, 21, 41, 8)");
while ($row = mysql_fetch_assoc($sql1))
{
     $tab_data[$row['id']] = array($row['name'],$row['description']);
}

Ensuite en faisant par exemple echo $tab_data[41]['name'], tu peux affiche l'entrée name correspondant à ton id 41 (après avoir bien sûr testé que l'entrée existait dans ton tableau via un isset des familles).
 
WRInaute passionné
[joke]

Oh ce lapin japonisé ! quand il s'agit de donner un conseil, rien ne l'array 'te : je ne te raconte pas le tableau !

[/joke]
 
WRInaute impliqué
De nouveau moi :(

J'ai un problème, quand je fais un echo $echo $tab_data[23]['name'];

Ca me donne cette erreur : Notice: Undefined index: name in ...

Quelqu'un peut m'aider ?

Merci
 
WRInaute impliqué
UsagiYojimbo a dit:
(après avoir bien sûr testé que l'entrée existait dans ton tableau via un isset des familles).
:wink:

Code:
$out = isset($tab_data[23]['name']) ? $tab_data[23]['name'] : "Aucun nom";
echo $out;
 
WRInaute accro
Petite correction :

UsagiYojimbo a dit:
Code:
$tab_data = array()
$sql = mysql_query("SELECT id,name, description ".$mysql->pref."_items WHERE id IN (11, 14, 21, 41, 8)");
while ($row = mysql_fetch_assoc($sql1))
{
     $tab_data[$row['id']] = array("name" => $row['name'],"description" => $row['description']);
}
 
Discussions similaires
Haut