Continuer d'afficher les resultats après un where

Eléphant du PHP | 66 Messages

13 nov. 2006, 17:54

Salut,

lorque je fais cette requete

Code : Tout sélectionner

SELECT * FROM link WHERE categorie LIKE '%".$_GET["cat"]."%' ORDER BY id DESC
il m'affiche tout a fait logiquement les resultat contenant la chaine de caractère contenue dans la variable $_GET["cat"].

Le probleme c'est que mon design est formaté pour afficher un certain nombre de résultat et donc si il y'a moins de resultats que ce que la page prevoit, il y'a un espace vide. J'ai donc fait une seconde requete qui continue d'afficher les resultats en excluant les resultats de la premiere, tout fonctionne correctement.

Je voulais savoir si cela était possible en 1 seule requete pour des question d'optimisation. J'ai regarder dans la doc sql mais je ne voit rien qui parle de ce genre d'operation.

Merci d'avance.

Eléphant du PHP | 193 Messages

13 nov. 2006, 19:00

Regarde peut-être du côté de UNION: ça permets d'afficher le résultat de deux requêtes en une seule passe, sous condition que les deux aient le même nombre de colonnes et que celle-ci soient du même type. A toi de trouver comment avoir celles que tu veux en premier, peut-être avec un champs renseigné en dur avec une valeur différente dans les deux SELECT.

Eléphant du PHP | 66 Messages

13 nov. 2006, 20:03

Cela fonctionne merci a toi, j'ai un autre probleme maintenant. Voici donc ma requete.
$sql="(SELECT * FROM link WHERE categorie LIKE '%".$_GET["cat"]."%' ORDER BY id DESC)
      UNION
      (SELECT * FROM link ORDER BY RAND())";
C'est tres pratique car la requete supprime automatiquement les doublons, parcontre le RAND() ne fonctionne pas, il m'affiche toujours tout dans le même ordre.

Merci en tout cas, ca m'avance déja bien.