Ma BDD ne s'affiche pas sur le site

Résolu
bibou-23 Messages postés 18 Statut Membre -  
bibou-23 Messages postés 18 Statut Membre -

je suis entrain d'apprendre a coder le PHP en utilisant le Wamp.

la connexion est bien faites mais quand je fait appelle a l'affichage des données y-a toujours pas de données qui s'affichent sur le site.

voila le code:

<?php include "header.php";

include "connexion.php";

$req=$monPdo->prepare("select * from nationalite");

$req->setFetchMode(PDO::FETCH_OBJ);

$req->execute();

$lesNationalites=$req->fetchAll();

?>

 <div class="container mt-5">

 <table class="table">

  <thead>

    <tr>

      <th scope="col">numéro</th>

      <th scope="col">libellé</th>

    </tr>

  </thead>

  <tbody class="table-group-divider">

  <?php foreach($lesNationalites as $nationalite){

        echo"<tr>";

        echo"<td>$nationalite->num</td>";

        echo"<td>$nationalite->libelle</td>";

        echo"</tr>";

  }

  ?>

A voir également:

5 réponses

bibou-23 Messages postés 18 Statut Membre
 
voila le résultat que j'ai eu
0
jordane45 Messages postés 40050 Statut Modérateur 4 755
 

Bonjour,

Commence par activer l'affichage des erreurs php,  activer l'affichage des erreurs PDO dans la connexion à la base ET à mettre ta requête dans un bloc TRY/CATCH

https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

Fais nous également un var_dump de ta variable $lesNationalites

https://www.lephpfacile.com/manuel-php/function.var-dump.php


0
jordane45 Messages postés 40050 Statut Modérateur 4 755
 

Et précises nous également l'URL que tu utilises pour afficher la page dans ton navigateur....

Tu passes bien par le "localhost" ?  exemple:  http://localhost/tonfichier.php

0
bibou-23 Messages postés 18 Statut Membre > jordane45 Messages postés 40050 Statut Modérateur
 

oui bien sur 

voila l'RL

http://localhost/tdphp/listenationalites.php

0
jordane45 Messages postés 40050 Statut Modérateur 4 755 > bibou-23 Messages postés 18 Statut Membre
 

donc, fais ce que je t'ai indiqué concernant la gestion des erreurs .. et montre nous ensuite le code modifié ( y compris la connexion à ta bdd) ainsi que l'éventuel message d'erreur.

Montres nous aussi un capture du teste de ta requête DIRECTEMENT dans phpmyadmin pour nous montrer qu'elle te retourne bien des résultats.

Pense aussi au var_dump que je t'ai demandé

0
bibou-23 Messages postés 18 Statut Membre > jordane45 Messages postés 40050 Statut Modérateur
 

quand j'active laffichage des erreurs PDO c'est qui me sort

0
jordane45 Messages postés 40050 Statut Modérateur 4 755 > bibou-23 Messages postés 18 Statut Membre
 

En effet, tu fais le setFetchMode sur la mauvaise variable..

Il faut le faire sur la variable monPdo

Une autre solution, est d'utiliser le code de connexion qui se trouve dans le lien que je t'ai donné tu verras que tout y est

0
bibou-23 Messages postés 18 Statut Membre
 

Voila le code que j'utilise 

<?php

$hostnom ='host:localhost';

$username ='root';

$password ='';

$bdd ='mabiblio';

try{

    $monPdo = new PDO("mysql:$hostnom;dbname=$bdd;charset=utf8",$username,$password);

    $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

} catch(PDOException $e) {

    die('Erreur : ' . $e->getMessage());

}

?>

0
jordane45 Messages postés 40050 Statut Modérateur 4 755
 

Regardes le nom des variables...

Tu as initié la connexion avec la variable $monPdo ..

Ensuite, tu as copié/collé bêtement le code que je t'ai donné en y laissant la variable $bdd ....

Il faut donc changer les $bdd par $monPdo

0
jordane45 Messages postés 40050 Statut Modérateur 4 755
 
<?php

$hostnom ='host:localhost';
$username ='root';
$password ='';
$bdd ='mabiblio';

