[RESOLU] Probleme de tableau

Eléphant du PHP | 71 Messages

21 avr. 2015, 19:30

Bonsoir a tous,

J'essaie actuellement de simuler un site de librairie et j'en suis à la page de l'affichage des livres contenus dans la BDD.

Mon but est d'afficher le titre, l'edition et le prix de chaque livre (il y'en a 7 dans la BDD) sous forme de tableau.

Voici mon code :
$query=$this->connexion->prepare('SELECT TITRE, EDITION, PRIX FROM livre'); // prepare la requete
 	                $query->execute(); // execute la requete
 	                $data=$query->fetch(); // recupere le resultat de la requete et le met dans la variable data
	                var_dump($data);  // pour voir le contenu de ma variable
	                echo '<table>';
                        // Affichage des livres dans le tableau
			foreach($data as $d)
			{
			echo $d.'<br>';
			}
			echo '</table>' ;
Le problème est que le contenu de ma variable $data n'est pas celui que j'attendais. Voici ce que j'obtiens :
Contenu de $data :
array (size=6)
'TITRE' => string 'Echec a la main noire' (length=21)
0 => string 'Echec a la main noire' (length=21)
'EDITION' => string 'Librairie des Champs-Elysees' (length=28)
1 => string 'Librairie des Champs-Elysees' (length=28)
'PRIX' => string '4.90' (length=4)
2 => string '4.90' (length=4)

Je n'ai que le premier livre alors qu'il y'en a 7 dans la base. De plus il m'est affiché 2 fois sur la page du site (voir piece jointe)

Merci pour votre aide

PS : La mise en forme du tableau n'est pas primordiale pour le moment je la ferais une fois que je pourrais récupérer correctement les variables ;)
soucis tablea.png
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

Mammouth du PHP | 688 Messages

21 avr. 2015, 19:48

echo $d['TITRE'].' '.$d['PRIX'].'<br>';

Eléphant du PHP | 71 Messages

21 avr. 2015, 20:13

echo $d['TITRE'].' '.$d['PRIX'].'<br>';
J'y pensais aussi ^^ mais au ca ne fonctionne pas non plus, j'ai une erreur :
"Warning: Illegal string offset 'TITRE' in C:\wamp\www\test\class\page_base.php"
"Warning: Illegal string offset 'PRIX' in C:\wamp\www\test\class\page_base.php"

Mammouth du PHP | 2278 Messages

22 avr. 2015, 09:34

fetch rend une ligne cf : http://php.net/manual/fr/pdo.prepared-statements.phpIl faut le mettre dans une boucle.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 71 Messages

22 avr. 2015, 11:25

fetch rend une ligne cf : http://php.net/manual/fr/pdo.prepared-statements.phpIl faut le mettre dans une boucle.
C'etais bien ca ^^ voici donc mon nouveau code :
public function test_liste() {
	                // variables
                        $i=0;
			$data = array();

			// On compte le nombre de livres présents dans la BDD
			$req_nb_livres=$this->connexion->prepare('SELECT count(*) FROM livre'); // prepare la requete
			$req_nb_livres->execute(); // execute la requete
			$nb_livres=$req_nb_livres->fetch();
			
			// On repete la requete autant de fois qu'il y'a de livre pour tous les obtenir
			$livres=$this->connexion->prepare('SELECT TITRE,EDITION,PRIX FROM livre'); // prepare la requete
 	 		$livres->execute(); // execute la requete
			
			while ($i<$nb_livres[0])  // Tant que i est inferieur au nombre de livre on repete la requete
			{
 	 		$data[]=$livres->fetch(); // recupere le resultat de la requete et le met dans le tableau data
			$i++;
			}
			print_r($data[0]);
			// Creation du tableau
			?>
Il me reste plus qu'a gérer l'affichage du tableau avec les bonnes valeurs mais je sais déja comment faire ^^

Merci pour votre aide , sujet résolu !