Erreur en php

infokab Messages postés 23 Statut Membre -  
infokab Messages postés 23 Statut Membre -
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. infokab Messages postés 23 Statut Membre
     
    voila la ligne qui pose problème

    $sql=$connexion->query($requete); // envoi de la requete
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      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
      1. infokab Messages postés 23 Statut Membre > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
         
        bonjour

        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
      2. infokab Messages postés 23 Statut Membre > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
         
        et 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. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    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. infokab Messages postés 23 Statut Membre
       
      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. infokab Messages postés 23 Statut Membre
       
      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. infokab Messages postés 23 Statut Membre
       


      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. infokab Messages postés 23 Statut Membre
       


      <?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