try{
    $monPdo = new PDO("mysql:$hostnom;dbname=$bdd;charset=utf8",$username,$password);
    $monPdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $monPdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
} catch(PDOException $e) {
    die('Erreur : ' . $e->getMessage());
}

?>
<?php 
error_reporting(E_ALL);

require_once "connexion.php";

$sql = "select * from nationalite";
try{
  $req = $monPdo->prepare($sql);
  $req->execute();
  $lesNationalites=$req->fetchAll();
}catch(Exception $e){
 echo "Erreur : " . $e->getMessage();
}

include "header.php";
?>

 <div class="container mt-5">

 <table class="table">
  <thead>
    <tr>
      <th scope="col">numéro</th>
      <th scope="col">libellé</th>
    </tr>
  </thead>
  <tbody class="table-group-divider">
  <?php foreach($lesNationalites as $nationalite){
        echo"<tr>";
        echo"<td>" . $nationalite->num . "</td>";
        echo"<td>" . $nationalite->libelle . "</td>";
        echo"</tr>";
  }
  ?>
  </tbody>
</table>

0
bibou-23 Messages postés 18 Statut Membre
 

merci beaucoup ça m'aide énormément 

je comprend mieux 

mais je sais tjr pas pourquoi ça marche pas 

quand j'exécute le code y-a ce message qui s'affiche

Notice: Undefined variable: lesNationalites in C:\wamp\www\tdphp\listenationalites.php on line 28

Warning: Invalid argument supplied for foreach() in C:\wamp\www\tdphp\listenationalites.php on line 28

  </tbody>

</table>

0
bibou-23 Messages postés 18 Statut Membre > bibou-23 Messages postés 18 Statut Membre
 
0
jordane45 Messages postés 40050 Statut Modérateur 4 755 > bibou-23 Messages postés 18 Statut Membre
 

Revérifier ton code il y avait une erreur au niveau du try (j'ai édité mon code pour la corriger)

De plus, si tu ne partage pas ton code tel qu'il est écrit actuellement, nous ne pourrons pas deviner d'où provient éventuellement l'erreur...

0
bibou-23 Messages postés 18 Statut Membre > jordane45 Messages postés 40050 Statut Modérateur
 
<?php

error_reporting(E_ALL);

include "header.php";

require_once "connexion.php";

$sql = "select * from nationalite";

try{

  $req = $monPdo->prepare($sql);

  $req->execute();

  $lesNationalites=$req->fetchAll();

}catch(Exception $e){

 echo "Erreur : " . $e->getMessage();

}

?>

 <div class="container mt-5">

 <table class="table">

  <thead>

    <tr>

      <th scope="col">numéro</th>

      <th scope="col">libellé</th>

    </tr>

  </thead>

  <tbody class="table-group-divider">

  <?php foreach($lesNationalites as $nationalite){

        echo"<tr>";

        echo"<td>" . $nationalite->num . "</td>";

        echo"<td>" . $nationalite->libelle . "</td>";

        echo"</tr>";

  }

  ?>

  </tbody>

</table>

<?php

include "footer.php";

?>

EDIT : Ajout des balises de code

0
jordane45 Messages postés 40050 Statut Modérateur 4 755 > bibou-23 Messages postés 18 Statut Membre
 

et donc ? tu as toujours l'erreur ?

Tu as fais le var_dump que je t'ai demandé ? il donne quoi ?

Tu as testé ta requête directement dans phpmyadmin ? tu nous montres la captures du résultat ?

NB: tu as remis l'include de ton header au début .. mais non !!! ... il faut le placer APRES ton code php. 

NB² : Ajoute un exit dans le catch pour pouvoir voir l'erreur sans que le reste de la page ne s'affiche

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bibou-23 Messages postés 18 Statut Membre
 

c'est bon j'ai trouvé la solution.

j'ai du faire quelques modification dans connexion.php.

le voici

?php

$hostnom ='host:localhost';

$username ='root';

$password ='';

$bdd ='mabiblio';

try{

    $monPdo = new PDO("mysql:host=localhost;dbname=mabiblio;charset=utf8",'root','');

    $monPdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $monPdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);

} catch(PDOException $e) {

    die('Erreur : ' . $e->getMessage());

}

?>

0