Afficher des données avec une seule requete

  • Auteur de la discussion Auteur de la discussion sff
  • Date de début Date de début
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...
 
Code:
$sql = mysql_query("SELECT name, description ".$mysql->pref."_items WHERE id IN (11, 14, 21, 41, 8)");
 
Code:
"SELECT name, description ".$mysql->pref."_items WHERE id IN ('11','14','21','41',...)
:?:

Edit Grilled
 
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 ?
 
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.
 
Tu peux me montrer brièvement ? Je comprends pas trop ce que tu veux dire.
 
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).
 
[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]
 
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
 
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;
 
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']);
}
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut