probleme de recuperation des lignes d'une requete mysql [RESOLU] - PHP - Programmation
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
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> </td>
</tr>";
}?>
</table>
</body>
</html>
<?php
mysql_free_result($getNews);
?>
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
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> </td>
</tr>";
}?>
</table>
</body>
Marsh Posté le 01-03-2006 à 19:37:29
Code :
|
y'a un truc super plus simple c'est de faire ca
Code :
|
et tu vires le mysql_fetch_array à la fin de ta boucle while.
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> </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