|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | |||
|
Invité de passage
![]() Inscription : février 2011 Messages : 13 ![]() |
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 :
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:
La ligne 89 est : Code php :
$nbPoints = $object2->children()->points + 5; Mon code PHP : Code :
Quelqu'un aurait une idée ? Cela fait plusieurs jours que je recherche, et je dois avouer que je sèche .. Merci d'avance |
|||
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() Inscription : juin 2004 Messages : 747 ![]() |
Il semble que la ligne
Code :
$object2 = simplexml_load_string($result2["XML"]); As-tu testé le retour de $query2 ?
__________________
|
|
00
|
|
|
#3 | ||||
|
Invité de passage
![]() Inscription : février 2011 Messages : 13 ![]() |
Il me semble que le problème ne vient pas de la requête xquery en elle-même, car si je commente ma 1ère requête en faisant : "//$db->xquery($query1);", alors la 2ème requête ne retourne pas la fatal error.
J'ai essayé de tester le retour en faisant un count juste après la ligne que tu cites : Code :
Et quand j'exécute ma requête xquery dans l'interface de ma base de données Exist, le résultat est : Code :
|
||||
|
|
00
|
|
|
#4 |
|
Membre chevronné
![]() Inscription : juin 2004 Messages : 747 ![]() |
et un var_dump($object2) ?
__________________
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : février 2011 Messages : 13 ![]() |
Là, cela m'affiche "bool(false)"
EDIT : Tandis que lorsque je commente ma 1ère requete pour ne pas l'exécuter, affiche : object(SimpleXMLElement)#3 (1) { ["points"]=> string(2) "10" } ("10" etant le nombre de points) |
|
|
00
|
|
|
#6 |
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
SimpleXML ne fait que des requêtes de sélection, tourne toi vers DOMXpath avec la méthode evaluate
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : février 2011 Messages : 13 ![]() |
Je n'utilise SimpleXML que pour des requêtes de sélection pourtant, je ne vois pas ce que tu veux dire ?
Je vais regarder DOMXpath. |
|
|
00
|
|
|
#8 | |
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
Citation:
__________________
http://blog.stealth35.com/ |
|
|
|
00
|
|
|
#9 | |||
|
Invité de passage
![]() Inscription : février 2011 Messages : 13 ![]() |
Citation:
Ce que je n'arrive pas à comprendre, c'est que si je commente cette ligne (qui insère le commentaire) alors la requête suivante (ajout de 5 points) fonctionne et je n'ai plus la fatal error Code :
Comme si il fallait nettoyer quelque chose entre les 2 requêtes .. |
|||
|
|
00
|
|
|
#10 |
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
a toi de jouer avec les var_dump voir ce qui se passe, xquery ca vient d'où ? ton niveau d'erreur est bien au maximum ?
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#11 | ||||||||
|
Invité de passage
![]() Inscription : février 2011 Messages : 13 ![]() |
Le code suivant (où la 1ère requête marche mais pas la 2ème)
Code :
Code :
Tandis que dans le code suivant où je ne fais que mettre en commentaire la 1ère requete; la 2ème requête marche Code :
Code :
Donc effectivement on s'apperçoit, dans le cas où je veux exécuter mes 2 requêtes (1er cas que je me montre ci-dessus) que la 2ème requête ($db->xquery($query2)) ne retourne pas d'array .. mais pourquoi ? |
||||||||
|
|
00
|
|
|
#12 |
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#13 |
|
Invité de passage
![]() Inscription : février 2011 Messages : 13 ![]() |
Ah oui ! Que veux-tu savoir par "xquery ça vient d'où ?" ?
Et le niveau d'erreur tu parles de celui de serveur ? (j'utilise wamp) Si oui comment le modifier ? |
|
|
00
|
|
|
#14 | |
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
Citation:
la méthode xquery vient de quelle librairie ? pour le niveau d'erreur je parle du error_reporting qui dois etre a E_ALL | E_STRICT, a changer dans ton php.ini ou au debut de ton script fait :
__________________
http://blog.stealth35.com/ |
|
|
|
00
|
|
|
#15 | |
|
Invité de passage
![]() Inscription : février 2011 Messages : 13 ![]() |
Visiblement le niveau d'erreur est bien au maximum vu qu'en mettant error_reporting(-1); en début du script, j'ai exactement le même message :
Citation:
|
|
|
|
00
|
|
|
#16 |
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
y'a peu etre une reference qui traine, apres faudrais voir avec l'auteur de la classe, mais je comprend pas ta requete :
tu recois du XML, tu fais un xquery pour transformer ton XML et tu le remet dans SimpleXML pour compter le nombre de noeuds ? pourquoi ne pas compter directement le nombre de noeuds dans le XML d'origine, et comme derrière c'est du SOAP doit bien y'avoir une fonctions qui fait ton calcule dans l'API ? quelle est le but complet de ton code ?
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#17 | |||
|
Invité de passage
![]() Inscription : février 2011 Messages : 13 ![]() |
Le but de mon complet de mon code que j'ai mis dans mon 1er post
Code :
$query1 : insere le commentaire (avec id+1) $query2 : recherche le nombre de points de l'utilisateur qui insère le commentaire $b : met à jour le nombre de points de l'utilisateur (+5) Résumé du problème : Si je commente $query1, alors $b est exécuté (l'utilisateur a donc 5 points de plus, mais le commentaire n'est pas inséré) Si je ne commente pas $query1, alors j'ai l'erreur (le commentaire est inséré, mais le nombre de points de l'uilisateur n'est pas mis à jour) : Citation:
Code php :
$nbPoints = $object2->children()->points + 5; On peut surement réduire le nombre de requêtes, mais c'est des requêtes de base .. pourquoi n'arriverait-on pas le faire (alors qu'en SQL cela me prendrait 2 minutes) ? |
|||
|
|
00
|
|
|
#18 |
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
avec juste SimpleXML/DOMDocument tu dois pouvoir le faire, t'as un petit exemple de ta base ou on peu faire des tests
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#19 | ||
|
Invité de passage
![]() Inscription : février 2011 Messages : 13 ![]() |
Bien sûr, j'utilise eXist
EDIT : Sachant que la connection à la base se fait dans mon index.php : Code :
|
||
|
|
00
|
|
|
#20 | ||
![]() ![]() Inscription : septembre 2010 Messages : 7 101 ![]() |
juste comme ca (pas besion de eXist):
Code :
__________________
http://blog.stealth35.com/ |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com