LIMIT qui ne marche pas

LIMIT qui ne marche pas - PHP - Programmation

Marsh Posté le 24-09-2002 à 17:52:28    

salut,
 
j'ai un moteur de recherche mais sur FREE il ne marche car il faut limiter le nombre de reponses...
Je veux donc limiter dans les requetes
 
J'ai essayé en local avec 5
mais ça ne marche pas pour le count :
 

Code :
  1. $sql = 'SELECT COUNT(*) AS qte FROM ';
  2.     $sql .= artistes . ' WHERE ';
  3.     $sql .= 'nom LIKE "%' . $search . '%"';
  4.     $sql .='LIMIT 5 ';
  5.     $p = mysql_query($sql);
  6.     $total1 = mysql_result($p,"0","qte" );


 
 [:zoutte]


---------------
Make Portraits, Not War!  
Reply

Marsh Posté le 24-09-2002 à 17:52:28   

Reply

Marsh Posté le 24-09-2002 à 18:06:36    

Code :
  1. $sql = "SELECT COUNT(*) AS qte FROM artistes WHERE nomLIKE '%$search . '%' LIMIT 0,[g]5 ';
  2. $p = mysql_query($sql);
  3. $total1 = mysql_result($p,"0","qte" );


je croit que c'est ce que tu cherche ;-)


---------------
Mon blog de nerd...
Reply

Marsh Posté le 24-09-2002 à 18:19:44    

merci mais nan ça ne marche pas...
Si tu regardes bien, le 0 est deja dans le mysql_result :/


---------------
Make Portraits, Not War!  
Reply

Marsh Posté le 24-09-2002 à 18:23:23    

:heink:  
select count(*) from truc  
ça te renvoie jamais qu'un seul record hein...


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 24-09-2002 à 19:05:51    

ah oui, effectivement ! :??:


---------------
Mon blog de nerd...
Reply

Marsh Posté le 24-09-2002 à 20:15:11    

--greg-- a écrit a écrit :

 :heink:  
select count(*) from truc  
ça te renvoie jamais qu'un seul record hein...




 
??
ça veut dire que je peux pas limiter...
 
bein ya bien un moyen :
en fait, j'ai une requete pour "artistes" et une requete pour "chansons".
 
et sur la page je veux que ça soit afficher : 18 resultats trouvés etc...
 
bon ça marche mais comme j'ai limité la requete "artistes" et "chansons" il faut aussi que je limit la requete du count nan ?


---------------
Make Portraits, Not War!  
Reply

Marsh Posté le 24-09-2002 à 20:31:03    

Le 'count', ca ne renvoie qu'une seule ligne, contenant le nombre de lignes qu'aurait eu le résultat si t'avais pas mis le count.

Reply

Marsh Posté le 24-09-2002 à 21:10:13    

bon faut m'aider alors si pas moyen de cette maniere
 
je repete
 
j'ai 2 requetes pour un moteur de recherche sur "artistes" et "chansons".
hop ca marche jaffiche les resultats...
ensuite jaffiche le nombres de resultats à ces 2 requetes.
 
par exemple:

Citation :

38 resultats trouvés à votre recherche


 
là tt marche bien
 
mais à cause de free, il faut que je limite ces 2 requetes...
mais le nombre de resultat lui il va compter normalement le tout puisque je n'ai rien touché
 
et c là ou je blok justement!
 
zavez compris  [:xx_xx]


Message édité par ludo2604 le 24-09-2002 à 21:12:04

---------------
Make Portraits, Not War!  
Reply

Marsh Posté le 24-09-2002 à 21:22:56    

Si je comprends bien, tu veux afficher par blocs le résultat d'une requête (en plusieurs pages donc), tout en indiquant le nombre total de champs concernés (la somme des champs de toutes les pages) ?
Ca, je sais pas faire, mais ca m'intéresse :(

Reply

Marsh Posté le 24-09-2002 à 21:38:04    

mrbebert a écrit a écrit :

Si je comprends bien, tu veux afficher par blocs le résultat d'une requête (en plusieurs pages donc), tout en indiquant le nombre total de champs concernés (la somme des champs de toutes les pages) ?
Ca, je sais pas faire, mais ca m'intéresse :(  




 
Non c pas ca :D
on va y arriver
 
bon j'ai un moteur de recherche
jaffiche sur la page de resultat du moteur de recherche le nombres de reponses au recherche.
 
tt va bien là
 
mais sur Free, on est obligé de LIMITer les resultats pour une question de sécurité pour FREE (ce qui est normal)  
 
donc je limit le tout mais pour laffichage du nombres de reponses comment limiter aussi ?


---------------
Make Portraits, Not War!  
Reply

Marsh Posté le 24-09-2002 à 21:38:04   

Reply

Marsh Posté le 24-09-2002 à 21:49:14    

Dans tous les cas, un SELECT count(*) FROM ... ne renvoie qu'une ligne.
A priori, un LIMIT 0, 1 devrait suffire.
Je teste demain [:proy]

Reply

Marsh Posté le 25-09-2002 à 10:04:57    

Sur mysql 3.23.52, 'SELECT count(*) FROM table' renvoie la même chose que 'SELECT count(*) FROM table LIMIT 0, 1'
Le count(*) porte bien sur l'ensemble de la table, avant que le résultat ne soit tronqué par le LIMIT.

Reply

Marsh Posté le 25-09-2002 à 11:52:53    

désespérant ce topic [:drwatson]
 
mrbebert: t'as quand meme repeté 3 fois ce que j'avais dit a mon 1er post, et il a tjs pas compris  :ouch:  :??:


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 25-09-2002 à 12:52:10    

--greg-- a écrit a écrit :

désespérant ce topic [:drwatson]
 
mrbebert: t'as quand meme repeté 3 fois ce que j'avais dit a mon 1er post, et il a tjs pas compris  :ouch:  :??:




 
siiiiii j'ai comprissssssssssssss
 
mais j'ai 10 affichages
 
je ne veux pas qu'ily ai "38 resultats à cette recherche"
 
YA PAS un Autre moyen de limiter alors ?


---------------
Make Portraits, Not War!  
Reply

Marsh Posté le 25-09-2002 à 14:14:12    

castor666 a écrit a écrit :

Code :
  1. $sql = "SELECT COUNT(*) AS qte FROM artistes WHERE nomLIKE '%$search '%' LIMIT 0,[g]5 ';
  2. $p = mysql_query($sql);
  3. $total1 = mysql_result($p,"0","qte" );


je croit que c'est ce que tu cherche ;-)




 
BAH VOILA !!  :fou:  
Si tu le met dans le mysql request le 0, ca sert a rien...
Et on m'ecoute pas  :o


---------------
Mon blog de nerd...
Reply

Marsh Posté le 25-09-2002 à 14:22:36    

ludo2604 a écrit a écrit :

 
 
siiiiii j'ai comprissssssssssssss
 
mais j'ai 10 affichages
 
je ne veux pas qu'ily ai "38 resultats à cette recherche"
 
YA PAS un Autre moyen de limiter alors ?



:pt1cable:  :pt1cable:  
 
Tu veux qu'il y ait quoi alors :??:  :??:

Reply

Marsh Posté le 25-09-2002 à 14:27:03    

ce qu'il cherche, c'est ça :

Code :
  1. $sql = "SELECT COUNT(*) AS qte FROM artistes WHERE nomLIKE '%$search '%' LIMIT 0,5 '; 
  2.   $p = mysql_query($sql); 
  3.   $total1 = mysql_result($p,"0","qte" );


Dans ce cas, le limit 0,5 fonctionne..
Mais le probleme, c'est que si il limite a 5, ca renvoira evidement 5 ligne  :sarcastic:


