[RESOLU] Notice: Trying to get property of non-object in

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Notice: Trying to get property of non-object in

Re: [RESOLU] Notice: Trying to get property of non-object in

par Jefekoi » 10 juin 2019, 01:38

Merci pour ton aide l'artiste ..

Problème réglé !!!!

Re: [RESOLU] Notice: Trying to get property of non-object in

par Saian » 09 juin 2019, 23:33

En fait je crois simplement qu'il bloque sur la fermeture de connexion c'est tout. Je t'ai transmis le code corrigé en MP.
Et comme tu as une ouverture de session + blocage sur le con close ben même en rafraichissant la page, tant que le script c'est pas arrêté de tourner, ça bloque toutes les calls derrières jusqu'à que le script s'arrête et que la session soit libérée.

Je vois très bien dans l'inspecteur que tout le dom est chargé mais ça bloque juste à cause de la fermeture de la connexion et du coup le site reste affiché en chargement car le js attend que l'évènement dom load soit déclenché... et qu'il ne peut se déclencher tant que la fermeture n'est pas faite...

EDIT : j'avais pas fait gaf à cette erreur aussi Warning: mysqli::query(): Couldn't fetch mysqli in ...../index.php on line 265
Ça c'est que $conn n'est plus une connexion active au moment ou php passe sur la ligne mais ça ne devrait à priori pas arriver avec le code complet que je t'ai passé. Alors peut être que le mysqli_close fonctionne avec une variable connexion objet. En tout cas tu as un close quelque part avant le query de la ligne 265... la connexion tu l'ouvres une fois en haut et tu la fermes une fois en bas. C'est à mon sens le plus simple avec ce genre de code from scratch sans gestionnaire de services. Tu évites de te connecter et déconnecter au serveur mysql à chaque requête ce qui alourdi inutilement le traitement.

A la limite tu mets même ça à la fin, ainsi pas d'embrouille si la connexion est morte :
if ($conn)
  $conn->close();

Re: [RESOLU] Notice: Trying to get property of non-object in

par Saian » 09 juin 2019, 23:28

Oué c'est le $conn->close(); que je t'ai dis de mettre à la fin. Comme tu fais un new mysqli il faut faire le close en objet et non pas avec la fonction mysqli_close.

Re: [RESOLU] Notice: Trying to get property of non-object in

par Jefekoi » 09 juin 2019, 23:24

En cherchant un petit mot, il m'a afficher une erreur :

Warning: mysqli::query(): Couldn't fetch mysqli in ...../index.php on line 265
Erreur

Warning: mysqli_close(): Couldn't fetch mysqli in ...../index.php on line 288

Re: [RESOLU] Notice: Trying to get property of non-object in

par Jefekoi » 09 juin 2019, 23:07

Merci pour tes conseils , effectivement il rame toujours .. bizarre....

Re: [RESOLU] Notice: Trying to get property of non-object in

par Saian » 09 juin 2019, 22:23

Vas y on va voir ça ;)

Re: [RESOLU] Notice: Trying to get property of non-object in

par Jefekoi » 09 juin 2019, 22:22

Je crains que tu vas faire de grand yeux.. je te l'envoie en MP si tu veux :)

Re: [RESOLU] Notice: Trying to get property of non-object in

par Saian » 09 juin 2019, 22:18

Un petit problème d'intégration ? tu veux me montrer ton code complet ?

Re: [RESOLU] Notice: Trying to get property of non-object in

par Jefekoi » 09 juin 2019, 22:15

Merci beaucoup pour ton aide Saian, c'est marrant à partir du moment où je l'intègre dans mon index, il se met à ramer grave ....

Re: [RESOLU] Notice: Trying to get property of non-object in

par Saian » 09 juin 2019, 21:31

Un petit ORDER BY scrabble_name ASC pourrait être pas mal dans la requête : ^^
$query = 'SELECT * FROM dictionnaire WHERE sorted_letters IN (:combinations) ORDER BY scrabble_name ASC';

PS : il faut bien reset le tableau $combinations à chaque passage dans le for, sinon les mots s'ajoutent au fur et à mesure. :P

Re: [RESOLU] Notice: Trying to get property of non-object in

par Jefekoi » 09 juin 2019, 21:30

YESSSSSSS Magnifique :)

Re: [RESOLU] Notice: Trying to get property of non-object in

par Saian » 09 juin 2019, 21:21

On est bêtes, on écrase le $word du départ dans le while ($word = $words->fetch_object()). :P
Même avec plus de 15 ans d'expérience on peut se fail. :mrgreen:

$conn = new mysqli($servername, $username, $password, $dbname);

$searchedWord = isset($_GET['word']) ? $_GET['word'] : 'stalagmometres';
$query = 'SELECT * FROM dictionnaire WHERE sorted_letters IN (:combinations)';

for ($length = strlen($searchedWord) - 1; $length > 1; $length--)
{
  echo "<br/>Anagrams with <b>$length</b> letters<br/>";
  $combinations = array();
  $combination = new Combination($searchedWord, $length);

  while ($letters = $combination->next()) {
    $combinations[] = $letters;
  }

  $combinationQuery = str_replace(':combinations', "'".implode("', '", $combinations)."'", $query);
  echo 'Query:<br/>'.$combinationQuery.'<br/>';

  $words = $conn->query($combinationQuery);
  if (!$words)
    echo 'Error: '.$conn->error.'<br/>with query:<br/>'.$combinationQuery;
  else {
    echo 'Words:<br/>';
    while ($word = $words->fetch_object()) {
      echo $word->scrabble_name.'<br/>';
    }
  }
}

Re: [RESOLU] Notice: Trying to get property of non-object in

par Saian » 09 juin 2019, 21:10

Je vois que tu n'as des résultats que pour la première requête alors tu peux tester avec ça pour avoir plus d'informations.
Tu peux également tester les requêtes directement dans phpmyadmin voir ce que tu obtiens.
Et avec le isset($_GET['word']) tu peux éventuellement changer de mot directement en faisant ?word=lemot.
N'oublies pas que la class Combination comme je te l'ai fournie ne supporte pas les accents.
$conn = new mysqli($servername, $username, $password, $dbname);

$word = isset($_GET['word']) ? $_GET['word'] : 'stalagmometres';
$query = 'SELECT * FROM dictionnaire WHERE sorted_letters IN (:combinations)';

for ($length = strlen($word) - 1; $length > 1; $length--)
{
  echo "<br/>Anagrams with <b>$length</b> letters<br/>";
  $combinations = array();
  $combination = new Combination($word, $length);

  while ($letters = $combination->next()) {
    $combinations[] = $letters;
  }

  $combinationQuery = str_replace(':combinations', "'".implode("', '", $combinations)."'", $query);
  echo 'Query:<br/>'.$combinationQuery.'<br/>';

  $words = $conn->query($combinationQuery);
  if (!$words)
    echo 'Error: '.$conn->error.'<br/>with query:<br/>'.$combinationQuery;
  else {
    echo 'Words:<br/>';
    while ($word = $words->fetch_object()) {
      echo $word->scrabble_name.'<br/>';
    }
  }
}

Re: [RESOLU] Notice: Trying to get property of non-object in

par Jefekoi » 09 juin 2019, 21:08

C'est marrant j'affiche les deux versions dans PP.php

Et la première me donne que deux mots ....

Code : Tout sélectionner

$word = 'selectionner'; echo "Nom= ".$word ; echo "<hr/>"; $conn = new mysqli($servername, $username, $password, $dbname); $query = 'SELECT * FROM dictionnaire WHERE sorted_letters IN (:combinations)'; for ($length = strlen($word) - 1; $length > 1; $length--) { echo "<br/>Anagrams with <b>$length</b> letters<br/>"; $combinations = array(); $combination = new Combination($word, $length); while ($letters = $combination->next()) { $combinations[] = $letters; } $combinationQuery = str_replace(':combinations', "'".implode("', '", $combinations)."'", $query); $words = $conn->query($combinationQuery); while ($word = $words->fetch_object()) { echo":".$word->scrabble_name.'<br/>'; } } echo "<hr/>"; $word = 'selectionner'; $conn = new mysqli($servername, $username, $password, $dbname); $query = 'SELECT * FROM dictionnaire WHERE sorted_letters IN (:combinations)'; for ($length = strlen($word) - 1; $length > 1; $length--) { // echo "<br/>Query for combinations with <b>$length</b> letters<br/>"; echo "<br/><br/>"; $combinations = array(); $combination = new Combination($word, $length); while ($letters = $combination->next()) { $combinations[] = $letters; echo $letters.", "; } //$combinationQuery = str_replace(':combinations', "'".implode("', '", $combinations)."'", $query); // echo $combinationQuery.'<br/><br/>'; }

Re: [RESOLU] Notice: Trying to get property of non-object in

par Saian » 09 juin 2019, 20:46

T'as plus grand chose à faire en fait :
$conn = new mysqli($servername, $username, $password, $dbname);

$word = 'stalagmometres';
$query = 'SELECT * FROM dictionnaire WHERE sorted_letters IN (:combinations)';

for ($length = strlen($word) - 1; $length > 1; $length--)
{
  echo "<br/>Anagrams with <b>$length</b> letters<br/>";
  $combinations = array();
  $combination = new Combination($word, $length);

  while ($letters = $combination->next()) {
    $combinations[] = $letters;
  }

  $combinationQuery = str_replace(':combinations', "'".implode("', '", $combinations)."'", $query);

  $words = $conn->query($combinationQuery);
  while ($word = $words->fetch_object()) {
    echo $word->scrabble_name.'<br/>';
  }
}

La connexion que tu avais mise dans la fonction verifier c'est mieux qu'elle ne soit pas dedans, ni dans la boucle, sinon tu reconnectes plusieurs fois ce qui bouffe encore plus de temps. :wink: