Lire des données requêtes mysql sans boucle

[Résolu/Fermé]
Signaler
-
 Titanboy -
Bonjour à tous! c'est mon premier message sur ce forum, j'espère qu'il s'avèrera payant!Ce que je cherche à faire n'est pas très compliqué (je pense) mais je galère un peu!
En fait, je souhaite lire des données de ma base de donnée, en selectionant les 15 première par exemple, mais je ne veux pas qu'elles soient lues en boucle!
Voici le code que j'ai actuellement:


$reponse = mysql_query("SELECT * FROM top LIMIT 0, 15");
while ($donnees = mysql_fetch_array($reponse) )
{
?>
<a href="<?php echo $donnees['categorie']; ?>"><?php echo $donnees['image']; ?></a>
<?php
}



Donc ce code va m'afficher la liste des 15 images concernées.

Moi je veux pouvoir choisir où placer les images, la num1, la num2 etc...
Par exemple, d'en mettre 2 sur la première ligne, 5 sur la deuxième, 1 sur la 3eme etc... donc je veux pouvoir choisir mes images et les placer ou bon me semble!
Je pense que c'est la ligne
while ($donnees = mysql_fetch_array($reponse) )
qu'il doit falloir modifier, et ensuite, dans mon texte, pour l'appel il doit suffir de faire un truc du genre voici l'image numero 3: [num3] puis la 12eme: [num12], bref, choisir celles que je veux!
Pourquoi je les appel pas simplement?
Et bien parcqu'il y'aura une pagination automatique donc sur la 2eme page, les images appelées ne seront pas les meme...
Bref, je sais pas si je suis bien clair! :-)
On verra bien...
Merci d'avance!

4 réponses

Bonjour

Je vois plusieurs possibilités :
Tu ajoutes dans ta base un champ qui indique l'ordre dans lequel tu veux tes images et tu modifies ta requête :
$reponse = mysql_query("SELECT * FROM top ORDER BY monordre LIMIT 0, 15");

Si tu veux toujours le même ordre par groupe de 15, tu enregistres tes 15 lignes dans un tableau, puis tu affiches dans l'ordre que tu veux :
$meslignes=array();
$reponse = mysql_query("SELECT * FROM top LIMIT 0, 15");
while ($donnees = mysql_fetch_array($reponse) ) {
  $meslignes[]='<a href= "'. $donnees['categorie']. '">'. $donnees['image']. '</a>';
}
// affichage
if (isset($meslignes[3])) echo $meslignes[3];
if (isset($meslignes[12])) echo $meslignes[12];
...
Ah, je sens que derrière le père se cache "Dieu"!
Lol
Du coup, pendant que je te tiens ;-)
Je n'ai peut etre pas été très clair, j'ai fais des recherche depuis tout a l'heure, il semble que je sois sur la bonne piste avec mysql_result . Pour etre plus explicatif, je veux faire un tableau de type

$result=mysql_query('SELECT * FROM top50 LIMIT (code pagination automatique pour selectionner les images de 0 à 6) );

{
<table>
<tr>
<td>
echo '<div>';
echo '<h6>MON TITRE</h6>';
echo '<a href="'.mysql_result($result, 0, 'url').'"><img src="'.mysql_result($result, 0, 'image').' /></a>';
echo '<a href="'.mysql_result($result, 0, 'url').'">Cliquez ici</a><br>';
echo '</div>';
</td>
<td>
echo '<div>';
echo '<h6>MON TITRE</h6>';
echo '<a href="'.mysql_result($result, 1, 'url').'"><img src="'.mysql_result($result, 1, 'image').' /></a>';
echo '<a href="'.mysql_result($result, 1, 'url').'">Cliquez ici</a><br>';
echo '</div>';
</td>
<td>
echo '<div>';
echo '<h6>MON TITRE</h6>';
echo '<a href="'.mysql_result($result, 2, 'url').'"><img src="'.mysql_result($result, 2, 'image').' /></a>';
echo '<a href="'.mysql_result($result, 2, 'url').'">Cliquez ici</a><br>';
echo '</div>';
</td>
</tr>
<tr>
<td>
echo '<div>';
echo '<h6>MON TITRE</h6>';
echo '<a href="'.mysql_result($result, 3, 'url').'"><img src="'.mysql_result($result, 3, 'image').' /></a>';
echo '<a href="'.mysql_result($result, 3, 'url').'">Cliquez ici</a><br>';
echo '</div>';
</td>
<td>
echo '<div>';
echo '<h6>MON TITRE</h6>';
echo '<a href="'.mysql_result($result, 4, 'url').'"><img src="'.mysql_result($result, 4, 'image').' /></a>';
echo '<a href="'.mysql_result($result, 4, 'url').'">Cliquez ici</a><br>';
echo '</div>';
</td>
<td>
echo '<div>';
echo '<h6>MON TITRE</h6>';
echo '<a href="'.mysql_result($result, 5, 'url').'"><img src="'.mysql_result($result, 5, 'image').' /></a>';
echo '<a href="'.mysql_result($result, 5, 'url').'">Cliquez ici</a><br>';
echo '</div>';
</td>
</tr>
</table>

}






Ca a l'air de marcher, mais le problème que j'ai, c'est qu'avec la pagination automatique, quand on va arriver a la dernière page, si les images ne sont pas un multiple de 6, mon script beug, et affiche des erreur dans la requete! Comment faire la meme chose, mais en faisant en sorte que les données s'arretent automatiquement à 1, 2, ou 3 images en fonction sur la dernière page?

Exemple sur ce site de jeux en flash:
http://www.jeuxvideo-flash.com/1-jeux-combat/liste-id-desc-14-20.php
Le script affiche 20 jeux, avec une pub au milieur, et quand on va sur la dernière page, en bas, on a pas des erreur, mais des cases blanches à la fin car la liste n'est pas un multiple de 20!
Bonjour

Effectivement, tu n'as pas été très clair... Dans ton 1er message, tu dis clairement que tu veux pouvoir afficher tes résultats dans un ordre quelconque, et dans ton message de 23h39 tu les affiches simplement dans l'ordre. Qu'est-ce que tu veux en fait ?
Quant au problème de la dernière page qui n'est pas complète, il est parfaitement réglé par le code que je t'ai donné. Le "isset" dans if (isset($meslignes[3])) echo $meslignes[3]; sert précisément à ça : à ne pas afficher si la ligne n'existe pas
AAAAAAhhhhhh!
Mais c'est dingue j'avais la bonne réponse sous les yeux!
C'est parfaitement ça le père!
Bravo et milles merci!
En fonction du nombre d'entrées, le "td" s'affiche ou pas, c'est génial!
Merci milles fois... :-)
OUAIIIIIIIIIIS J'suis trop contennnnnnnnnt!