> Tous les forums > Forum des Webmasters
 [MySQL] Problème avec LIMIT
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
Bleys
  Posté le 16/10/2007 @ 23:17 
Aller en bas de la page 
Astucien

Bonsoir tout le monde,

mon soucis est simple à expliquer, j'espère donc que la solution le sera aussi ...

J'ai une fonction stock_voitures , qui tel quelle ne fonctionne pas :

non fonctionelle
  1. function stock_voitures($marque,$modele,$type,$debut,$nbMessages)
  2. {
  3. global $db;
  4. $param = array();
  5. $param[":debut"]=$debut;
  6. $param[":nbMessages"]=$nbMessages;
  7. $sql='SELECT (marques.Nom) As "marque", (modeles.Nom) As "modele" ';
  8. $sql.='FROM marques, modeles, stock ';
  9. $sql.='WHERE marques.Id_Marque=modeles.Id_Marque AND stock.Id_Modele=modeles.Id_Modele ';
  10. if ($marque!=-1)
  11. {
  12. $sql.='AND marques.Id_Marque= :marque ';
  13. $param[":marque"]=$marque;
  14. }
  15. if ($modele!=-1)
  16. {
  17. $sql.='AND modeles.Id_Modele=:modele ';
  18. $param[":modele"]=$modele;
  19. }
  20. if ($type!=-1)
  21. {
  22. $sql.='AND stock.Type=:type ';
  23. $param[":type"]=$type;
  24. }
  25. $sql.='ORDER BY marque ASC ';
  26. $sql.='LIMIT :debut ,:nbMessages';
  27. $statement=$db->prepare($sql);
  28. $statement->execute($param);
  29. $result=$statement->fetchAll();
  30. return $result;
  31. }

Par contre si je fais ceci tout fonctionne :

Version fonctionnelle mais ne renvoie pas ce qui est désiré
  1. function stock_voitures($marque,$modele,$type,$debut,$nbMessages)
  2. {
  3. global $db;
  4. $param = array();
  5. $param[":debut"]=$debut;
  6. $param[":nbMessages"]=$nbMessages;
  7. $sql='SELECT (marques.Nom) As "marque", (modeles.Nom) As "modele" ';
  8. $sql.='FROM marques, modeles, stock ';
  9. $sql.='WHERE marques.Id_Marque=modeles.Id_Marque AND stock.Id_Modele=modeles.Id_Modele ';
  10. if ($marque!=-1)
  11. {
  12. $sql.='AND marques.Id_Marque= :marque ';
  13. $param[":marque"]=$marque;
  14. }
  15. if ($modele!=-1)
  16. {
  17. $sql.='AND modeles.Id_Modele=:modele ';
  18. $param[":modele"]=$modele;
  19. }
  20. if ($type!=-1)
  21. {
  22. $sql.='AND stock.Type=:type ';
  23. $param[":type"]=$type;
  24. }
  25. $sql.='ORDER BY marque ASC ';
  26. //$sql.='LIMIT :debut ,:nbMessages'; -----------------------------MODIFICATION ICI
  27. $statement=$db->prepare($sql);
  28. $statement->execute($param);
  29. $result=$statement->fetchAll();
  30. return $result;
  31. }

... au détail près que ça ne me renvoie pas ce que je veux ...

Ce que je voudrais c'est que ça ne me renvoie que les $nbMessagesréponses de ma requête.

Dans le premier cas, ma fonction ne me renvoie strictement rien ... Dans le deuxième cas elle me renvoie bien toute la table, j'en suppose donc que ma requête est valide ...

Mais alors où est le problème avec LIMIT ?

Par avence merci pour votre aide



Modifié par Bleys le 16/10/2007 23:18
Publicité
Pomp
 Posté le 17/10/2007 à 12:52 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Tu utilises easyphp?

Si oui tu peux tester tes requêtes directement dedans.

Ensuite si la seule différence entre les 2 versions était une petite ligne LIMIT c'était pas la peine de balancer tout ce code pour qu'on évite de tout lire pour rien.

Tu as vérifier le ";" où tu l'as mis dans la requête?

Bleys
 Posté le 17/10/2007 à 23:21 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonsoir,

le fait de mettre tout le code c'était pour déceler si mon erreur ne venait pas d'ailleurs (mauvaise affectation de variable ou autre)

mais en fait j'ai trouvé le problème, je pense l'avoir identifier, j'ai une solution à celui-ci mais qui ne me plaît pas ...

Donc à moins que quelqu'un me propose mieux je ferais avec celle-ci.

Le problème vient apparement du fait que PDO ne gère pas le fait de mettre un paramètre s'il n'y a pas de signe égal devant (egal ou autre je pense).

