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 :
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 :
$nbPoints = $object2->children()->points + 5;
Mon code PHP :
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
Partager