Fichier texte non créé sur le serveur
Résolu
filiplarlibe
Messages postés
28
Date d'inscription
Statut
Membre
Dernière intervention
-
filiplarlibe Messages postés 28 Date d'inscription Statut Membre Dernière intervention -
filiplarlibe Messages postés 28 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Je travaille actuellement sur une nouvelle version de mon site. J'ai donc pour cela modifié un module joomla pour pouvoir faire la géolocalisation html et afficher les horaires des prières en fonction de la position. J'ai créé également une liste déroulante pour pouvoir changer la méthode de calcul et donc rafraîchir les horaires des prières.
J'ai testé tout cela en local sur mon pc et tout marchait nickel pas de pb. Je l'ai mis maintenant sur un site en ligne temporaire. Et là la géolocalisation fonctionne correctement mais pas la liste déroulante. Je me suis rendu compte que normalement j'ai une deuxième page php qui doit créer un fichier texte avec les coordonnées de position et en fait ce fichier texte n'est pas créé.
Je vais essayer d'expliquer :
J'ai une page php page1.php qui calcule les prières et affiche les horaires des prières. Dans cette page, j'ai mis du javascript pour pouvoir faire la géolocalisation et renvoyer les données (en ajax) au serveur via une page2.php qui recalcule les horaires et les renvoie sur la page1 pour l'affichage.
De même sur la page1.php il y a une fonction javascript qui se déclenche au changement dans la liste de déroulante. Dans cette fonction, je renvoie également les données (en ajax) au serveur via une page2.php qui recalcule les horaires. Par contre la page2.php crée normalement un fichier txt qui permet de stocker les coordonnées de la position. Et c'est là, où il y a un souci, le fichier txt ne se crée pas.
Voici le code de création du fichier txt de la page2.php :
Pour info, j'ai essayé de créer ce fichier directement dans la page1.php, et là le fichier est bien créé. Je ne vois pas pourquoi ça fonctionne dans la page1.php et que ça ne fonctionne pas dans la page2.php.
La seule différence est que la page2.php est appelée par l'ajax. Mais en local sur mon poste ça fonctionnait très bien.
Pourriez-vous m'aider s'il vous plait ?
Je vous remercie par avance.
Je travaille actuellement sur une nouvelle version de mon site. J'ai donc pour cela modifié un module joomla pour pouvoir faire la géolocalisation html et afficher les horaires des prières en fonction de la position. J'ai créé également une liste déroulante pour pouvoir changer la méthode de calcul et donc rafraîchir les horaires des prières.
J'ai testé tout cela en local sur mon pc et tout marchait nickel pas de pb. Je l'ai mis maintenant sur un site en ligne temporaire. Et là la géolocalisation fonctionne correctement mais pas la liste déroulante. Je me suis rendu compte que normalement j'ai une deuxième page php qui doit créer un fichier texte avec les coordonnées de position et en fait ce fichier texte n'est pas créé.
Je vais essayer d'expliquer :
J'ai une page php page1.php qui calcule les prières et affiche les horaires des prières. Dans cette page, j'ai mis du javascript pour pouvoir faire la géolocalisation et renvoyer les données (en ajax) au serveur via une page2.php qui recalcule les horaires et les renvoie sur la page1 pour l'affichage.
De même sur la page1.php il y a une fonction javascript qui se déclenche au changement dans la liste de déroulante. Dans cette fonction, je renvoie également les données (en ajax) au serveur via une page2.php qui recalcule les horaires. Par contre la page2.php crée normalement un fichier txt qui permet de stocker les coordonnées de la position. Et c'est là, où il y a un souci, le fichier txt ne se crée pas.
Voici le code de création du fichier txt de la page2.php :
$list = (isset($_GET["list"])) ? $_GET["list"] : NULL; $filename2 = './modules/mod_islamic_prayer_time_pro/coordonnees2.txt'; $monfichier2 = fopen($filename2, 'a+'); fputs($monfichier2, $list."\r\n"); fclose($monfichier2);
Pour info, j'ai essayé de créer ce fichier directement dans la page1.php, et là le fichier est bien créé. Je ne vois pas pourquoi ça fonctionne dans la page1.php et que ça ne fonctionne pas dans la page2.php.
La seule différence est que la page2.php est appelée par l'ajax. Mais en local sur mon poste ça fonctionnait très bien.
Pourriez-vous m'aider s'il vous plait ?
Je vous remercie par avance.
A voir également:
- Fichier texte non créé sur le serveur
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
8 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
comment es-tu certain qu'il n'y a pas un problème plus tôt dans page2?
je suggère de provisoirement remplacer l'ensemble de page2 par:
comment es-tu certain qu'il n'y a pas un problème plus tôt dans page2?
je suggère de provisoirement remplacer l'ensemble de page2 par:
$list = "bonjour"; $filename2 = './modules/mod_islamic_prayer_time_pro/coordonnees2.txt'; $monfichier2 = fopen($filename2, 'a+'); fputs($monfichier2, $list."\r\n"); fclose($monfichier2);
Bonjour,
J'ai essayé de mettre que votre code mais ça ne fonctionne pas non plus. Le fichier n'est pas créé.
Je suis sûr qu'il n'y a que la création du fichier qui pose souci, car la première fois (lors du chargement de la page avec géolocalisation), on passe bien dans la page2.php pour rafraîchir les horaires des prières à l'écran => Ca ça fonctionne bien par contre même lors du chargement normalement je crée un autre fichier coordonnnees.txt mais ce fichier n'est pas créé non plus !!
Je ne vois vraiment pas pourquoi il n'est pas créé.
J'ai essayé de mettre que votre code mais ça ne fonctionne pas non plus. Le fichier n'est pas créé.
Je suis sûr qu'il n'y a que la création du fichier qui pose souci, car la première fois (lors du chargement de la page avec géolocalisation), on passe bien dans la page2.php pour rafraîchir les horaires des prières à l'écran => Ca ça fonctionne bien par contre même lors du chargement normalement je crée un autre fichier coordonnnees.txt mais ce fichier n'est pas créé non plus !!
Je ne vois vraiment pas pourquoi il n'est pas créé.
Je serais tenté de dire les 3.
J’ai essayé de créer le fichier, il ne se crée pas!
J’ai essayé de créer le fichier à la main avant et ensuite d’essayer d’écrire dedans en php et même chose je n’y arrive pas non plus, le fichier reste vide!
J’ai franchement du mal à comprendre!! J’ai meme essayer de mettre tous les droits sur le fichier et même chose!
J’avoue je suis à court d’idée!
J’ai essayé de créer le fichier, il ne se crée pas!
J’ai essayé de créer le fichier à la main avant et ensuite d’essayer d’écrire dedans en php et même chose je n’y arrive pas non plus, le fichier reste vide!
J’ai franchement du mal à comprendre!! J’ai meme essayer de mettre tous les droits sur le fichier et même chose!
J’avoue je suis à court d’idée!
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
si tu crées un page avec ceci, qu'obtiens-tu?
<?php $list = "bonjour"; $dossier= "./modules/mod_islamic_prayer_time_pro"; if (is_dir ($dossier)){ $filename2 = $dossier . '/coordonnees2.txt'; $monfichier2 = fopen($filename2, 'a+'); if ($monfichier2){ $ecrit=fwrite($monfichier2, $list."\r\n"); if ($ecrit){ echo $ecrit . " car ecrits"; } else{ echo "fwite NOK"; } fclose($monfichier2); } else{ echo "fopen NOK"; print_r ($monfichier2); var_dump ($monfichier2); } } else{ echo "ceci n'est pas un dossier: ".$dossier; } ?>
Je viens bien essayer ça mais le problème qui se pose est que ma page2.php n'est censé renvoyer que du texte au format json afin d'être exploité par la page1.php
J'avais déjà essayé de faire des echo dans la page2.php mais le problème c'est que je ne vois jamais le résultat. Dans la page1.php quand je fais : un message affiche du vide alors que la console affiche vide également.
N'y a t-il pas un moyen de débugger ?
Ou alors peut-être que je fais mal quelque chose (même certainement) mais je ne sais pas quoi.
Merci pour votre aide.
J'avais déjà essayé de faire des echo dans la page2.php mais le problème c'est que je ne vois jamais le résultat. Dans la page1.php quand je fais : un message affiche du vide alors que la console affiche vide également.
var tmp = req2.responseText; console.log(req2.responseText); alert(tmp);
N'y a t-il pas un moyen de débugger ?
Ou alors peut-être que je fais mal quelque chose (même certainement) mais je ne sais pas quoi.
Merci pour votre aide.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
pour compléter mes propos voici le code que j'utilises :
template :
page1.php, fonction update() :
Voici maintenant le code de page2.php :
J'espère qu'avec tout cela vous pourrez voir quelque chose parce que là franchement je désespère (sachant qu'en local ça fonctionne) !!
Merci d'avance pour votre aide.
template :
<label for="list">Méthode de calcul :</label> <select name="list" id="list" onchange="update();"> <option value="1">Muslim World League</option> <option value="2">Islamic Society of North America</option> <option value="3">Egyptian General Authority of Survey</option> <option value="4">Umm Al-Qura University, Makkah</option> <option value="5">University of Islamic Sciences, Karachi</option> <option value="6">Institute of Geophysics, University of Tehran</option> <option value="7">Shia Ithna-Ashari, Leva Institute, Qum</option> <option value="8">Gulf Region</option> <option value="9">Kuwait</option> <option value="10">Qatar</option> <option value="11">Majlis Ugama Islam Singapura, Singapore</option> <option value="12" selected="selected">Union Organization islamic de France</option> <option value="13">Diyanet İşleri Başkanlığı, Turkey</option> </select>
page1.php, fonction update() :
function update() { var elt,val,opt; elt=document.getElementById('list'); val=elt.value; if(val!=='') { alert('Vous avez sélectionnez l\'élement '+val); const req2 = new XMLHttpRequest(); req2.overrideMimeType("text/plain"); req2.onreadystatechange = function(event) { //XMLHttpRequest.DONE === 4 if (this.readyState === XMLHttpRequest.DONE) { if (this.status === 200) { alert("OK"); var tmp = req2.responseText; console.log(req2.responseText); alert(tmp); var json = JSON.parse(req2.responseText); if (json.fajr == null){ // Ne rien faire. } else { var list = document.getElementById("modiptultimer"); var items = list.getElementsByTagName("li"); for(var i = 0, size = items.length; i< size; i++) { if (i==0) { items[i].innerHTML = "Fajr: " + json.fajr; } if (i==1) { items[i].innerHTML = "Chourouk: " + json.shourouk; } if (i==2) { items[i].innerHTML = "Duhr: " + json.dohr; } if (i==3) { items[i].innerHTML = "Asr: " + json.asr; } if (i==4) { items[i].innerHTML = "Maghrib: " + json.maghreb; } if (i==5) { items[i].innerHTML = "Ishaa: " + json.isha; } } } } else { alert("Status de la réponse: %d (%s)", this.status, this.statusText); } } }; req2.open("GET", "./modules/mod_islamic_prayer_time_pro/page2.php" + "?list=" + val, true); req2.send(null); } }
Voici maintenant le code de page2.php :
$list = (isset($_GET["list"])) ? $_GET["list"] : NULL; if ($list) { // LECTURE DU FICHIER coordonnees.txt => Mais impossible de le lire et récupérer les données $monfichier = fopen($filename, 'r+'); while(!feof($monfichier)) { $latitude = fgets($monfichier); $longitude = fgets($monfichier); } //CALCUL DES PRIERES $url = "https://api.aladhan.com/v1/timings/".$TimeStamp."?latitude=".trim($latitude)."&longitude=".trim($longitude)."&method=".$list; // POUR TESTER LA CREATION DU FICHIER => Mais ne fonctionne pas $filename2 = './modules/mod_islamic_prayer_time_pro/coordonnees2.txt'; $monfichier2 = fopen($filename2, 'a+'); fputs($monfichier2, $url."\r\n"); fputs($monfichier2, $list."\r\n"); $data = @file_get_contents($url); $jsondata = json_decode($data,true); if(is_array($jsondata) && $jsondata['status'] == "OK") { $fajr = $jsondata['data']['timings']['Fajr']; $shourouk = $jsondata['data']['timings']['Sunrise']; $dohr = $jsondata['data']['timings']['Dhuhr']; $asr = $jsondata['data']['timings']['Asr']; $maghreb = $jsondata['data']['timings']['Maghrib']; $isha = $jsondata['data']['timings']['Isha']; } // PREPARATION ENVOI DONNEES JSON $tableau = array(); $tableau['fajr'] = $fajr; $tableau['shourouk'] = $shourouk; $tableau['dohr'] = $dohr; $tableau['asr'] = $asr; $tableau['maghreb'] = $maghreb; $tableau['isha'] = $isha; echo json_encode($tableau);
J'espère qu'avec tout cela vous pourrez voir quelque chose parce que là franchement je désespère (sachant qu'en local ça fonctionne) !!
Merci d'avance pour votre aide.
Désolé je n'avais pas compris qu'il fallait créer une nouvelle page.
J'ai fait le test et j'obtiens ceci :
ceci n'est pas un dossier: ./modules/mod_islamic_prayer_time_pro
J'ai fait le test et j'obtiens ceci :
ceci n'est pas un dossier: ./modules/mod_islamic_prayer_time_pro
Merci pour votre aide, effectivement le chemin du fichier était incorrect.
J'arrive maintenant à créer et écrire dans le fichier donc merci encore.
Par contre je n'arrive pas à lire le contenu du fichier, pourtant j'ai utilisé le code que vous m'avez donné :
Pourriez vous m'aider également pour la lecture du fichier ?
Merci beaucoup.
J'arrive maintenant à créer et écrire dans le fichier donc merci encore.
Par contre je n'arrive pas à lire le contenu du fichier, pourtant j'ai utilisé le code que vous m'avez donné :
$dossier= $_SERVER['DOCUMENT_ROOT'].'/islam/modules/mod_islamic_prayer_time_pro'; if (is_dir ($dossier)) { $filename = $dossier.'/coordonnees.txt'; $monfichier = fopen($filename, 'r+'); if ($monfichier) { while(!feof($monfichier)) { $latitude = fgets($monfichier); $longitude = fgets($monfichier); } fclose($monfichier); } else { echo "fopen NOK"; print_r ($monfichier); var_dump ($monfichier); } } else{ echo "ceci n'est pas un dossier: ".$dossier; }
Pourriez vous m'aider également pour la lecture du fichier ?
Merci beaucoup.
Je n’ai ni message d’erreur ni résultat inattendu!
J’ai juste essayer de mettre les valeurs dans un fichier texte pour voir ce qu’elles valaient et elles sont vides!
Ces variables me servent à passer les coordonnées dans l’Api Aladhin pour le calcul des prières! (Quand on passe par la lise déroulante) et justement les horaires des prières en changeant la méthode de calcul ne sont pas rafraîchis à l’écran!!
J’ai juste essayer de mettre les valeurs dans un fichier texte pour voir ce qu’elles valaient et elles sont vides!
Ces variables me servent à passer les coordonnées dans l’Api Aladhin pour le calcul des prières! (Quand on passe par la lise déroulante) et justement les horaires des prières en changeant la méthode de calcul ne sont pas rafraîchis à l’écran!!