[php et xquery] Fatal error: Call to a member function children() on a non-object
Bonjour,
Je travaille sur une base de données Exist (où sont donc stockés des fichiers .xml).
J'ai une page .php dans laquelle je souhaite, quand un utilisateur poste un commentaire :
- ajouter le commentaire dans la base
- mettre à jour le nombre de points de l'utilisateur (quand il poste un commentaire, on lui donne 5 points).
Mes deux requêtes Xquery fonctionnent bien séparément. (si je commente la 2ème requête, l'ajout de commentaire dans la base fonctionne ; si je commente la 1ère requête, la mise à jour du nombre de points marche).
Mon problème : Quand je veux exécuter mes 2 requêtes, la 2ème n'est pas exécutée et j'ai une fatal error :
Citation:
Fatal error: Call to a member function children() on a non-object in C:\wamp\www\Macaronissime\Scripts\Utilisateur\ficheProduit.php on line 89
La ligne 89 est :
Code:
$nbPoints = $object2->children()->points + 5;
Mon code PHP :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| /* si l'utilisateur a poste un commentaire */
if(isset($_POST['commentaire'])) {
$pseudo = $_POST['pseudo'];
$commentaire = $_POST['commentaire'];
/* on insere le commentaire */
/* requete qui recherche l'id max parmis les commentaires */
$query0 = '<id><idMax>{let $idComm := document("macaronissime/base.xml")//commentaire/@idComm return max($idComm)}</idMax></id>';
$result0 = $db->xquery($query0);
$object0 = simplexml_load_string($result0["XML"]);
/* on incremente l'id */
$idComm = $object0->children()->idMax + 1;
/* on insere le commentaire en BD */
$query1 = 'for $commentaires in document("macaronissime/base.xml")/macaronissime/commentaires
return update insert
<commentaire idComm=\''.$idComm.'\'>
<categorie>'.$idCategorie.'</categorie>
<pseudo>'.$pseudo.'</pseudo>
<contenu>'.$commentaire.'</contenu>
</commentaire> into $commentaires';
$db->xquery($query1);
/* on augmente de 5 points l'utilisateur a chaque commentaire */
/* requete qui recherche le nombre de points de l'utilisateur */
$query2 = 'for $clients in document("macaronissime/base.xml")/macaronissime//client[@idClient="'.$idClient.'" ]
return <nombre>{$clients/points}</nombre>';
$result2 = $db->xquery($query2);
$object2 = simplexml_load_string($result2["XML"]);
/* on augmente de 5 points */
$nbPoints = $object2->children()->points + 5;
/* on met a jour le nombre de points de l'utilisateur */
$b = 'for $p in document("macaronissime/base.xml")/macaronissime//client[@idClient="'.$idClient.'"]/points
return update replace $p with <points>'.$nbPoints.'</points>';
$db->xquery($b);
} |
Quelqu'un aurait une idée ? Cela fait plusieurs jours que je recherche, et je dois avouer que je sèche ..
Merci d'avance :)