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

Petit nouveau ! | 5 Messages

01 oct. 2011, 20:17

Bonjour,

J'ai transférer mon site sous Joomla chez OVH, et apparait alors ce message sur ma page d'accueil :

Notice: Trying to get property of non-object in /homez.398/diaph/www/components/com_jumi/files/index_journal04.php on line 184

Notice: Trying to get property of non-object in /homez.398/diaph/www/components/com_jumi/files/index_journal04.php on line 185

Notice: Trying to get property of non-object in /homez.398/diaph/www/components/com_jumi/files/index_journal04.php on line 186


Il s'agit d'extraire des données de l'enregistrement suivant (à celui affiché) par ordre de date dans la base de données et l'erreur se produit lorsqu'il n'y a pas d'enregistrement suivant, que l'enregistrement est le plus récent

Il s'agit d'un fichier .php intégré à joomla par jumi
voici les lignes de php auxquelles correspondent le message
<?
if(isset($mois) && isset($annee) && isset($jour_numerique)) {
  $query = "SELECT annee,mois,jour FROM journal WHERE ((jour<'$jour_numerique' AND mois='$mois_numerique' AND annee='$annee') OR (mois<'$mois_numerique' AND annee='$annee') OR (mois>'$mois_numerique' AND annee<'$annee')) ORDER BY annee DESC,mois DESC,jour DESC LIMIT 0,1";
  $result = mysql_query($query, $connexion);
  $result = mysql_fetch_object($result);
  $jour = $result->jour;
  $month = $result->mois;
  $year = $result->annee;
  if($jour != "") {
    print("              <a href=\"http://www.pavans.fr/index.php?option=com_jumi&fileid=3&Itemid=2&lang=fr&jour=$jour&mois=$month&annee=$year\"><img src=\"components/com_jumi/files/back_17_n.gif\" width=\"11\" height=\"17\" border=\"0\"  alt=\"previous\"  onmouseover=\"this.src='components/com_jumi/files/back_17_o.gif';\" onmouseout=\"this.src='components/com_jumi/files/back_17_n.gif';\"></a>\n");
    print("              &nbsp;\n");
  }
?>
              <a href="http://www.pavans.fr/index.php?option=com_jumi&fileid=4&Itemid=4&lang=fr&mois=<? echo "$mois&annee=$annee" ?>"><img src="components/com_jumi/files/planche_17_n.gif" width="20" height="17" border="0" alt="planche" onmouseover="this.src='components/com_jumi/files/planche_17_o.gif';" onmouseout="this.src='components/com_jumi/files/planche_17_n.gif';"></a>
<?php
  $query = "SELECT annee,mois,jour FROM journal WHERE ((jour>'$jour_numerique' AND mois='$mois_numerique' AND annee='$annee') OR (mois>'$mois_numerique' AND annee='$annee') OR (mois<'$mois_numerique' AND annee>'$annee')) ORDER BY annee,mois,jour LIMIT 0,1";
  $result = mysql_query($query, $connexion);
  $result = mysql_fetch_object($result);
  $jour = $result->jour; // <=== ligne184
  $month = $result->mois;  // <===  ligne185
  $year = $result->annee; // <===  ligne186
  if($jour != "") {
    print("              &nbsp;\n");
    print("              <a href=\"http://www.pavans.fr/index.php?option=com_jumi&fileid=3&Itemid=2&lang=fr&jour=$jour&mois=$month&annee=$year\"><img src=\"components/com_jumi/files/for_17_n.gif\" width=\"11\" height=\"17\" border=\"0\" alt=\"next\" onmouseover=\"this.src='components/com_jumi/files/for_17_o.gif';\" onmouseout=\"this.src='components/com_jumi/files/for_17_n.gif';\"></a>\n");
  }
}
?>
mon hebergement est en PHP 5.3.8
vous trouverez les infos http://www.pavans.fr/infosphp.php
sinon mon site est http://wwww.pavans.fr

Merci de votre aide
Modifié en dernier par 24images le 04 oct. 2011, 23:49, modifié 1 fois.

