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.
Version imprimable
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.
quel message d'erreur obtiens-tu ?
Salut,
Tu as un include('util.php'); dans ton fichier bd_action.php ?
Ca a l'air bête mais on sait jamais :mouarf:
Oui oui t'inquiète pas. Je ne suis pas si c** :mouarf3:Citation:
Envoyé par rieppe
Je n'obtiens aucun message d'erreur précis.Citation:
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:
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:
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:
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:
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:
1
2
3
4
5 include ('util.php'); if ($_GET["act"] == 'test') { echo en_to_re_date2($_GET["date"]); }
Code:
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 ?
Justement rien.Citation:
Envoyé par marcha
Moi ils ne sont pas dans le même dossier, j'ai l'arborescence classique : cgi-bin, includes, javascript, html, class-styleCitation:
Envoyé par marcha
Mon util.php se trouve dans /includes, mon bd_action.php également et mon script dans /javascript.
Voici mon getXhr() :
Code:
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; }
La console ne me dit rien...Citation:
Envoyé par marcha
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.Citation:
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