Bonjour,
je crois que j'ai un problème de portée avec des variables de session : j'ai 3 fichiers : une classe nUpletVille, un fichier mesFonctions et un fichier traitementChoix, je définis une variable de session dans mesFonctions.php. cette variable est un array dans lequel j'insere des objets de type nUpletVille. jusque là tout va bien, mes objets nUpletVille sont visibles, le truc c'est que j'utilise ce array dans traitementChoix.php (un include de mesFonctions est présent) et là, impossible d'accéder aux objets du array : voilà les codes
fichier mesFonctions.php
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81 <?php session_start(); include ("nUpletVille.php"); include ("cnx.php"); $_SESSION['lesNupletCorrespondant'] = array(); $_SESSION['vide'] = true; //************************************************* function controleCP() { if(!preg_match('`[0-9]{5,5}`',$_SESSION['cp'])){echo("entrez un nombre à cinq chiffres");return false;} else return true; } //************************************************** function remplisTableau() { if(!isset($_SESSION['lesNupletCorrespondant'])){$_SESSION['lesNupletCorrespondant'] = array();} $rawCp = mysql_query("select * from freq_listingcodes");//*************remplissage de $_SESSION['lesNupletCorrespondant'] = $_SESSION['cp']********** { //$i = 0; while($row = mysql_fetch_array($rawCp, MYSQL_BOTH)) { $n = new nUpletVille($row["NomMin"],$row["NomMaj"],$row["CodePostal"],$row["INSEE"],$row["Region"],$row["Longitude"],$row["Latitude"],$row["Eloignement"]); if(strlen($n->codePostal==3)){$n->codePostal = "00".$n->codePostal;} elseif(strlen($n->codePostal==4)){$n->codePostal = "0".$n->codePostal;} if ($n->codePostal==$_SESSION['cp']){array_push($_SESSION['lesNupletCorrespondant'],$n);$_SESSION['vide'] = false; /*echo("\$_SESSION['lesNupletCorrespondant'] au rang ".$i." = ".$_SESSION['lesNupletCorrespondant'][$i]->nomMaj); $i++;*/ } } }//*************fin remplissage de $_SESSION['lesNupletCorrespondant']$_SESSION['cp']********** } //********************************************* function controleChoix() { if(isset($_SESSION['max'])&&isset($_SESSION['choix'])&&($_SESSION['choix']<=$_SESSION['max'])&&($_SESSION['choix']>=0)&&preg_match('`[0-9]{1,3}`',$_SESSION['choix'])){return true;} else {return false;} } //************************************** function traitementCP() { if (isset($_SESSION['cp'])) { if (controleCP()){ remplisTableau(); return true; } else{return false;} } else{return false;} } //********************** function afficheTableau() { $_SESSION['i']=0; while(isset($_SESSION['lesNupletCorrespondant'][$_SESSION['i']])) { echo("Choix numéro ".$_SESSION['i']." : ".$_SESSION['lesNupletCorrespondant'][$_SESSION['i']]->nomMaj."<br />"); $_SESSION['i']++; } } //********************* function afficheFormulaireChoixCP() { $_SESSION['max'] = $_SESSION['i']-1; echo("<form name=\"choixCP\" method=\"post\" action=\"traitementChoix.php\"><label for=\"choix\"> entrez un choix de 0 à ".$_SESSION['max']." </label><input type=\"text\" name=\"choix\" id=\"ville\"> <input type=\"submit\" value=\"Chercher la ville\"/></form><br />"); } //*************** function controleRempli() { if($_SESSION['vide']){echo ("le code postal ".$_SESSION['cp']." est inconnu");return false;}else {return true;} } ?>
fichier nUpletVille.php
et enfin le fichier qui pose problème
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 <?php session_start(); include("villeGeoloc.php");//on s'en sert pas pour mon probleme class nUpletVille { function nUpletVille($nomMin,$nomMaj,$codePostal,$INSEE,$region,$longitude,$latitude,$eloignement) { $nomMin; $nomMaj; $codePostal; $INSEE; $region; $longitude; $latitude; $eloignement; $this->nomMin = $nomMin; $this->nomMaj = $nomMaj; $this->codePostal = $codePostal; $this->INSEE = $INSEE; $this->region = $region; $this->longitude = $longitude; $this->latitude = $latitude; $this->eloignement = $eloignement; } function convertNupletToGeo($v) { $this->nomMaj = $v->nomVille; $this->longitude = $v->longVille; $this->latitude = $v->latVille; } } ?>
traitementChoix.php
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 <?php session_start(); include("mesFonctions.php"); include("cnx.php"); $_SESSION['choix']=$_POST['choix']; $_SESSION['cp']=$_POST["cp"]; $_SESSION['long'] = $_POST['long']; $_SESSION['lat'] = $_POST['lat']; $_SESSION['nomVille'] = $_POST['ville']; $_SESSION['i']; ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 TRANSITIONAL//EN"> <html> <head> <title>module de calcul d'occupation des frequences</title> </head> <body> <form name="cp" method="post" action="traitementChoix.php"> <label for="cp"> <?php if(isset($ErrorMessage)&&($ErrorMessage == "cp")){echo "Code postal de format incorrect : un nombre à cinq chiffres est requis";}elseif(isset($ErrorMessage)&&($ErrorMessage == "cpInexistant")){echo"Le code postal entré n'existe pas";} else{echo"Code Postal de la commune";} ?> </label> <input type="text" name="cp" id="cp"> <input type="submit" value="Chercher le code postal"/></form><br /><br /><br /> <form name="ville" method="post" action="traitementVille.php"><label for="ville"> <?php if(isset($ErrorMessage)&&($ErrorMessage == "ville")){echo "Ville de format incorrect : les caractères autres que alphabétiques accentués où non, espaces, apostrophes, traits d'union sont interdits";}else{echo"Nom de la commune";} ?> </label><input type="text" name="ville" id="ville"> <input type="submit" value="Chercher la ville"/></form><br /><br /><br /> <form name="longLat" method="post" action="traitementLongLat.php"><label for="latitude"> <?php if(isset($ErrorMessage)&&($ErrorMessage == "Latitude")){echo "latitude de format incorrect : une latitude est de type nombre à virgule";}else{echo"Latitude";} ?> </label><input type="text" name="latitude" id="latitude"><label for="longitude"> <?php if(isset($ErrorMessage)&&($ErrorMessage == "Longitude")){echo "latitude de format incorrect : une latitude est de type nombre à virgule";}else{echo"Longtude";} ?></label><input type="text" name="longitude" id="longitude"> <input type="submit" value="Chercher les coordonnées"/></form><br /><br /><br /> <?php if(isset($_SESSION['choix'])) {if (controleChoix()) {$_SESSION['long']=$_SESSION['lesNupletCorrespondant'][$_SESSION['choix']]->longitude;$_SESSION['lat']=$_SESSION['lesNupletCorrespondant'][$_SESSION['choix']]->latitude;echo("on peut traiter la longitude et la latitude de ".$_SESSION['lesNupletCorrespondant'][$_SESSION['choix']]->nomMaj); /*CA MERDE ICI : aucun des $_SESSION['lesNupletCorrespondant'][$_SESSION['choix']]->leNomDuMembre de s'affiche. PLEASE HELP TT */ } else{echo("mauvais choix, veuillez choisir un entier entre 0 et ".$_SESSION['lesNupletCorrespondant'][$_SESSION['choix']]);}} elseif(isset($_SESSION['cp'])){traitementCP();afficheTableau();if(controleRempli()){afficheFormulaireChoixCP();}} elseif(isset($_SESSION['nomVille'])){traitementVille();} elseif(isset($_SESSION['lat']) && isset($_SESSION['long'])){traitementLongLat();} ?> </body> </html>
merci aux ames charitables qui pourront me sortir de ce pétrin
Partager