ViPHP
xTG
ViPHP | 7331 Messages

01 oct. 2011, 21:20

Avant de tenter d'exploiter le résultat d'une requête, il faut tester qu'il y a des résultats. ;)
mysql_num_rows() pourra t'aider.

Petit nouveau ! | 5 Messages

03 oct. 2011, 00:07

Après ton conseil et la consultation de PHP Manual je viens d'essayer d'intégrer cette fonction dans ma page mais je suis bien trop novice pour parvenir à un résultat qui fonctionne
Saurais tu me conseiller une solution ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

03 oct. 2011, 01:21

Salut,

Quel est le code utilisé ?

Sinon il s'qgit s'un simple if :/

@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 2278 Messages

03 oct. 2011, 09:26

8Il faudrai creuser du côté de javascript.... qui est ce (this)?
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 275 Messages

03 oct. 2011, 12:18

8Il faudrai creuser du côté de javascript.... qui est ce (this)?
Alors, :
1) Les notices PHP ne sont certainnement pas liées à un problème de javascript
2) Le this dans les évenements d'un tag se rapporte bien entendu au tag en question (a l'objet DOMNode qui le représente)

xTG a bien cerné le problème, pas la peine de rajouter des inepties.

Mammouth du PHP | 2278 Messages

03 oct. 2011, 21:14

Il faudrait creuser du côté de javascript.... qui est ce (this)?
Alors, :
1) Les notices PHP ne sont certainnement pas liées à un problème de javascript
2) Le this dans les évenements d'un tag se rapporte bien entendu au tag en question (a l'objet DOMNode qui le représente)

xTG a bien cerné le problème, pas la peine de rajouter des inepties.
Merci pour les inepties... Il est vrai que ce genre de réponse aide à résoudre le problème...
Ah bon, une erreur Javascript repose sur le fait que on n'a pas exploité "correctement" le résultat d'um mysql_query?
C'est une erreur PHP ce message :

Code : Tout sélectionner

Notice: Trying to get property of non-object in /homez.398/diaph/www/components/com_jumi/files/index_journal04.php on line 184
Il faudrait lire entièrement les demandes d'aide avant d ese précipiter sur les rféponses standardisées:
$result = mysql_query()...
if ($result).....
C'est un comportement systématique que j'observe dans les réponses des gourous, comme si les réponses étaient automatisées...
C'est comme quand qqn demande à saisir des tableau dont les données sont en ligne et qu'on lui répond avec le codage usuel qui l'amène à avoir autant de tableaux que de données différentes, alors que la répons eà sa question est tout autre.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Petit nouveau ! | 5 Messages

03 oct. 2011, 21:27

Woaaaa le debat me dépasse complétement,

J'ai fait quelques tentatives de script avec if mais je me suis bien planté. J'aurais assez peur de me ridiculiser. Mes notions de PHP tiennent plus d'un art empirique et chanceux de la copie avec éventuelle recitation de formule magique que d'une réelle compétence.
Si quelqu'un a une piste plus précise je suis preneur...

ViPHP
xTG
ViPHP | 7331 Messages

03 oct. 2011, 21:58

Voici un genre de traitement qui serait attendu :
if( ... vérification des variables envoyées ...)
{
  $sql = '...'; // ta requête
  $res = mysqli_query($sql); // mysqli est à jour contrairement à mysql qui a été abandonné (le pilote, pas le sgbd ;) et les fonctions se ressemblent traits pour trait )
  // vérification des erreurs (juste pour un mode de fonctionnement debug)
  if( !res )
  {
    echo mysqli_errno() . ": " . mysqli_error();
  }
  else
  {
    // vérification du nombre de lignes renvoyées par la requête
    if( mysqli_num_rows() > 0 )
    {
      $r = mysqli_fetch_array($res);
      // affichage des résultats
    }
  }
}
@sirakawa : toutes ces erreurs sont des erreurs PHP et n'ont rien à voir avec le JS. ;)

Edit : j'ai corrigé le code, j'avais entamé avec mysqli et continué avec mysql... ça fait tâche. :D
Modifié en dernier par xTG le 04 oct. 2011, 10:45, modifié 2 fois.

