8768 sujets

Développement web côté serveur, CMS

Pages :
Bonjour/Bonsoir,
je souhaite afficher des informations sur un article lorsque je clique dessus mais ce message d'erreur " Notice: Trying to get property of non-object in C:\wamp\www\Site e-commerce\SiteWeb\boutique.php on line 21 Call Stack #TimeMemoryFunctionLocation 10.0013143240{main}( )..\boutique.php:0 .jpg"/>" apparait !
Désolé de vous demander de chercher la petite erreur mais deja 4 heures que jy suis et rien ne fonctionne. Merci de votre aide par avance upload/1545509684-73754-code.png
Modérateur
Bonjour,

La variable $s utilisée à la ligne 21 n'est probablement pas un objet. Et si c'est bien le cas, c'est que les instructions qui devaient "fabriquer" l'objet $s n'ont pas fonctionner comme espéré.

Amicalement,
Tout d’abord merci de votre réponse !

Ce qui voudrait dire que ma ligne 13 n'est pas valide ?
Parce que je l'utilise aussi dans les instructions juste en dessous et cela fonctionne...

Merci de votre aide
Modérateur
Bonjour,

skrtMan a écrit :
Tout d’abord merci de votre réponse !

Ce qui voudrait dire que ma ligne 13 n'est pas valide ?
Parce que je l'utilise aussi dans les instructions juste en dessous et cela fonctionne...

Merci de votre aide


Qu'est-ce qu'il y a dans $s ? C'est ça la question ! Il faut se débrouiller pour savoir ce qu'il y a dans $s, en rajoutant des tests dans le code juste après sa première apparition.

Amicalement,
Bonsoir,

J'ai essayer d'afficher le de la variable juste après son appelle mais rien ne s'affiche, et lorsque j'ai mis les trois lignes qui me causaient l'erreur en commentaire, une accolade est apparu au milieu de l'ecran et je ne trouve pas ou se trouve l'erreur de guillemet de points virgule ou ce qui ne va pas.
upload/1545590058-73754-code1.png upload/1545590068-73754-code2.png

Voici l'intégralité de ma page de code.
Merci par avance de votre aide.
Modifié par skrtMan (23 Dec 2018 - 19:34)
Modérateur
Bonjour,

Si la ligne 13 $s = $select(...) fonctionnait correctement, $s est un objet.

On n'affiche pas le contenu d'un objet avec un simple echo. C'est plus compliqué que ça.

Exemple de code pour afficher le contenu de $s à insérer juste après la ligne 13 :

if ($s) print_r($s);
else echo "la variable s est null";


EDIT: et je vois rien qui permet de se connecter à la base. C'est fait dans le script header.php ?

Amicalement,
Modifié par parsimonhi (23 Dec 2018 - 20:38)
Bonsoir,

Oui la liaison avec la base de donnée est dans le header et fonctionne, je l'ai tester avec d'autres requêtes.
Cela m'affiche la variable est nul je ne comprend pas pourquoi ce n'est pas un objet.

J’apprécie sincèrement l'interet que vous apportez a ma demande,
Merci encore
Modérateur
Bonjour,

Y a ce que tu veux dans $_GET["show"] ? (faire un echo $_GET["show"] à la ligne 8)

Amicalement,
Bonsoir,

Oui tout a fait, le nom de l'article sur lequel je clique, et il est ensuite censé me sortir les informations de cette l'article ayant le meme titre...

Desolé du temps que je vous fait perdre...
Bonsoir,

Je n'ai toujours pas réussi a résoudre mon problème si quelqu'un a une idée, n’hésitez surtout pas...

Merci d'avance !
Modérateur
Bonjour,

Tu te connectes à ta base avec phpMyAdmin, et tu fais la même requête que celle que tu essaies de faire dans ton code.

Tu regardes s'il te renvoie ce que tu attends.

Amicalement,
J'ai déjà essayer de faire ca, il me renvoie ce que je veux et tout fontionne très bien, avec un ami on a réussi a isoler le problème et à être sur que le probleme vient du $s qui n'est pas un objet. La création de l'objet après avoir ete tester renvoie "false" et nous n'avons pas reussi a savoir pourquoi...
Modérateur
Bonjour,

Est-ce que la ligne juste avant a fonctionné ?

Est-ce que celle encore avant a fonctionné ?

Et ainsi de suite.

Faut les tester toutes.

Amicalement,
Modérateur
Bonjour,

if ($db)
{
  $product = $_GET["show"];
  $query = "SELECT * FROM products WHERE title=?";
  $select = $db->prepare($query);
  if ($select)
  {
    if ($select->execute(array($product)))
    {
      $s = $select->fetch(PDO::FETCH_OBJ);
      if ($s) echo "enfin !";
      else echo "perdu, select->fetch s'est ramassé !";
    }
    else echo "perdu, select->execute s'est ramassé !";
  }
  else echo "perdu, db->prepare s'est ramassé !";
}
else echo "perdu, new PDO s'est ramassé !";


Amicalement,
Modifié par parsimonhi (25 Dec 2018 - 02:17)
Bonjour,

Tout d'abord Joyeux Noel et merci encore.

J'ai executer votre code et le premier cas d'erreur ressort, sur ma page s'affiche "perdu, select->fetch s'est ramassé"

Amicalement,
Modérateur
Bonjour,

Est-ce qu'il y a des espaces ou des caractères spéciaux ou des apostrophes ou autre dans le nom du produit ?

Amicalement,
Bonjour ,

Non, absolument pas, j'ai effectuer ma requête au sein même de ma base de données et les résultats sont bons, le problème ne vient ni de la requête, ni des produits.

Amicalement,
Modérateur
Bonjour,

Le fait que tu effectues ta requête avec un truc genre phpMyAdmin ne veut pas dire que la chaine représentant le nom de ton produit a bien été transportée "tel quel" via ce que j'imagine être un formulaire.

Car y a pas d'erreur php dans le code (vu que je l'ai testé chez moi et il marche très bien). Donc il reste que ça.

Amicalement,
Modérateur
Bonjour,

L'erreur "perdu, select->fetch s'est ramassé" apparait typiquement quand le produit n'a pas été trouvé dans la base. Soit le produit n'est pas dans la table product de la base, soit le nom du produit fourni via $_GET a été altéré à un moment ou un autre.

Amicalement,
Bonsoir,

J'ai effectué ma requete au sein de ma base et les resultats sont bons, ca voudrait dire que le nom du produit est altéré mais pourtant lorsque je l'afficher apres ma requete il est valide et correspond avec le produit.
De plus comment pourrait-il etre altéré sachant que je ne fais rien dans mon code qui devrait interféré avec cela...
Pages :