Erreur en php

bonjour
j'essaye se cree un petit site mais j'ai cette erreur :

Fatal error: Call to a member function query() on null in C:\xampp\htdocs\tp3\etudiant\SiteWebShop\index.php on line 26

je sais pas si vous pouvais m'aider
merci

2 réponses

  1. voila la ligne qui pose problème

    $sql=$connexion->query($requete); // envoi de la requete
    0
    1. Modérateur
      Bonjour,

      le message d'erreur signifie que $connexion est "null".
      Où l'as tu initialisé ??

      Sachant que pour t'aider... avoir l'ensemble du code est quand même l'idéal !!

      NB : Si tu utilises PDO : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

      NB² : Pour poster ton code sur le forum : https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

      NB3 : A lire avant .. histoire que tu nous montres un code "carré" !
      https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
      0
    2. @jordane45bonjour

      merci pour votre repense

      voici mon fichier connexion :

      <?php 
      
      define("SERVEUR","localhost"); 
      define("USER","root"); 
      define("MDP",""); 
      define("BD","sitewebshop"); 
      
      
      function connexionBd($hote=SERVEUR,$username=USER,$mdp=MDP,$bd=BD) { 
       try { 
         $connex= new PDO('mysql:host='.$hote.';dbname='.$bd, $username, $mdp); 
         $connex->exec("SET CHARACTER SET utf8"); //Gestion des accents 
         return $connex; 
       } catch(Exception $e) { 
         echo 'Erreur : '.$e->getMessage().'<br />'; 
         echo 'N° : '.$e->getCode(); 
        return null; 
       }  
      } 
      ?>
      

      EDIT : Ajout des balises de code !

      0
    3. @jordane45et les lignes qui me pose problème

      $requete = "SELECT * FROM article ORDER BY RAND() LIMIT 3" ;
      $sql=$connexion->query($requete); // envoi de la requete
      $res=$sql->fetchALL(PDO::FETCH_ASSOC); // renvoi tt les result

      merci
      0
  2. Modérateur
    Re,

    Bon... visiblement tu n'as lu aucun de mes liens AVANT de poster ton code !

    Donc :
    1 - Lis (et applique...) le contenu des liens que je t'ai donné.
    2 - Montre nous ton code COMPLET !
    Dans le petit bout de code de tes lignes qui "posent" problème .... il manque l'appel à la fonction de connexion à la bdd.....

    0
    1. merci pour votre repense

      a vrai dire j'ai pas trop compris ( il faut que j'ajoute la ligne " setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); "
      pour geré mes erreurs ?

      le probleme se trouve dans mon fichier connexion ou dans mes requête?

      merci
      0
    2. pour mon code

      <!DOCTYPE html>
      <html>
      <head>
      <meta charset="utf-8" />
      <link href="css/style.css" rel="stylesheet" type="text/css" />
      <title>SiteWebShop</title>

      </head>
      <body>

      <?php include 'header.php' ; ?>
      <!-- DEBUT de la page -->

      <?php

      include 'utile.php';

      include_once 'connexion.php';
      $connexion =connexionBd();

      $requete = "SELECT * FROM article ORDER BY RAND() LIMIT 3" ;
      $sql=$connexion->query($requete); // envoi de la requete
      $res=$sql->fetchALL(PDO::FETCH_ASSOC); // renvoi tt les result

      ?>

      <!--<header>
      <div class="wrap">
      <h1><a href="#" rel="nofollow noopener noreferrer" target="_blank"><img src="images/openshop_logo.png" alt="logo open shop"></a></h1>

      <nav>
      <ul>
      <li><a href="index.php" rel="nofollow noopener noreferrer" target="_blank">accueil</a></li>
      <li><a href="login.php" rel="nofollow noopener noreferrer" target="_blank">login</a></li>
      <li><a href="creer_compte.php" rel="nofollow noopener noreferrer" target="_blank">créer compte</a></li>
      <li><a href="panier.php" rel="nofollow noopener noreferrer" target="_blank">panier</a></li>
      </ul>
      </nav>

      <form id="search" action="recherche.php" method="post" enctype="multipart/form-data">
      <p>
      <label for="searchText">Rechercher :</label>
      <input id="searchText" name="query" type="text" value="" />
      <input id ="searchBtn" type="submit" class="bouton" value="OK" />
      </p>
      </form>

      <nav id="menu-categorie">
      <ul>
      <li class="smenu"><a href="#" rel="nofollow noopener noreferrer" target="_blank">tous les produits</a></li>
      <li class="smenu"><a href="#" rel="nofollow noopener noreferrer" target="_blank">vetements</a></li>
      <li class="smenu"><a href="#" rel="nofollow noopener noreferrer" target="_blank">accessoires</a></li>
      <li class="smenu"><a href="#" rel="nofollow noopener noreferrer" target="_blank">posters</a></li>
      <li class="smenu"><a href="#" rel="nofollow noopener noreferrer" target="_blank">dvd</a></li>
      </ul>
      </nav>
      </div>
      </header> -->

      <section>

      <header>Bienvenue <span class="ss-titre">Nous sommes le ?????? </span></header>
      <p>La boutique en ligne <strong>openSHOP</strong> est un travail réalisé par <em>Thomas Jouannic</em> & <em>Jérome Saunier</em>
      puis modifié et adapté <strong>au cours de Sites Web Avancés</strong>.</p>
      <p>Dans la partie haute, vous trouverez un moyen pour vous identifiez ou créer un compte si vous n'en n'avez aucun. Le champ de recherche
      vous permet d'afficher simplement les produits correspondants à ce que vous souhaitez. Vous pouvez aussi naviguer entre les différentes
      catégorie de produits en cliquant sur celle que vous désirez voir.</p>
      <p>Bonne naviguation !</p>
      </section>
      <section>
      <header>
      <h2>Au hasard...</h2>
      </header>
      <!--Affichage de 3 articles au hasard -->
      <ul id= "product-list" >
      <?php

      foreach ( $res as $key => $val2)

      echo "<li class ='product'>";

      echo "<h3>".$value["Designation"]."</h3>";
      echo "<p><img alt='' src='".$value['img_article']."'></p></img>";
      echo "<p id='prix'>".$value['Prix']."€</p>";
      echo "<p>".tronquer_texte($value['description'])."</p>";

      echo '<p><a href="vue_produit.php?article='.$value[" rel="nofollow noopener noreferrer" target="_blank"id_article"].'">Voir les détails</a></p>';

      echo '</li>';

      ?>

      </ul>

      </section>

      <?php include('footer.php') ; ?>

      <!--<footer>
      <p> <a id="goto-admin" href="admin.php" rel="nofollow noopener noreferrer" target="_blank">Admin</a></p>
      <p id="extra">
      Site Web Avancés - Année 2016 - version HTML 5
      </p>

      </footer> -->

      </body>
      </html>
      0


    3. include_once 'connexion.php';
      $connexion =connexionBd();

      $requete = "SELECT * FROM article ORDER BY RAND() LIMIT 3" ;
      $sql=$connexion->query($requete);
      $res=$sql->fetchALL(PDO::FETCH_ASSOC);



      voila désoler c'est la première fois que je poste je savais pas ( ca c'est mon index )
      0


    4. <?php

      define("SERVEUR","localhost");
      define("USER","root");
      define("MDP","");
      define("BD","sitewebshop");

      function connexionBd($hote=SERVEUR,$username=USER,$mdp=MDP,$bd=BD)
      {
      try
      {
      $connex= new PDO('mysql:host='.$hote.';dbname='.$bd, $username, $mdp);
      $connex->exec("SET CHARACTER SET utf8"); //Gestion des accents
      setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

      return $connex;
      }
      catch(Exception $e)
      {
      echo 'Erreur : '.$e->getMessage().'<br />';
      echo 'N° : '.$e->getCode();
      return null;
      }
      }

      ?>



      ca c'est mon fichier connexion

      merci
      0