Ma liste reste désespérément vide
Résolu/Fermé
villemuche
Messages postés
10
Date d'inscription
jeudi 18 novembre 2021
Statut
Membre
Dernière intervention
22 novembre 2021
-
18 nov. 2021 à 09:24
villemuche Messages postés 10 Date d'inscription jeudi 18 novembre 2021 Statut Membre Dernière intervention 22 novembre 2021 - 22 nov. 2021 à 07:03
villemuche Messages postés 10 Date d'inscription jeudi 18 novembre 2021 Statut Membre Dernière intervention 22 novembre 2021 - 22 nov. 2021 à 07:03
A voir également:
- Ma liste reste désespérément vide
- Liste déroulante excel - Guide
- Supprimer page word vide - Guide
- Liste déroulante en cascade - Guide
- Coeur vide - Forum Facebook
- Formate pour taxer client frigo vide - Forum PDF
3 réponses
jordane45
Messages postés
38304
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 novembre 2024
4 705
18 nov. 2021 à 11:16
18 nov. 2021 à 11:16
Bonjour,
class Db ( je te conseille de renommer le fichier en db.class.php
Une class pour gérer tes auteurs
auteurs.class.php
et dans ton index.php ( AVANT le html ! )
Puis là où tu veux mettre ta liste
class Db ( je te conseille de renommer le fichier en db.class.php
<?php /* ------------------------------------------------------ METHODES ------------------------------------------------------ Syntaxe : lafonctiopn($sql,$datas) -> $sql : string contenant la requête à executer -> $datas : variables (dans un array associatif) à passer à la requête Liste des méthodes : db_All() -> retourne un Array contenant TOUTES les lignes du résultat de la requête db_One() -> retourne un Array contenant LA PREMIERRE ligne du résultat de la requête db_Insert -> retourne l' ID nouvellement créé par une requête INSERT db_Exec() -> Pour les requêtes DELETE / UPDATE : retourne le nombre de lignes impactées */ class Db { private $host = 'localhost'; private $dbName = 'bibliotheque'; private $user = 'root'; private $pass = 'root'; private $bdd = NULL; private $prepare = NULL; private $rowCount = 0; private $res = NULL; function __construct(){ $this->connect(); } public function connect() { try { $conn = new PDO('mysql:host=' . $this->$host . '; dbname =' . $this->$dbName, $this->$user, $this->$pass); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $this->bdd = $conn; } catch (PDOException $e) { echo 'Erreur Base de données : ' . $e->getMessage(); } } private function dbQuery ( $sql, $datas = NULL ) { try { $this->prepare = $this->bdd->prepare ( $sql ); $this->res = $this->prepare->execute ( $datas ); $this->rowCount = $this->prepare->rowCount (); } catch ( Exception $e ) { // en cas d'erreur : echo "<br><b>Erreur ! " . $e->getMessage () . "</b>" . PHP_EOL; echo "<pre> La requete :" . $sql . "</pre>" . PHP_EOL; echo " <pre>Les datas : " . PHP_EOL; print_r ( $datas ); echo "</pre>" . PHP_EOL; } } public function db_All ( $sql, $datas = NULL ) { $this->dbQuery ( $sql, $datas ); return $this->prepare->fetchAll (); } public function db_One ( $sql, $datas = NULL ) { try { $this->dbQuery ( $sql, $datas ); return $this->prepare->fetch (); } catch ( Exception $e ) { echo "Erreur " . $e->getMessage (); echo "<br> SQL :" . $sql; echo "<br> datas :" . print_r ( $datas, true ); } } public function db_Insert ( $sql, $datas = NULL, $returnId = TRUE ) { $this->dbQuery ( $sql, $datas ); return $returnId ? $this->bdd->lastInsertId () : $this->res; } public function db_Exec ( $sql, $datas = NULL ) { $this->dbQuery ( $sql, $datas ); return array('$this->tbl' => $this->res, 'rowCount' => $this->rowCount); } }
Une class pour gérer tes auteurs
auteurs.class.php
class Auteurs extends Db{ function __construct(){ parent::__construct(); } public function loadAuteurs() { $sql ='SELECT * FROM t_auteurs'; return parent::db_All($sql); } }
et dans ton index.php ( AVANT le html ! )
<?php require_once 'db.class.php'; require_once 'auteurs.class.php'; $oAuteurs = new Auteurs(); //liste des auteurs $auteurs = $oAteurs->loadAuteurs(); ?> <!DOCTYPE html> <html> <head>
Puis là où tu veux mettre ta liste
<?php if(!empty($auteurs)){ foreach ($auteurs as $auteur) { echo "<option id='".$auteur['CodeAuteur']."' value='".$auteur['CodeAuteur']."' >".$auteur['LibleNom']."</option>"; } }else{ echo "Aucun auteur"; } ?>
villemuche
Messages postés
10
Date d'inscription
jeudi 18 novembre 2021
Statut
Membre
Dernière intervention
22 novembre 2021
Modifié le 19 nov. 2021 à 09:09
Modifié le 19 nov. 2021 à 09:09
Bonjour,
Merci Joane45 pour ton suivi,
Je n'ai pas encore pu tester, je reviens vers toi dès que possible
Bonne journée
Merci Joane45 pour ton suivi,
Je n'ai pas encore pu tester, je reviens vers toi dès que possible
Bonne journée
jordane45
Messages postés
38304
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 novembre 2024
4 705
20 nov. 2021 à 10:22
20 nov. 2021 à 10:22
Il semble y avoir quelques coquilles dans le code.
Pour la connexion ( attention aux espaces en trop qu'il faut retirer..)
Donc, code à remplacer par
il y avait également un souci de "u" manquant dans le nom de la variable.
Code à corriger par
Une fois corrigé.. tout fonctionne parfaitement de mon côté....
Pense à arreter/redémarrer le serveur apache au cas où... il pourrait subsister un "cache" de tes anciens codes..
Pour la connexion ( attention aux espaces en trop qu'il faut retirer..)
Donc, code à remplacer par
public function connect() { try { $dsn = 'mysql:host=' . $this->host . ';dbname=' . $this->dbName; $conn = new PDO($dsn, $this->user, $this->pass); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $this->bdd = $conn; } catch (PDOException $e) { echo 'Erreur Base de données : ' . $e->getMessage(); } }
il y avait également un souci de "u" manquant dans le nom de la variable.
Code à corriger par
$oAuteurs = new Auteurs(); //liste des auteurs $auteurs = $oAuteurs->loadAuteurs();
Une fois corrigé.. tout fonctionne parfaitement de mon côté....
Pense à arreter/redémarrer le serveur apache au cas où... il pourrait subsister un "cache" de tes anciens codes..
villemuche
Messages postés
10
Date d'inscription
jeudi 18 novembre 2021
Statut
Membre
Dernière intervention
22 novembre 2021
Modifié le 21 nov. 2021 à 08:49
Modifié le 21 nov. 2021 à 08:49
Bonjour Jordane,
Je vais te paraitre sans doute une niais...
J'ai apporté les corrections que tu m'as indiquées. Hélas, la liste reste vide.
J'ai arrêté et redémarré le server ... toujours rien !!!
Et le pire c'est qu'aucune erreur ne s'affiche !!!
Donc pour vérifier que le code fonctionne bien, j'ai provoqué des erreurs :
Faute dans le nom de la base de données, dans le nom de champ de la requête.
Le résultat ne se fait pas attendre : les erreurs sont bien affichées.
J'ai pensé que cela pouvait venir de l'utilisation de bootstrap. j'ai donc recréé une page <html> sans aucune mise en forme...
Le résultat est le même.
j'ai pensé que ma table pouvait être vérolée. J'ai recréée une petite base de données avec une seule table ... Même punition !!!
TOUJOURS RIEN !!! je m'arrache les cheveux
si tu as une idée ... je suis preneur
Merci d'avance
Je vais te paraitre sans doute une niais...
J'ai apporté les corrections que tu m'as indiquées. Hélas, la liste reste vide.
J'ai arrêté et redémarré le server ... toujours rien !!!
Et le pire c'est qu'aucune erreur ne s'affiche !!!
Donc pour vérifier que le code fonctionne bien, j'ai provoqué des erreurs :
Faute dans le nom de la base de données, dans le nom de champ de la requête.
Le résultat ne se fait pas attendre : les erreurs sont bien affichées.
J'ai pensé que cela pouvait venir de l'utilisation de bootstrap. j'ai donc recréé une page <html> sans aucune mise en forme...
Le résultat est le même.
j'ai pensé que ma table pouvait être vérolée. J'ai recréée une petite base de données avec une seule table ... Même punition !!!
TOUJOURS RIEN !!! je m'arrache les cheveux
si tu as une idée ... je suis preneur
Merci d'avance
jordane45
Messages postés
38304
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 novembre 2024
4 705
>
villemuche
Messages postés
10
Date d'inscription
jeudi 18 novembre 2021
Statut
Membre
Dernière intervention
22 novembre 2021
21 nov. 2021 à 08:52
21 nov. 2021 à 08:52
Fais un var_dump($auteurs);
villemuche
Messages postés
10
Date d'inscription
jeudi 18 novembre 2021
Statut
Membre
Dernière intervention
22 novembre 2021
>
jordane45
Messages postés
38304
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 novembre 2024
21 nov. 2021 à 08:58
21 nov. 2021 à 08:58
Alors là, pour le coup, je suis débutant et je ne sais pas où placer cette instruction.
je l'ai placée dans la page index.php au niveau de la condition :
Après exécution, pas de retour ...
je l'ai placée dans la page index.php au niveau de la condition :
<?php if(!epmpty($auteurs)){ var_dump($auteurs); foreach ($auteurs as $auteur) {
Après exécution, pas de retour ...
villemuche
Messages postés
10
Date d'inscription
jeudi 18 novembre 2021
Statut
Membre
Dernière intervention
22 novembre 2021
>
villemuche
Messages postés
10
Date d'inscription
jeudi 18 novembre 2021
Statut
Membre
Dernière intervention
22 novembre 2021
21 nov. 2021 à 09:02
21 nov. 2021 à 09:02
Ok, j'ai placé l'instruction directement après
La variable contient bien les données. Elles sont donc perdues entre temps ...
//liste des auteurs $auteurs = $oAuteurs->loadAuteurs(); var_dump($auteurs);
La variable contient bien les données. Elles sont donc perdues entre temps ...
villemuche
Messages postés
10
Date d'inscription
jeudi 18 novembre 2021
Statut
Membre
Dernière intervention
22 novembre 2021
>
villemuche
Messages postés
10
Date d'inscription
jeudi 18 novembre 2021
Statut
Membre
Dernière intervention
22 novembre 2021
21 nov. 2021 à 09:08
21 nov. 2021 à 09:08
Voici un extrait du Dump :
array(272) { [0]=> array(4) { ["CodeAuteur"]=> string(2) "92" [0]=> string(2) "92" ["LibelNom"]=> string(6) "AILLON" [1]=> string(6) "AILLON" } [1]=> array(4) { ["CodeAuteur"]=> string(2) "93" [0]=> string(2) "93" ["LibelNom"]=> string(5) "BUSSI" [1]=> string(5) "BUSSI" } [2]=> array(4) { ["CodeAuteur"]=> string(2) "94" [0]=> string(2) "94" ["LibelNom"]=> string(8) "LEMAITRE" [1]=> string(8) "LEMAITRE" } ...
array(272) { [0]=> array(4) { ["CodeAuteur"]=> string(2) "92" [0]=> string(2) "92" ["LibelNom"]=> string(6) "AILLON" [1]=> string(6) "AILLON" } [1]=> array(4) { ["CodeAuteur"]=> string(2) "93" [0]=> string(2) "93" ["LibelNom"]=> string(5) "BUSSI" [1]=> string(5) "BUSSI" } [2]=> array(4) { ["CodeAuteur"]=> string(2) "94" [0]=> string(2) "94" ["LibelNom"]=> string(8) "LEMAITRE" [1]=> string(8) "LEMAITRE" } ...
20 nov. 2021 à 08:41
J'ai repris ton code et malgré tout, je reste sur une coquille.
J'ai le message d'erreur suivant dont je comprends le sens mais que je n'arrive pas à solutionner :
Fatal error: Cannot declare class Db, because the name is already in use in I:\MAMP\htdocs\Listes dependantes\db.class.php on line 16
la ligne 16 correspond à : class Db dans le fichier db.class.php
y a-t-il un lien avec : class Auteurs extends Db du fichier auteurs.class.php
Je te remercie pour ton aide
20 nov. 2021 à 09:44
Montres nous ton code complet...
N'aurais tu pas un new Db() dans ton code quelque part ?
20 nov. 2021 à 09:55
Je te mets ci-dessous les différents fichiers :
db.class.php
auteurs.class.php
Index.php