Du coup en faisant comme ceci ça fontionne :


  1. $sql.='ORDER BY Marque ASC ';
  2. $sql.='LIMIT '.$debut.','.$nbMessages;
  3. $statement=$db->prepare($sql);
  4. $statement->execute($param);
  5. $result=$statement->fetchAll();

Voila, voila

A bon entendeur, et merci pour toute possible aide

Pomp
 Posté le 17/10/2007 à 23:37 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

déjà c'est quoi ton message d'erreur avec ta 1ere fonction ?

Bleys
 Posté le 17/10/2007 à 23:46 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Il n'y a pas de message d'erreur, elle ne renvoie rien ...
Pomp
 Posté le 19/10/2007 à 20:07 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien
Le problème vient surement, logiquement, des variables que tu passes à LIMIT alors.
Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
999,99 €PC Portable Asus Zenbook S 14 pouces (Core i7, 3.3K tactile, 16Go, SSD 512Go, Iris Xe) à 999,99 €
Valable jusqu'au 25 Mai

RueDuCommerce fait une superbe promotion sur l'ordinateur portable Asus Zenbook 14 S UX393EA-HK025T qui passe à 999 € alors qu'on le trouve ailleurs autour de 1400 €. Cet ultra portable très puissant dispose d'une dalle IPS 3.3 K tactile (3300x2200) 3:2 de 14 pouces à bords très fins qui lui permet d'avoir un encombrement réduit.

Il possède d'un processeur Intel Core i7-1165G7, 16 Go de RAM, un SSD de 512 Go, un chip graphique Iris Xe et ne pèse que 1,35 kg. Le tout tourne sous Windows 10 que vous pouvez passer à Windows 11 et offre une autonomie d'une vingtaine d'heures. Les traditionnels WiFi 6, Bluetooth 5, lecteur de carte mémoire et Webcam HD infrarouge sont de la partie ainsi qu'un pavé numérique intégré au touchpad. 


> Voir l'offre
258,37 €Smartphone 6,5 pouces Samsung Galaxy A52S (FullHD+, 8 coeurs, 6Go, 128Go, 5G) à 258,37 € livré
Valable jusqu'au 26 Mai

Amazon Allemagne fait une belle promotion sur le smartphone 6,5 pouces Samsung Galaxy A52S 5G qui passe à 253,37 € (avec la TVA ajustée). Comptez 5 € pour la livraison en France soit un total de 258,37 € livré au lieu de 325 €. Il intègre un bel écran Super AMOLED 120 Hz de 6.5" à résolution Full HD+ de 1080 x 2400 pixels qui offre une incroyable clarté lors de toutes vos utilisations.

En outre, il peut s'appuyer sur son processeur Qualcomm Snapdragon 778G Octo-Core cadencé à 2.4 GHz, ses 6 Go de RAM et sa capacité de stockage de 128 Go. Particulièrement fin, il s'arme de toutes les dernières innovations pour vous simplifier la vie et vous permettre de laisser libre cours à toutes vos envies. De plus, grâce à son quadruple capteur photo de 64+12+5+5 MP, offrez-vous la liberté de capturer encore plus largement le monde qui vous entoure.

Le tout tourne sous Android 11 en français dès le premier démarrage. Téléphone garanti 2 ans.


> Voir l'offre
699,99 €Ultraportable 14 pouces Asus Vivobook S3400QA (OLED WQXGA+, Core i5, 8 Go, SSD 512 Go) à 699,99 €
Valable jusqu'au 25 Mai

Cdiscount fait une belle promotion sur l'ultraportable Asus Vivobook S3400PA-KM014W qui passe à 699,99 € au lieu de 800 €. Cet ordinateur dispose d'un superbe écran 14 pouces OLED WQXGA+ 2.8K (2880x1800), d'un processeur Intel Core i5 11300H, de 8 Go de RAM, un SSD NVMe de 512 Go et tourne sous Windows 10 que vous pouvez mettre à jour pour Windows 11. Il ne pèse que 1,40 kg et propose une autonomie réelle de 7h30.

Un très bon portable avec un superbe écran idéal pour la bureautique, Internet et le multimédia.


> Voir l'offre

Sujets relatifs
probleme d'accent avec des donnée mysql en j2ee
Probleme avec le mysql et espace membre
Problème avec Mysql
problème pourconfigurer dreamweaver avec php mysql
Problème avec free
problème avec fichier "xxx.klm"
problème avec google
Problème avec le panel d'un hébergeur d'image
Problème avec onduleur APC; Back-UPS PRO 900
Probléme avec vos liens
Plus de sujets relatifs à [MySQL] Problème avec LIMIT
 > Tous les forums > Forum Forum des Webmasters