Chercher valeurs dans .txt grâce à un cookie

Fermé
microphilou - 11 févr. 2008 à 22:07
Enax Messages postés 203 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 16 mars 2010 - 12 févr. 2008 à 09:58
Bonjour,
Bonjour,

me revoilou après plusieurs jours de lecture et d'apprentissage du php. Merci encore à tous ceux qui m'avaient aidé il y a quelques temps pour une histoire de code METAR météo à extraire à partir d'un fichier txt. Ca été super sympa de m'aider comme ça.
Du coup, je me suis dis qu'il fallait vraiment que je me mette à ce langage php qui m'a l'ai vraiment très puissant.

Mais je bloque à nouveau sur un petit problème et j'espère donc que vous aurez la possibilité, vous les pro du php, de me filer un coup de main (euh... pas un coup de pied ! ;-) )

Voilà mon problème. Je commence à réussir à manipuler l'utilisation de cookies. Ca paraît simple pour certains évidemment mais pour moi, c'est pas évident.
A partir d'un formulaire, je créé donc un cookie qui s'enregistre sur le micro du visiteur et qui sauvegarde des préférences.

Mon cookie s'appelle : $_COOKIE["ville"]
il contient le nom de la ville enregistrée par l'utilisateur.



mon objectif est d'afficher les heures de lever et coucher de soleil pour la ville mémorisée dans le cookie.
Pour cela je dispose d'un fichier txt qui contient pour chaque ville, les coordonnées Latitude et longitude nécessaire au calcul et j'ai un autre fichier .js qui sert à calculer et afficher normalement les heures de lever et coucher de soleil pour la ville choisie.

Au départ, le fichier .js marchait pour une ville précise déjà rentrée dans le fichier .js avec ses coordonnées. C'est moi qui aimerait l'adapter pour le rendre plus paramétrable. Ca m'éviterait de faire un fichier .js pour x villes.


Le fichier txt s'appelle "coord_villes.txt"
Voilà sa structure :

Lille
50.9
-1.9
Boulogne
50.73
-1.6

etc....


La première ligne = nom de la ville
Deuxième ligne = Latitude
Troisième ligne = Longitude



Voilà ce que j'aimerais faire et que je n'arrive pas bien qu'ayant cherché tout seul comme un bon débutant sage et discipliné.... :-)

A partir de la valeur de la variable de mon cookie $_COOKIE["ville"]
je voudrais chercher dans le fichier txt la ville = $_COOKIE["ville"] et mettre la ligne qui suit dans une variable qu'on appellera $lat et celle d'après dans une variable $long.

Remarque : pas besoin de faire des test pour voir si la ville existe bien ou pas dans le fichier txt. On ne peut choisir au départ qu'une ville dans une liste définie. Le cookie créé sera une des villes disponibles dans le fichier txt.


Ca c'est le premier problème qui ne doit pas être très difficile pour des cracks du php ?


Mon second petit problème serait de récupérer ces 2 variables $lat et $long pour les utiliser dans un javascript. Est-ce possible ?
et si oui comment ?


Au départ, voici un peu comment est fait mon fichier .js


je déclare mes variables mais qui sont valables donc que pour une ville :

ville = 'Boulogne';
lat = 50.73;
long = -1.6;


puis il y a toute une série de fonctions
(...)

//calcul de l'heure de lever du soleil
VL=12-Hoh;
TL=VL+(ET/60)+(long*4/60)+F;
HL=Math.floor(TL);
if(HL<10){HL=String("0"+HL)};
ML=Math.floor((TL-HL)*60);
if(ML<10){ML=String("0"+ML)};

(...)
//calcul des crépuscules civils
//angle horaire
Hoccdeg=Math.acos((-0.105-Math.sin(dg*DEC)*Math.sin(dg*lat))/(Math.cos(dg*DEC)*Math.cos(dg*lat)))*rd;
Hocch=Hoccdeg/15;



je voudrais qu'à la place de long et lat, je puisse utiliser mes 2 variables récupérées $lat et $long



Est-ce que vous pourriez me donner un coup de main s'il vous plaît avec si possible du code et pas seulement des explications de l'algorithme que je dois faire car je n'ai pas assez de connaissances encore en php pour y arriver.

Je vous remercie en tout cas vraiment d'avance pour ceux qui auront le temps et l'envie de bien vouloir me donner ce coup de main.
Et merci sinon à tous ceux qui postent des réponses.On apprend beaucoup grâce à vous et à ce forum !!

Hors ligne
A voir également:

4 réponses

Enax Messages postés 203 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 16 mars 2010 145
11 févr. 2008 à 22:28
Voici pour la première partie :
(Je préfère ne pas commenter et te laisser comprendre par toi même les instructions. Si ça reste obscur, j'expliquerais.)
<?php
	$villes = file('coord_villes.txt');
	$taille_villes = count($villes);

	for(i = 0 ; i < $taille_villes ; i++)
		if($villes[$i] == $_COOKIE['ville'])
			break;
	
	$lat = $villes[$i + 1];
	$long = $villes[$i + 2];
?>


Pour récupérer ces valeurs, tu peux les écrire dans ton code HTML dans des champs cachés qui n'apparaîtront pas sur la page, mais dont tu pourras récupérer les valeurs avec du JS.
0
Salut enax

merci pour ton aide, c super sympa

le code ne fonctionne pas, tu as du oublier les $ à i non ?
j'ai mis for($i = 0 ;$i < $taille_villes ; $i++)
mais ça ne marche pas non plus

tu as pas une idée ?
0
Bon, j'ai trouvé la solution grâce à ton code.
il faut utiliser la fonction trim


<?php

// Nom du fichier
$fichier = file("villes.txt");

$total_lignes = count($fichier); // Nombre total des lignes du fichier

// Départ de la boucle
for($i = 0; $i < $total_lignes; $i++)

{
if (trim($fichier[$i]) == $_COOKIE['ville'])

break;

} // Fin de la boucle

$lat = $fichier[$i + 1];
$long = $fichier[$i + 2];

?>


Par contre, comment faire pour utiliser mes 2 variables $lat et $long pour qu'elles soient utilisables dans une page html qui appelle un fichier lever_coucher.js qui aura lui besoin de ces 2 variables ?
0
Enax Messages postés 203 Date d'inscription lundi 11 février 2008 Statut Membre Dernière intervention 16 mars 2010 145
12 févr. 2008 à 09:58
Plutôt que le fonction trim(), utilises $fichier = file("villes.txt", FILE_IGNORE_NEW_LINES); pour ouvrir ton fichier. Pour l'oublie des $, c'est parce que j'étudie le C en ce moment. ^_^

Pour récupérer les valeurs :

Dans le code de ta page:
<input type="hidden" id="latitude" value="<?php echo $lat; ?>" />
<input type="hidden" id="longitude" value="<?php echo $long; ?>" />

Dans ton fichier JS:
var lat = document.getElementById("lattitude").value;
var long = document.getElementById("longitude").value;
0