8768 sujets

Développement web côté serveur, CMS

Bonjour chers amis !! Smiley coucou

Comme je l'ai dit dans le titre, je suis confrontée à un problème au niveau de la récupération des données de mon tableau, je vous expose plus clairement mon problème:

Je suivais le tutoriel de grafikart: https://www.youtube.com/watch?v=OX3FxGhRffc pour créer un système de panier
Il faut savoir que je débute tout juste le PHP, peut être qu'un oeil plus expert saura trouver la solution à mon problème

Smiley fou ça fais maintenant deux jours que je suis bloquée, à chaque fois que j'encadre la "carte de produit" de la boucle foreach comme ceci:


<?php require 'header.php'; ?>
<div style="text-align: center;" class="container">
<div class="cards">
<ul class="cards__list">
  <?php $products = $DB->query('SELECT * FROM products'); ?>
        <?php foreach ($products as $product):?> <div>
  [b]<li class="cards__item">
    <div class="cards__elem cards__elem_img"><img
 src="images/pdt.jpg" alt=""></div>
    <div class="cards__elem cards__elem_name">
  
      <?php echo $product->name; ?></div>
    <div class="cards__elem cards__elem_post">
      <?php echo $product->price; ?>
    </div>
    <div class="cards__elem cards__elem_button">
    <button class="button">Fiche produit</button>
    <button class="button">+ Panier</button>
    </div>
  </li>[/b] </div>
          <?php endforeach; ?>
  <?php require 'footer.php'; ?> 


Tout le <li> disparait Smiley mur
Et quand je supprime cette boucle, il réapparait !! Smiley hum

Ce code est sensé permettre à ma page de récupérer les données de ma table, de créer autant de <li> que d'éléments et de retranscrire les données de chaque article aux bons endroits dans la carte.

je me demande ce qui cloche parce qu'aucune erreur n'est signalée sur ma page, et ma base de donnée est bien remplie Smiley hmm

Je vous donne le code de db.class.php
<?php
class DB{

private $username = '******';
private $password = '******';
private $database = '******';
private $host = '******';
private $db;

public function __construct($host=null, $username=null, $password=null, $database=null){
	if ($host != null){
		$this->host = $host;
		$this->username = $username;
		$this->password = $password;
		$this->database = $database;
	}	
	try{
		$this->db = new PDO('mysql:host='.$this->host.'; 
		dbname='.$this->database, $this->username,$this->password,
		array(
		PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8',
		PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING
		));
	}catch(PDOException $e){
		die('<h1>Impossible de se connecter a la base de donnees<h1>');
	}
	}
	public function query($sql){
$req = $this->db->prepare($sql);
$req->execute();
return $req->FetchAll(PDO::FETCH_OBJ);
	}
}


Voili voilou Smiley ohwell
Je vous remercie d'avance pour l'éventuelle solution que vous apporterez à mon appel à l'aide ! Smiley bouncecyan

Just me.
Modifié par just-me (10 May 2020 - 14:01)
Bonjour,
Il n'y a pas de majuscule au début de "fetchAll" ça vient certainement de là...
Sinon pour tester, avant de faire le return tu peux faire un var_dump de $req->errorInfo() ça t'indiquera les erreurs SQL éventuelles...
Meilleure solution
Bonjour Mathieu,
Merci beaucoup pour ta réponse, j'ai corrigé l'erreur sur fetchAll mais mon <li> ne s'affiche toujours pas Smiley bawling , en revanche j'ai suivi ton conseil pour faire apparaître l'origine de l'erreur avec un var_dump() et voici que ce message s'affiche:

array(3) { [0]=> string(5) "42S02" [1]=> int(1146) [2]=> string(40) "Table '*****.products' doesn't exist" } ?

C'est toujours mieux qu'aucune information ! Smiley ola
Je me demande maintenant pourquoi l'erreur me dit que la table n'existe pas alors qu'elle existe Smiley confuse , je vais creuser un peu plus dans phpmyadmin et voir si je trouve l'erreur
Je reviendrai vers vous si ce n'est pas le cas Smiley id

Bon après midi !
Just me.
Rebonjouurrr,
J'ai compris d'où venait mon erreur !!
J'ai tout simplement mis une majuscule sur le nom de ma table, majuscule que j'ai laissé tomber dans le code !
LES MAJUSCULES ENCORE ET TOUJOURS !!!! Smiley fou

Maintenant le code trouve la table et mes <li> s'affichent très bien ! Smiley clapclap

Cependant un nouveau code d'erreur me tracasse:

array(3) { [0]=> string(5) "00000" [1]=> NULL [2]=> NULL }


Pourriez-vous m'expliquer ce que signifie array(3) et de quelles lignes s'agit-il au niveau de string(5) ? Smiley hum

Bonne fin d'après midi !! Smiley coucou

Just Me.
Ha les majuscules^^
Aucun problème ce n'est pas une erreur, c'est ce qu'affiche le errorInfo() quand tout se passe bien...
Bonne fin de journée Smiley smile
Encore merci !! ^^

[This topic is now closed]
Modifié par just-me (16 May 2020 - 00:05)