---------------
Mon blog de nerd...
Reply

Marsh Posté le 25-09-2002 à 14:44:23    

castor666 a écrit a écrit :

 
 
BAH VOILA !!  :fou:  
Si tu le met dans le mysql request le 0, ca sert a rien...
Et on m'ecoute pas  :o  




Bah non ça marche pas :/


Message édité par ludo2604 le 25-09-2002 à 14:47:57

---------------
Make Portraits, Not War!  
Reply

Marsh Posté le 25-09-2002 à 14:49:53    

ludo2604 a écrit a écrit :

kkun a-t-il compris mon prob ?


non
Prenons un cas concret : t'as une requête où le "WHERE nom LIKE '% . $search . %'" correspond à 50 enregistrements et tu limites tes pages à 20 lignes. Tu veux qu'il mette quoi en haut ?

Reply

Marsh Posté le 25-09-2002 à 14:56:22    

mrbebert a écrit a écrit :

 :pt1cable:  :pt1cable:  
 
Tu veux qu'il y ait quoi alors :??:  :??:  




 
arf je vais mettre un exemple
 
par exemple je tappe le mot "love" dans le moteur de recherche qui cherche dans ma table "artistes" et "titres"
 
bon sur ma page de resultats
 
Il ya :
 

Citation :

Recherche du mot ' love ' : Il y a 75 résultats correspondant à votre requete.


 //liste des 75 resultats
 

Citation :

All the love in the world - Corrs (the)
. All you need is love - Beatles (the)
. Baby love - Joan Osborne
. Could you be loved - Bob Marley
. Digital Love - Daft Punk
. Don't say you love me - Corrs (the)
. Falling in love again - Eagle Eye Cherry
. Hate this and I'll love you - Muse
etc..


 
ca c en local ok.
 
sur Free, il me faut limiter les resultats...
Je décide par exemple de limiter à 30.
 

Citation :

//liste des 30 resultats
 All the love in the world - Corrs (the)
. All you need is love - Beatles (the)
. Baby love - Joan Osborne
. Could you be loved - Bob Marley
. Digital Love - Daft Punk
. Don't say you love me - Corrs (the)
. Falling in love again - Eagle Eye Cherry
. Hate this and I'll love you - Muse
etc..


 
mais pour ça :
 

Citation :

Recherche du mot ' love ' : Il y a 75 résultats correspondant à votre requete.


 
lui il va toujours rester à 75 puisqu'on ne la pas limiter!
comment faire pour limiter ca voila !!


---------------
Make Portraits, Not War!  
Reply

Marsh Posté le 25-09-2002 à 15:01:36    

ok, dans ce cas là, il fô faire 2 requetes
 
une qui va compter tes résultats, sans de LIMIT
une qui va chercher tes infos dans ta base, avec un LIMIT $Start,30
 
où $Start est une variable renvoyé par un lien du style : result.php?Start=$Start+30 (attention, synthaxe fausse, mais j'ai pas tout le code en tête)
 
voilà

Reply

Marsh Posté le 25-09-2002 à 15:05:36    

Si la première requête trouve 75 résultats, tu peux limiter la deuxième à ... 75 :D  
 
Ou alors, tu dis : "75 résultats trouvés, voici les 30 premiers" (si tu limites à 30), et tu mets un bouton "page suivante" en bas de la page pour accéder aux 30 suivants.
 
Ou encore, tu fais plusieurs requêtes dans la même page, chacune renvoyant 30 lignes.


Message édité par mrbebert le 25-09-2002 à 15:06:51
Reply

Marsh Posté le 25-09-2002 à 15:11:42    

moi, g fait ça :  
 

Code :
  1. $Querycount="select COUNT(ID) from auto Where ((Valid like '1') $Mk $Md $Fl $Et $Px)";
  2. $Resultcount=MYSQL_QUERY ("$Querycount" );
  3. $Row=MYSQL_FETCH_ROW ($Resultcount);
  4. $Query="SELECT * from auto Where ((Valid like '1') $Mk $Md $Fl $Et $Px) order by $Tri $Ss LIMIT $St,$Li";
  5. $Result=MYSQL_QUERY ("$Query" );
  6. While ($Tab=MYSQL_FETCH_ROW ($Result))
  7. {
  8. echo "ce que tu veux";
  9. }
  10. $Next=$St-$Li;
  11. $Prev=$St+$Li;
  12. If ($Tri=="ID" ){$Tri="";}
  13. If ($Prev>="$Row[0]" ){$PicPrev="";}
  14. Else {
  15. $PicPrev="<img src=\"../../img/auto/prev.gif\" width=\"20\" height=\"5\">";
  16. $TxtPrev="<A Href=\"main.php?Tri=$Tri&Ss=$Ss&St=$Prev&Li=$Li&Mk=$Mk&Md=$Md&Fl=$Fl&Et=$Et&Pmin=$Pmin&PMax=$PMax\" class=\"Link2\">Annonces précédentes</A>";}
  17. If ($Next<"0" ){$PicNext="";}
  18. Else {
  19. $PicNext="<img src=\"../../img/auto/next.gif\" width=\"20\" height=\"5\">";
  20. $TxtNext="<A Href=\"main.php?Tri=$Tri&Ss=$Ss&St=$Next&Li=$Li&Mk=$Mk&Md=$Md&Fl=$Fl&Et=$Et&Pmin=$Pmin&PMax=$PMax\" class=\"Link2\">Annonces suivantes</A>";
  21.      }
  22. echo "
  23.       <table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
  24.        <tr>
  25.         <td width=\"30\"> </td>
  26.         <td align=\"left\" valign=\"middle\" width=\"20\">$PicPrev</td>
  27.         <td align=\"left\" valign=\"middle\">$TxtPrev</td>
  28.         <td align=\"right\" valign=\"middle\">$TxtNext</td>
  29.         <td width=\"20\" align=\"right\" valign=\"middle\">$PicNext</td>
  30.         <td width=\"30\"> </td>
  31.        </tr>
  32.       </table>
  33. ";

Reply

Marsh Posté le 25-09-2002 à 18:24:19    

Et avec un sous-select ? Y a pas moyen?
 
Enfin je suis pas sur qu'on puisse en MySQL mais je me trompe peut etre??? jamais essayé ...  :??:  
 
sinon la solution de mrbebert me parrait correcte et la meilleure:  
 

Si la première requête trouve 75 résultats, tu peux limiter la deuxième à ... 75 :D  
 
Ou alors, tu dis : "75 résultats trouvés, voici les 30 premiers" (si tu limites à 30), et tu mets un bouton "page suivante" en bas de la page pour accéder aux 30 suivants.  
 
Ou encore, tu fais plusieurs requêtes dans la même page, chacune renvoyant 30 lignes.


 
a+


---------------
J'ai une pierre à la place du coeur, et au milieu de cette pierre il y a un coeur.
Reply

Marsh Posté le 25-09-2002 à 18:30:53    

c'est du délire ce post  :ouch:  :ouch:  
 
 
tu crées une variable $Max qui contiendra le nombre MAXIMUM de ligne à retourner.
 
tu fais ta requête LIMIT $Max
 
tu compte le nombre de résultat avec  
$Total = mysql_num_rows()
 
si tu t'arrêtes à 30 résultat, $Total vaudra 30
si t'as que 12 résultats $Total vaudra 12 (soit le nombre de lignes retournées par la requête)


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 26-09-2002 à 10:29:49    

Sh@rdar a écrit a écrit :

c'est du délire ce post  :ouch:  :ouch:



 +1

Reply

Marsh Posté le 26-09-2002 à 10:46:37    

c'est ce que je dis depuis le debut :D

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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