IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Simplifier le code


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2006
    Messages : 216
    Points : 159
    Points
    159
    Par défaut Simplifier le code
    Bonjour à tous !

    Voilà, je n'ai pas de problème à proprement parler, mais j'aimerais savoir s'il est possible de simplifier un code. J'ai regardé du côté des variables dynamiques (j'avoue que je ne connaissais pas), mais je doute que ça puisse m'aider plus que ça...

    Voici le code :
    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
     
     
    			switch($_POST['ville']) {
    				case 'Saintes' : 					$latitude = $saintes[0]; 				$longitude = $saintes[1]; 				$profondeur = 13;	break;
    				case 'Royan' : 						$latitude = $royan[0]; 					$longitude = $royan[1]; 				$profondeur = 13;	break;
    				case 'Bordeaux Mériadeck' : 		$latitude = $bordeaux_meriadeck[0]; 	$longitude = $bordeaux_meriadeck[1]; 	$profondeur = 13;	break;
    				case 'Bordeaux - Lac' : 			$latitude = $bordeaux_lac[0]; 			$longitude = $bordeaux_lac[1]; 			$profondeur = 13;	break;
    				case 'Bordeaux' : 					$latitude = $bordeaux[0]; 				$longitude = $bordeaux[1]; 				$profondeur = 13;	break;
    				case 'Dax' : 						$latitude = $dax[0]; 					$longitude = $dax[1]; 					$profondeur = 13;	break;
    				case 'Mérignac' :					$latitude = $merignac[0]; 				$longitude = $merignac[1]; 				$profondeur = 13;	break;
    				case 'Arcachon' :					$latitude = $arcachon[0]; 				$longitude = $arcachon[1]; 				$profondeur = 13;	break;
    				case 'Pessac' :						$latitude = $pessac[0]; 				$longitude = $pessac[1]; 				$profondeur = 13;	break;
    				case 'Pau' :						$latitude = $pau[0]; 					$longitude = $pau[1]; 					$profondeur = 13;	break;
    				case 'Bayonne' :					$latitude = $bayonne[0]; 				$longitude = $bayonne[1]; 				$profondeur = 13;	break;
    				case 'Biarritz' :					$latitude = $biarritz[0]; 				$longitude = $biarritz[1]; 				$profondeur = 13;	break;
    				case 'Saint Jean de Luz' :			$latitude = $saint_jean_de_luz[0]; 		$longitude = $saint_jean_de_luz[1];		$profondeur = 13;	break;
    				case 'Hendaye' :					$latitude = $hendaye[0]; 				$longitude = $hendaye[1]; 				$profondeur = 13;	break;
    				case 'Anglet' :						$latitude = $anglet[0]; 				$longitude = $anglet[1]; 				$profondeur = 12;	break;
    Vous remarquez qu'on a chaque fois (attention à LA majuscule !)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    case 'Nom' : $latitude=$nom[0]; longitude=$nom[1]; ...
    Donc trois fois "nom"... mais dans un nom de variable aussi !
    Est-il possible de simplifier tout cela ? C'est vraiment une question de curiosité

    Merci !

  2. #2
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 292
    Points
    292
    Par défaut
    tu peut déja commencer par faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list($latitude,$longitude,$profondeur) = $saintes;
    http://php.net/list

  3. #3
    Membre actif Avatar de chtipitou
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 175
    Points : 214
    Points
    214
    Par défaut
    je te laisse faire le cote securite, c'est a dire verifier que la valeur du post est bien une de tes ville definie

    pour l utilisation des variables dynamique ca marche comme ca


    $latitute = ${strtolower($_POST['ville'])[0]};

    je suis au bureau je peux pas tester, mais ca me semble correct



    puis je viens de voir que tu changes les ' - ' en '_', un peu de regex s'impose

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2006
    Messages : 216
    Points : 159
    Points
    159
    Par défaut
    Merci pour vos aides. Mais non, ça ne fonctionne pas, désolé

    Voici le code plus complet pour comprendre :

    Premier fichier contenant certaines villes :
    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
     
     
    	// Coordonnees des differentes grandes villes
    	$saintes = 				array ("45.74744"	, 	"-0.63711"	,	"Saintes");
    	$royan = 				array ("45.62558"	, 	"-1.02691"	,	"Royan");
    	$bordeaux_meriadeck = 	array ("44.83813"	, 	"-0.58427"	,	"Bordeaux Mériadeck");
    	$bordeaux_lac =			array ("44.88537"	,	"-0.57936"	,	"Bordeaux Lac");
    	$bordeaux =				array ("44.83737"	,	"-0.57614"	,	"Bordeaux");
    	$dax =					array ("43.70946"	,	"-1.05541"	,	"Dax");
    	$merignac =				array ("44.84177"	,	"-0.64780"	,	"Mérignac");
    	$arcachon = 			array ("44.65478"	,	"-1.14993"	,	"Arcachon");
    	$pessac = 				array ("44.80375"	,	"-0.63168"	,	"Pessac");
    	$pau = 					array ("43.29752"	,	"-0.37436"	,	"Pau");
    	$bayonne = 				array ("43.49344"	,	"-1.47454"	,	"Bayonne");
    	$biarritz = 			array ("43.48225"	,	"-1.56083"	,	"Biarritz");
    	$saint_jean_de_luz = 	array ("43.38787"	,	"-1.66028"	,	"Saint Jean de Luz");
    	$hendaye =				array ("43.35939"	,	"-1.77594"	,	"Hendaye");
    	$anglet =				array ("43.48039"	,	"-1.51540"	,	"Anglet");
     
    	// Tableau du tableau contenant les coordonnées des villes...
    	$toutes_villes = array ($saintes,$royan,$bordeaux_meriadeck,$bordeaux_lac,$bordeaux,$dax,$merignac,$arcachon,$pessac,$pau,
    							$bayonne,$biarritz,$saint_jean_de_luz,$hendaye,$anglet);
    Déjà, ici, je n'arrive pas à faire la vérification, les tableaux étant imbriqués.
    Si je fais par exemple in_array("Hendaye", $toutes_villes); il ne trouve pas (normal, mais comment faire ?).

    Et la suite du code : c'est celle plus haut.

    Mais $latitute = ${strtolower($_POST['ville'])[0]}; ne fonctionne pas, si j'essaye avec "Bordeaux" comme ville, $latitude = "b" (b de bordeaux)...

  5. #5
    Membre actif Avatar de chtipitou
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 175
    Points : 214
    Points
    214
    Par défaut
    et comme ca ?

    $temp = ${strtolower($_POST['ville'])};
    $latitute = $temp[0];
    edit en fait je suis couillon ^^


    $latitute = ${strtolower($_POST['ville'])}[0];

  6. #6
    Membre confirmé
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 397
    Points : 518
    Points
    518
    Par défaut
    Salut
    j'ai parcouru le problème assez rapidement, il est donc possible que je n'ai pas évalué toute la problématique.

    Ne t'est-il pas possible de simplifier par un tableau structuré de ce genre :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $arVilles['Saintes'] = array(1,2,9);
    		$arVilles['Bordeaux'] = array(4,6,10);
    		$arVilles['Bayonne'] = array(2,8,12);
     
    		$ville = 'Bordeaux'; // simulation du post 
     
     
    		$latitude 	= $arVilles[$ville][0];
    		$longitude 	= $arVilles[$ville][1];
    		$profondeur = $arVilles[$ville][2];
     
    		var_dump($latitude, $longitude, $profondeur) ;

  7. #7
    Membre actif Avatar de chtipitou
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 175
    Points : 214
    Points
    214
    Par défaut
    fonctionellement ca l'air de fonctionner et c'est mieux (opinion personelle) que cet affreux 'switch' ^^

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2006
    Messages : 216
    Points : 159
    Points
    159
    Par défaut
    chtipitou : Je suis d'accord pour le switch ^^ c'est pour ça que je viens demander de l'aide ici ;-)
    Mais problème... Ca n'a pas l'air de si bien marcher que cela...
    J'utilise ton script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $ville = $_POST['ville'];
    $ville = str_replace(" ","",$ville);
    $ville = str_replace("-","_",$ville);
     
    $latitute = ${strtolower($ville)}[0];
    $longitude = ${strtolower($ville)}[1];
     
    $profondeur = 13;
    Il se passe un truc très bizarre ! Il me transforme les chiffres de mon tableau...
    Exemple avec Anglet :
    > longitude = 43.48039 & latitude = -1.51540.

    Hors, quand je teste avec le script je me retrouve avec :
    > longitude = 43.18741 & latitude = -1.51540.

    La longitude a bougé ! Et chose étonnante, cette longitude ne figure NULLE PART dans mon tableau des grandes villes !!!

    Gats : je n'ai pas bien compris... Pourquoi un var_dump ???
    Mais sinon tu as raison, je peux simplifier tout ça (en faisant attention aux $_POST['ville'] avec espaces, etc), je vais voir pour clarifier le tout

    Merci à tous en tout cas ! J'y vois déjà un peu plus clair... Si certains ont du temps et l'envie de me répondre, je suis toujours motivé pour apprendre

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2006
    Messages : 216
    Points : 159
    Points
    159
    Par défaut
    Je suis parti sur la proposition de Gats qui fonctionne à merveille

    Et pour le bug, ça vient juste du fait que j'avais écrit $latitute et non $latituDe.............

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [E-03]simplifier un code par une boucle
    Par thibln dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/02/2009, 00h13
  2. [E-00] Utilisation d'un auxilliaire pour simplifier le code
    Par anyah dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 21/11/2008, 17h31
  3. Réponses: 4
    Dernier message: 10/05/2008, 12h31
  4. Simplifier mon code "Majuscule/Minuscule"
    Par Manou34 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/01/2008, 17h05
  5. Aide pour simplifier un code VBA Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 24/01/2008, 16h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo