Page 1 sur 1

Récupérer la Xième valeur d'une requête PDO pour un champs donné

Posté : 29 déc. 2015, 21:53
par Cephou
Bonjour, après avoir regardé sur le net les différents fetch(), je reste bloqué sur un problème. Je ne comprends pas quelle méthode utiliser pour obtenir ce que je souhaite.

Le but est d'aller chercher dans une table annonce, les 5 annonces de nature 'offres' les plus récentes. Dans la table annonce, j'enregistre l'id de l'utilisateur (user_id) qui la postée. Les utilisateurs sont eux enregistrés dans une table users.

J'ai une requête de type :
<?php

require_once 'inc/db.php';

$showOffers = $pdo->prepare('SELECT * FROM announce JOIN users ON announce.user_id = users.user_id WHERE nature = offers ORDER BY announce_id DESC LIMIT 5');
$showOffers->execute();

?>
Je précise que mon inc/db.php contient toutes les informations de connexion ($pdo).

Je devrais donc obtenir 5 lignes contenant des choses telles que le titre de l'annonce, son contenu ... et les caractéristiques de l'utilisateur qui l'a postée.

J'aimerais (par exemple), afficher le titre de la 3ième annonce et le pseudo de l'utilisateur qui l'a postée, et rien d'autre.

J'aurais pensé à quelque chose du genre :
$data = $showOffers->fetchAll();

echo $data[2]['title'];
echo $data[2]['username'];
Cela ne marche pas. Je comprends que la manière dont je met "2" veux dire que je réclame le 3ième champs de la première ligne (enfin je crois ?)

Comment fait on pour obtenir ce que je souhaite ?

Merci d'avance pour votre aide.

Re: Récupérer la Xième valeur d'une requête PDO pour un champs donné

Posté : 29 déc. 2015, 22:34
par or 1
$data[2]['title'] me semble correct s'il y a bien un champ title dans la table announce

$data = $showOffers->fetchAll();
print_r($data);
qu'est ce que cela affiche ?

Re: Récupérer la Xième valeur d'une requête PDO pour un champs donné

Posté : 29 déc. 2015, 22:58
par Cephou
Bonjour, j'ai résolu mon problème !

Il s'agissait de ma requête qui était défectueuse :
$showOffers = $pdo->prepare('SELECT * FROM announce JOIN users ON announce.user_id = users.user_id WHERE nature = offers ORDER BY announce_id DESC LIMIT 5');
Aurait du être :
$showOffers = $pdo->prepare('SELECT * FROM announce JOIN users ON announce.user_id = users.user_id WHERE nature = "offers" ORDER BY announce_id DESC LIMIT 5');
Je m'en suis rendu compte en exécutant votre code.

La méthode [numérodeligne][nomdechamps] est donc valide. Merci pour votre aide !