Requête d'une donnée dans BDD

Requête d'une donnée dans BDD - PHP - Programmation

Marsh Posté le 19-10-2014 à 11:13:07    

Bonjour à tous, je souhaiterais  récupérer la valeur d'une seule case dans ma BDD. Voici mon code :

Code :
  1. <?php
  2. try
  3. {
  4.     // On se connecte à MySQL
  5.     $bdd = new PDO('mysql:host=*******;dbname=********', '*******', '*********');
  6. }
  7. catch(Exception $e)
  8. {
  9.     // En cas d'erreur, on affiche un message et on arrête tout
  10.         die('Erreur : '.$e->getMessage());
  11. }
  12. // Si tout va bien, on peut continuer
  13. // On récupère tout le contenu de la table jeux_video
  14. $reponse = $bdd->query('SELECT * FROM news_accueil ORDER BY date_heure DESC LIMIT 2,3');
  15. // On affiche chaque entrée une à une
  16. while ($donnees = $reponse->fetch())
  17. {
  18. ?>
  19. <?php echo $donnees['titre']; ?>
  20. <?php
  21. }
  22. $reponse->closeCursor(); // Termine le traitement de la requête
  23. ?>


 
Mais j'obtient la titre de ma 3 et 4 ème ligne.

Reply

Marsh Posté le 19-10-2014 à 11:13:07   

Reply

Marsh Posté le 19-10-2014 à 14:06:02    

sparadra1 a écrit :

Bonjour à tous, je souhaiterais  récupérer la valeur d'une seule case dans ma BDD. Voici mon code :

Code :
  1. <?php
  2. try
  3. {
  4.     // On se connecte à MySQL
  5.     $bdd = new PDO('mysql:host=*******;dbname=********', '*******', '*********');
  6. }
  7. catch(Exception $e)
  8. {
  9.     // En cas d'erreur, on affiche un message et on arrête tout
  10.         die('Erreur : '.$e->getMessage());
  11. }
  12. // Si tout va bien, on peut continuer
  13. // On récupère tout le contenu de la table jeux_video
  14. $reponse = $bdd->query('SELECT * FROM news_accueil ORDER BY date_heure DESC LIMIT 2,3');
  15. // On affiche chaque entrée une à une
  16. while ($donnees = $reponse->fetch())
  17. {
  18. ?>
  19. <?php echo $donnees['titre']; ?>
  20. <?php
  21. }
  22. $reponse->closeCursor(); // Termine le traitement de la requête
  23. ?>
 

Mais j'obtient la titre de ma 3 et 4 ème ligne.


 :hello: !

 

Si tu veux des réponses à ta question, regarde la syntaxe de la commande SELECT en MySQL : http://dev.mysql.com/doc/refman/5.7/en/select.html
Et surtout la syntaxe de l'option LIMIT [:cupra] : [LIMIT {[offset,] row_count | row_count OFFSET offset}]

 

Quand tu écris "LIMIT 2,3", tu prends en réalité les 3 enregistrements qui se trouvent à partir du 3e : l'offset commence en effet à partir de 0.

 

:jap:


Message édité par Soileh le 19-10-2014 à 14:06:15

---------------
And in the end, the love you take is equal to the love you make
Reply

Marsh Posté le 19-10-2014 à 16:06:09    

Comme je ne comprend pas très bien l'anglais j'ai traduit avec google.
c'est bien ce code là qu'il me faut ?
SET @ skip = 1; SET @ numrows = 5;
PRÉPARATION DE STMT 'SELECT * FROM tbl LIMITE,?';
EXECUTE STMT UTILISATIONskip,numrows;

Reply

Marsh Posté le 19-10-2014 à 16:29:32    

sparadra1 a écrit :

Comme je ne comprend pas très bien l'anglais j'ai traduit avec google.
c'est bien ce code là qu'il me faut ?
SET @ skip = 1; SET @ numrows = 5;
PRÉPARATION DE STMT 'SELECT * FROM tbl LIMITE,?';
EXECUTE STMT UTILISATIONskip,numrows;


Tout dépend de ce que tu veux faire aussi  [:spamafote] : tu as écrit que tu voulais récupérer la valeur d'une seule case. C'est une seule ligne que tu veux récupérer ? Si oui, laquelle ? Celle avec une date la plus récente ? Dans ce cas, une simple requête du style devrait suffire [:cupra] :

Code :
  1. SELECT * FROM news_accueil ORDER BY date_heure DESC LIMIT 0,1



---------------
And in the end, the love you take is equal to the love you make
Reply

Marsh Posté le 19-10-2014 à 17:15:34    

http://the-division.96.lt//The%20Division/Capture.jpg
 
Dans une page la valeur 1 dans une autre la valeur 2 ....
 
ps : la valeur 3 ne comprend pas la colonne date_heure. Juste lien


Message édité par sparadra1 le 19-10-2014 à 17:16:36
Reply

Marsh Posté le 19-10-2014 à 18:51:27    

Après le SELECT tu as une étoile * qui veut dire que tu récupères tous les champs, il suffit de spécifier le champ que tu veux récupérer au lieu de mettre une étoile. Et comme dit, spécifier les limites :

 
Code :
  1. SELECT Nom_De_La_Colonne FROM Nom_De_La_Table ORDER BY Nom_De_La_Colonne DESC LIMIT 0,1
 

Cela veut dire que tu sélectionnes les valeurs de Nom_De_La_Colonne dans la table Nom_De_La_Table de la ligne 1+0 et des 1 suivantes.


Message édité par MaybeEijOrNot le 19-10-2014 à 18:51:51
Reply

Marsh Posté le 19-10-2014 à 19:46:54    

Cela ne marche tjrs  pas car je ne souhaite pas la valeur de la premiere ligne ... ce qui fait que j'ai toujours 2 resultats

Reply

Marsh Posté le 19-10-2014 à 20:51:45    

Si tu as les résultats des 2 premières lignes c'est que tu as mis en limite : 0,2.
 
C'est à dire : commencer à la ligne 1+0 et prendre 2 lignes en tout.
Ou : prendre les 2 lignes qui suivent la ligne 0.
 
Un exemple : si tu veux les lignes 7, 8 et 9 il faut mettre : LIMIT 6,3

Reply

Marsh Posté le 20-10-2014 à 12:23:15    

Code :
  1. <?php
  2. try
  3. {
  4.     // On se connecte à MySQL
  5.     $bdd = new PDO('mysql:host=*********;dbname=*****', '*****', '******');
  6. }
  7. catch(Exception $e)
  8. {
  9.     // En cas d'erreur, on affiche un message et on arrête tout
  10.         die('Erreur : '.$e->getMessage());
  11. }
  12. // Si tout va bien, on peut continuer
  13. // On récupère tout le contenu de la table jeux_video
  14. $reponse = $bdd->query('SELECT titre FROM news_accueil ORDER BY titre DESC LIMIT 2,3');
  15. // On affiche chaque entrée une à une
  16. while ($donnees = $reponse->fetch())
  17. {
  18. ?>
  19. <?php echo $donnees['titre']; ?>
  20. <?php
  21. }
  22. $reponse->closeCursor(); // Termine le traitement de la requête
  23. ?>


 
 
je vous laisse voir par vous même ---> http://the-division.96.lt/The%20Division/test.php

Reply

Marsh Posté le 20-10-2014 à 17:16:32    

Bonjour,
Sur ta page d'exemple, tu aurais voulu quoi exactement ?

Reply

Marsh Posté le 20-10-2014 à 17:16:32   

Reply

Marsh Posté le 21-10-2014 à 17:58:08    

Nouveaux screenshots ( le deuxième en partant du haut )


Message édité par sparadra1 le 21-10-2014 à 17:58:45
Reply

Marsh Posté le 23-10-2014 à 19:40:08    

UP !

Reply

Marsh Posté le 26-10-2014 à 13:29:28    

Je ne comprends pas la difficulté, là tu prends les lignes 3, 4 et 5 car tu as mis en offset 2 donc ça commence à prendre à la ligne 2+1 et tu as mis que tu voulais sélectionner 3 lignes.
 
Si tu veux juste la deuxième ligne il faut mettre un offset à 1 et un nombre de ligne à 1 soit LIMIT 1, 1.
Pour la troisième ligne faut un offset de 2 : LIMIT 2, 1
Pour la 4ème, un offset de 3 : LIMIT 3, 1
etc.
Autrement je doute que tu souhaites trier tes lignes par leur titre mais plus par rapport à leur date_heure : ORDER BY date_heure DESC

Reply

Sujets relatifs:

Leave a Replay

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