[PHP]Afficher le résultat d'une grande requête MySQL

Répondre
Partager Rechercher
B'jour/'soir ,
je suis en train de m'initier au php/MySQL , je me suis donc mis en tête de créer un ensemble de script permettant la mise en ligne de news. les news sont sauvés dans une table SQL.
J'arrive à afficher les news une par une mais je n'arrive pas à trouver le moyen pour afficher le résultat faisant intervenir plusieurs résultats MySQL.
Je vous expose mon code :
Code PHP:

require("fonctions.php");
   
connectDB();
   
mysql_select_db('news'
       or die(
"problème de selection de base : " mysql_error());
   
$req "SELECT id , auteur , la_date , news FROM news WHERE (1 <= id )<= 10"
       
or die("problème de requête : " mysql_error());
   
$res mysql_fetch_array(mysql_query($req)) 
       or die(
"problème de conversion de résultat de requête : " mysql_error());
   for ( 
$i=$i 10 $i++ )
       {
   ...
       };
   
mysql_close(); 
Je bloque dans la boucle for , là où il y a les '...' , je sollicite donc votre aide
Code PHP:

$result mysql_query($req) or die(mysql_error());
while (
$data mysql_fetch_array($result))
   echo 
"<div>".$data['auteur']." ".$data['la_date']."etc,etc</div>"
Citation :
Publié par Dioxine
Code PHP:

  $result mysql_query($req) or die(mysql_error());
  while (
$data mysql_fetch_array($result))
     echo 
"<div>".$data['auteur']." ".$data['la_date']."etc,etc  . " </div>"; 
J'ai pas trop compris pourquoi mais ca marche ( mis à part le . " qui manquait mais bon , c'est rien comparé à l'importance de l'algorythme) , merci beaucoup .
D'après ma supposition , $data la première fois sera un tableau à une dimension et va prendre les valeurs de la première du tableau mysql_fetch_array($result) , la fois d'après $data va prendre les valeurs de la ligne suivante de mysql_fetch_array($result) , etc etc , .... j'ai bon ?
Citation :
Publié par Landstalker/Mouna
J'ai pas trop compris pourquoi mais ca marche ( mis à part le . " qui manquait mais bon , c'est rien comparé à l'importance de l'algorythme) , merci beaucoup .
D'après ma supposition , $data la première fois sera un tableau à une dimension et va prendre les valeurs de la première du tableau mysql_fetch_array($result) , la fois d'après $data va prendre les valeurs de la ligne suivante de mysql_fetch_array($result) , etc etc , .... j'ai bon ?
C'est ca.
Un résultat de requete est un tableau à 2 dimensions, et le mysql_fetch_array() permet de sortir les lignes une par une sous forme de tableau à un dimension

Mais en fait c'est le mysql_query qui est sous forme d'un tableau à 2 dimensions, et le fetch sous forme de tableau à 1 dimension.
BOn , j'ai un autre problème maintenant , un problème de requête SQL :
Code PHP:

$req "SELECT id , auteur , la_date , news FROM news WHERE " $id " <= id <= " $id2 

Le
Code PHP:

   "WHERE " $id " <= id <= " $id2 

ne fonctionne apparemment pas. Comment faire une requête pour que l'identifiant id soit compris entre 2 valeurs ' id et id2 ?
Citation :
Publié par Dioxine
Code PHP:

   $result mysql_query($req) or die(mysql_error());
   while (
$data mysql_fetch_array($result))
      echo 
"<div>".$data['auteur']." ".$data['la_date']."etc,etc</div>"
petit retour sur l'algo , j'ai pas compris ce qui conditionne la fin de la boucle while

Edit : Oups , je viens de comprendre grace a Nexen , désolé.
Citation :
Code PHP:

$result mysql_query($req) or die(mysql_error());
while (
$data mysql_fetch_array($result))
     echo 
"<div>".$data['auteur']." ".$data['la_date']."etc,etc</div>"
J'explique quand même

En fait, dans le while ($data = mysql_fetch_array(...)) ton while vérifie si t'as variable $data n'est pas nul (c'est a dire $data == 0)
en gros, tu pourrais remplacer ton code comme ca:

Code PHP:

do {
$data mysql_fetch_array($result);
echo 
"....";
} while (
$data /* != 0 */);
 
ou encore
 
for (
$data mysql_fetch_array($result); $data /* != 0 */ $data mysql_fetch_array($result))
echo 
"...."
car à la fin de sa liste, le mysql_fetch_array renvoie la valeurs NULL ( 0 )

voilà
Citation :
Publié par AskA
car à la fin de sa liste, le mysql_fetch_array renvoie la valeurs NULL ( 0 )
'tention à pas dire de connerie non plus, NULL != 0. NULL représente l'absence de valeur, 0 représente la valeur nulle (ouais, je sais ), 0 étant en soit une valeur, 0 n'est pas NULL

Et pour pinailler, mysql_fetch_array ne renvoie pas NULL lorsqu'il n'a plus de valeur (ce qui ne justifierait pas l'arrêt de la boucle), mais le booléen FALSE, php évaluant la contenu de la condition de la boucle et l'exécutant si "pas faux"
Citation :
Publié par Grim
'tention à pas dire de connerie non plus, NULL != 0. NULL représente l'absence de valeur, 0 représente la valeur nulle (ouais, je sais ), 0 étant en soit une valeur, 0 n'est pas NULL

Et pour pinailler, mysql_fetch_array ne renvoie pas NULL lorsqu'il n'a plus de valeur (ce qui ne justifierait pas l'arrêt de la boucle), mais le booléen FALSE, php évaluant la contenu de la condition de la boucle et l'exécutant si "pas faux"
Tu as tout à fait raison, mais le PHP étant un hybride bizzare du C, C++...
Mais mysql_fetch_array() renvoyant une valeur de type mixte, et non pas bool, et que les conditions d'arret de boucle en C ce font sur la valeur 0, d'ou ma simplification legere

de plus, le NULL define en C++ : #define NULL 0

et le bool : false ou true
et en php je crois que false = 0 et true = 1

Par contre, en SQL, le NULL n'a rien a voir avec le 0, c'est vrai, le NULL c'est l'abscence de valeur, et t'as tout a fait raison, après c'est vrai que je ne me suis pas non plus spécialisé dans le php, donc j'utilise mes connaissances dans les autres languages

enfin voilà
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés