Bonjour,
Pourquoi lorsqu'on appelle une page PHP par l'intermédiaire d'une requête HTTP xmlHTTPRequest, les "includes" en tête de fichier ne sont pas gérés.
Merci.
Bonjour,
Pourquoi lorsqu'on appelle une page PHP par l'intermédiaire d'une requête HTTP xmlHTTPRequest, les "includes" en tête de fichier ne sont pas gérés.
Merci.
ils sont gérés. il doit y avoir un autre problème.
C'est bizarre, j'ai un fichier util.php dans lequel j'ai implémenté de nombreuses fonctions PHP. Quand je l'include dans mon fichier PHP (lequel est appelé par xhr.open("GET","../../includes/bd_action.php?act=addPlanif&idOrg=" + id_org , false);), les fonctions ne sont pas connues de ce dernier...
Alors que lors d'un rechargment complet de la page, il n'y a aucun problème, les fonctions sont appelées correctement.
Salut,
Tu as un include('util.php'); dans ton fichier bd_action.php ?
Ca a l'air bête mais on sait jamais![]()
Oui oui t'inquiète pas. Je ne suis pas si c**Envoyé par rieppe
![]()
Je n'obtiens aucun message d'erreur précis.Envoyé par marcha
C'est juste que ma fonction n'est pas appelée. Pour exemple, j'ai fait une fonction pg_insert_id (correspondant au mysql_insert_id pour MySQL pour déterminer le nouvel identifiant créé) dans mon util.php et ça a toujours bien fonctionné.
Depuis que je suis passé à AJAX, je fais de nombreuses requêtes xmlHTPPRequest et lorsque je fais un echo"a" après l'appel de cette fonction et que je récupère cela avec un alert (xhr.responseText) : aucun message.
De plus, ma requête SQL suivante ne s'exécute pas.
En revanche, lorsque je mais directement la fonction pg_insert_id dans le fichier bd_action.php, là ça fonctionne.
Le souci, c'est que c'est c** d'avoir un fichier util.php contenant toutes les fonctions si je suis obligé de les recopier toutes dans tous mes fichiers php...
Salut,
est-ce que les chemins relatifs d'inclusion ne seraient pas à l'origine
du problème ? peux-tu donner l'emplacement des fichiers concernés
dans les deux cas ?
Non non c'est pas ça c'est sûr, j'avais essayé de lui fournir des chemins erronés ou de supprimer le fichier et dans les cas là il me fournit un message d'erreur clair.
Tu arrives à donner un code le plus simple possible qui provoque l'erreur ?
qu'on puisse tester ?
Désolé, là ça va pas être possible dans l'immédiat...
Demain, je vous envoie un extrait de code, pas de problème.
Mon util.php :
Mon bd_action.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 function pg_insert_id($link,$tablename,$fieldname) { $sql = "SELECT last_value FROM ${tablename}_${fieldname}_seq;"; $result=pg_query($link,$sql); if ($result) { $arr = pg_fetch_row($result,0); pg_free_result($result); if (isset($arr[0])) return $arr[0]; } return false; }
Finalement, mon script :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 include ('/util.php'); if ($_GET["act"] == "test") { $var = 'OUI'; $pg_host = "localhost"; $pg_user = "u"; $pg_passw = "pw"; $pg_db = "bd"; $conn_string = "host=" . $pg_host . " port=5432 dbname=" . $pg_db . " user=" . $pg_user . " password=" . $pg_passw; $link = pg_connect($conn_string) or die("Connexion Impossible! "); $sql = "INSERT INTO T_table "; $sql .="(table_nom,table_visible,is_group) "; $sql .="VALUES ('" . strtoupper($_GET['name']) . "', '$var','OUI') "; $res=pg_query($link,$sql); $new_id = pg_insert_id($link,'T_table','id_table'); echo $new_id; }
Voilà, j'ai essayé de réduire au maximum pour alléger mais normalement la structure globale est fonctionnelle.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 function test (n) { try { var xhr=getXhr(); xhr.open("GET","../bd_action.php?act=test&name=" + n , false); xhr.send(null); if(xhr.readyState == 4 && xhr.status == 200){ alert (xhr.responseText); } else { alert("Erreur:" + xhr.responseText); } } catch (ex) { alert("Exception: " + ex.message); } }
Là vous verrez que la fonction pg_insert_id bloque...
Sinon pour éviter de travailler avec une BDD :
util.php :
bd_action.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 function en_to_re_date2($date_en) { list($aaaa,$mm,$jj) = split('-',$date_en); $date_re = $jj . $mm . substr($aaaa,2,2); return($date_re); }
Script :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 include ('util.php'); if ($_GET["act"] == 'test') { echo en_to_re_date2($_GET["date"]); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 function test (d) { try { var xhr=getXhr(); xhr.open("GET","../bd_action.php?act=test&date=" + d , false); xhr.send(null); if(xhr.readyState == 4 && xhr.status == 200){ alert (xhr.responseText); } else { alert("Erreur:" + xhr.responseText); } } catch (ex) { alert("Exception: " + ex.message); } }
Salut,
et que reçoit tu dans xhr.responseText ?
Chez moi ça fonctionne,
mais j'ai mis les trois fichiers dans un même dossier pour mon test.
xhr.open("GET","bd_action.php?act=test&date=" + d , false);
d'autre part, j'ai ma propre fonction getXhr() puisque tu l'as pas postée,
le problème vient peux-être de là ?
tu as regardé dans la console javascript ?
Moi ils ne sont pas dans le même dossier, j'ai l'arborescence classique : cgi-bin, includes, javascript, html, class-styleEnvoyé par marcha
Mon util.php se trouve dans /includes, mon bd_action.php également et mon script dans /javascript.
Voici mon getXhr() :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 function getXhr(){ if(window.XMLHttpRequest) // Firefox et autres var GetXmlHttpRequest = new XMLHttpRequest(); else if(window.ActiveXObject){ // Internet Explorer try { GetXmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { GetXmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP"); } } else { // XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); GetXmlHttpRequest = false; } return GetXmlHttpRequest; }
Euh, le chemin dans ton get est relative à la page appellante, et n'a rien à voir avec l'emplacement physique de tes fichiers de scripts.Envoyé par linar009
Quelle est l'adresse de la page sur laquelle tu souhaites executer le script?
Tu peux donner le code de getXhr() stp
Partager