Petit nouveau ! | 5 Messages

04 oct. 2011, 10:29

Merci beaucoup je vais tacher d'avancer avec ça je te tiens au courant...

Eléphant du PHP | 275 Messages

04 oct. 2011, 11:09

Ah bon, une erreur Javascript repose sur le fait que on n'a pas exploité "correctement" le résultat d'um mysql_query?
C'est une erreur PHP ce message :

Code : Tout sélectionner

Notice: Trying to get property of non-object in /homez.398/diaph/www/components/com_jumi/files/index_journal04.php on line 184
Oui, c'est donc exactement ce que je disais. Tu es le seul a avoir évoqué javascript comme cause potentielle.

Petit nouveau ! | 5 Messages

04 oct. 2011, 22:43

Finalement j'ai pondu ça :
<?
if(isset($mois) && isset($annee) && isset($jour_numerique)) {
  $query = "SELECT annee,mois,jour FROM journal WHERE ((jour<'$jour_numerique' AND mois='$mois_numerique' AND annee='$annee') OR (mois<'$mois_numerique' AND annee='$annee') OR (mois>'$mois_numerique' AND annee<'$annee')) ORDER BY annee DESC,mois DESC,jour DESC LIMIT 0,1";
  $result = mysql_query($query, $connexion);
  if( mysql_num_rows($result) > 0 )
    {
  $res = mysql_fetch_object($result);
  $jour = $res->jour;
  $month = $res->mois;
  $year = $res->annee;
  if($jour != "") {
    print("              <a href=\"http://www.pavans.fr/index.php?option=com_jumi&fileid=3&Itemid=2&lang=fr&jour=$jour&mois=$month&annee=$year\"><img src=\"components/com_jumi/files/back_17_n.gif\" width=\"11\" height=\"17\" border=\"0\"  alt=\"previous\"  onmouseover=\"this.src='components/com_jumi/files/back_17_o.gif';\" onmouseout=\"this.src='components/com_jumi/files/back_17_n.gif';\"></a>\n");
    print("              &nbsp;\n");
  }}
?>
              <a href="http://www.pavans.fr/index.php?option=com_jumi&fileid=4&Itemid=4&lang=fr&mois=<? echo "$mois&annee=$annee" ?>"><img src="components/com_jumi/files/planche_17_n.gif" width="20" height="17" border="0" alt="planche" onmouseover="this.src='components/com_jumi/files/planche_17_o.gif';" onmouseout="this.src='components/com_jumi/files/planche_17_n.gif';"></a>
<?php
  $query = "SELECT annee,mois,jour FROM journal WHERE ((jour>'$jour_numerique' AND mois='$mois_numerique' AND annee='$annee') OR (mois>'$mois_numerique' AND annee='$annee') OR (mois<'$mois_numerique' AND annee>'$annee')) ORDER BY annee,mois,jour LIMIT 0,1";
  $result = mysql_query($query, $connexion);
  if( mysql_num_rows($result) > 0 )
    {
  $res = mysql_fetch_object($result);
  
  $jour = $res->jour;
  $month = $res->mois;
  $year = $res->annee;  
  
  if($jour != "") {
    print("              &nbsp;\n");
    print("              <a href=\"http://www.pavans.fr/index.php?option=com_jumi&fileid=3&Itemid=2&lang=fr&jour=$jour&mois=$month&annee=$year\"><img src=\"components/com_jumi/files/for_17_n.gif\" width=\"11\" height=\"17\" border=\"0\" alt=\"next\" onmouseover=\"this.src='components/com_jumi/files/for_17_o.gif';\" onmouseout=\"this.src='components/com_jumi/files/for_17_n.gif';\"></a>\n");
  }
} }
?>
Cela semble fonctionner.
Je suis sûr que ce n'est pas la perfection en terme de debug, gestion des erreurs et mise à jour des fonctions mais bon je suis déjà en estrême limite de mes compétences.

Merci beaucoup de votre aide en tout cas.