[RESOLU]probleme de recuperation des lignes d'une requete mysql

probleme de recuperation des lignes d'une requete mysql [RESOLU] - PHP - Programmation

Marsh Posté le 01-03-2006 à 13:03:59    

Bonjour, alors voila je fait une requete sur une base de donnée Mysql pour recuperer toutes les lignes ou tuples d'une table news, le probleme c'est que le code suivant que je retrouve pourtant un peu partout ne me retourne sur 3 news existantes que les 2 derniere.....
J'imagine que ça doit etre une erreur assez basique mais j'ai beau comparer mon code avec tout ce que je peut lire pas moyen de deceler l'erreur..
le code suivant est place dans la balise BODY de ma page:
 
/////////////
<?php require_once('Connections/muteV2.php'); ?>
<?php
mysql_select_db($database_muteV2, $muteV2);
$query_getNews = "SELECT * FROM news";
$getNews = mysql_query($query_getNews) or die(mysql_error());
$Tablo_getNews = mysql_fetch_array($getNews);
$NombDeNews = mysql_num_rows($getNews);
echo $NombDeNews ?>
<table width="700" border="1">
  <tr>
    <td>NumeroPage</td>
    <td>Date</td>
    <td>Titre</td>
    <td>Texte</td>
    <td>Photo</td>
    <td>LienOption</td>
    <td>TextLien</td>
  </tr>
  <?php  
  $ligne;
  while($ligne <= mysql_fetch_array($getNews))
  {
  $num = $ligne["num"];
  $titre = $ligne["titre"];
  $date = $ligne["date"];
  $texte = substr($ligne["texte"],0,20);
   $image = $ligne["img"];
$lienOpt = $ligne["lienOption"];
  echo"
  <tr>
    <td>$num</td>
    <td>$date</td>
    <td>$titre</td>
    <td>$texte</td>
    <td>$image</td>
    <td>$lienOpt</td>
    <td>&nbsp;</td>
  </tr>";
  }
?>
</table>
 
//////////////////
 
le nombre de news affiché est bon, cad 3 mais seul le n°2 et 3 sont affichées...
Merci de votre aide et bonne journée ;)


Message édité par flow38 le 01-03-2006 à 13:48:31
Reply

Marsh Posté le 01-03-2006 à 13:03:59   

Reply

Marsh Posté le 01-03-2006 à 13:08:02    

déjà il sert à koi ce $ligne; avant ta boucle while ?
supprimes le il sert à rien
 
2e, elle sert à quoi la ligne : $Tablo_getNews = mysql_fetch_array($getNews);
 
puisque tu refais une boucles fetch_array plus bas ?
 
j'edite pcq j'avais mal vu
 
while($ligne <= mysql_fetch_array($getNews))  
 
t'es sur que c'est <= et pas =
 
enfin qu'est ce que tu cherches à faire. Si c'est pour afficher 20 lignes par exemple que tu comptes dans ta boucle utilise LIMIT 20 dans ta requete SQL plutot


Message édité par newneo2001 le 01-03-2006 à 13:10:32

---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
Reply

Marsh Posté le 01-03-2006 à 13:26:56    

salut, ouai alors ok pour $Tablo_getNews = mysql_fetch_array($getNews);
ça sert  si je l'utilise pas en bas....pour le <= / = c juste qu'avec le seul "=" je n'obtenais que la derniere news...
 
mais en faite ce qui me perturbe c que d'aprés ce que j'ai compris, mysql_fetch_array()  returne plusieur tablo, 1 pour chaque ligne de resultat recupere dans la BD.
Et ce que j'arrive pas a trouver de façon explicite, c'est comment on passe d'un tableau à un autre!!! :)
parceque là dans mon code je vois vraiment pas par quel miracle la variable $Tablo_getNews ($Tablo_getNews = mysql_fetch_array($getNews); ) qui contient donc normalement 3 tableau se mettrai a désigner successivement le premier puis le second et  enfin le 3eme.....
 
j'ai qud meme fait les correction a partir de tes commentaires mais j'obtien une boucle infini:
mon tableau ne cesse d'ajouter des lignes, toujours la meme , celle de la premiere news (c deja ça lol).....
 
///////////:
<?php require_once('Connections/muteV2.php'); ?>
<?php
mysql_select_db($database_muteV2, $muteV2);
$query_getNews = "SELECT * FROM news";
$getNews = mysql_query($query_getNews) or die(mysql_error());
$Tablo_getNews = mysql_fetch_array($getNews);
$NombDeNews = mysql_num_rows($getNews);
echo $NombDeNews ?>
<table width="700" border="1">
  <tr>
    <td>NumeroPage</td>
    <td>Date</td>
    <td>Titre</td>
    <td>Texte</td>
    <td>Photo</td>
    <td>LienOption</td>
    <td>TextLien</td>
  </tr>
  <?php  
   
  while($Tablo_getNews)
  {
  $num = $Tablo_getNews["num"];
  $titre = $Tablo_getNews["titre"];
  $date = $Tablo_getNews["date"];
  $texte = substr($Tablo_getNews["texte"],0,20);
    $image = $Tablo_getNews["img"];
   $lienOpt = $Tablo_getNews["lienOption"];
  echo"
  <tr>
    <td>$num</td>
    <td>$date</td>
    <td>$titre</td>
    <td>$texte</td>
    <td>$image</td>
    <td>$lienOpt</td>
    <td>&nbsp;</td>
  </tr>";
   
  }?>
</table>
</body>
 
</html>
<?php
mysql_free_result($getNews);
?>


Message édité par flow38 le 01-03-2006 à 13:27:30
Reply

Marsh Posté le 01-03-2006 à 13:33:13    

"mysql_fetch_array() retourne un tableau qui contient la ligne demandée dans le résultat result  et déplace le pointeur de données interne d'un cran."
je commence a y voir plus clair mais c pas encore ça :)

Reply

Marsh Posté le 01-03-2006 à 13:38:47    

Voila j'ai trouvé!!!
en faite à chaque exe de la fonction mysql_fetch_array() , le pointeur qui designe un des tablo avance d'un cran donc qud je faisait d'abord:
$Tablo_getNews = mysql_fetch_array($getNews);  
//$Tablo_getNews contient le tablo de la news 1
//et ensuite et c là que ça allai pas je faisai:
while($ligne = mysql_fetch_array($getNews))  
//et la $ligne contient le tablo de la news 2!!
C'est pour ça que je ne pouvais afficher que la 2 et 3 :)
 
voici le code qui marche :)
 
<body>
<?php require_once('Connections/muteV2.php'); ?>
<?php
mysql_select_db($database_muteV2, $muteV2);
$query_getNews = "SELECT * FROM news";
$getNews = mysql_query($query_getNews) or die(mysql_error());
 
$NombDeNews = mysql_num_rows($getNews);
echo $NombDeNews ?>
<table width="700" border="1">
  <tr>
    <td>NumeroPage</td>
    <td>Date</td>
    <td>Titre</td>
    <td>Texte</td>
    <td>Photo</td>
    <td>LienOption</td>
    <td>TextLien</td>
  </tr>
  <?php  
  $ligne=mysql_fetch_array($getNews);
//!!$ligne contient le premier tableau!!
  while($ligne)
  {
  $num = $ligne["num"];
  $titre = $ligne["titre"];
  $date = $ligne["date"];
  $texte = substr($ligne["texte"],0,20);
    $image = $ligne["img"];
   $lienOpt = $ligne["lienOption"];
//ici je vais "incrementer", $ligne designe le tablo suivant, qd il n'y aura plus de tablo $ligne vaudra false et on sortira de la boucle //while:):):):)
   $ligne=mysql_fetch_array($getNews);
//  
  echo"
  <tr>
    <td>$num</td>
    <td>$date</td>
    <td>$titre</td>
    <td>$texte</td>
    <td>$image</td>
    <td>$lienOpt</td>
    <td>&nbsp;</td>
  </tr>";
   
  }?>
</table>
</body>


Message édité par flow38 le 01-03-2006 à 13:40:58
Reply

Marsh Posté le 01-03-2006 à 19:37:29    

Code :
  1. $ligne=mysql_fetch_array($getNews);
  2. //!!$ligne contient le premier tableau!!
  3.   while($ligne)
  4.   {
  5.   $num = $ligne["num"];
  6.   $titre = $ligne["titre"];
  7.   $date = $ligne["date"];
  8.   $texte = substr($ligne["texte"],0,20);
  9.     $image = $ligne["img"];
  10.    $lienOpt = $ligne["lienOption"];
  11. //ici je vais "incrementer", $ligne designe le tablo suivant, qd il n'y aura plus de tablo $ligne vaudra false et on sortira de la boucle //while:):):):)
  12.    $ligne=mysql_fetch_array($getNews);
  13. //


 
 
y'a un truc super plus simple c'est de faire ca
 

Code :
  1. while($ligne = mysql_fetch_array($getNews)){
  2. }


 
et tu vires le mysql_fetch_array à la fin de ta boucle while.
 


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed