Accueil > Forum > > > > probleme de 0 avec substr
probleme de 0 avec substr
samedi 7 février 2009 à 18:08:41 |
probleme de 0 avec substr

scoubydog
|
Bonjour, je vous explique mon probleme : Je travaille sur un petit module qui me permet de savoir en tapant un code postal francais si c'est au nord ou au sud de la France. Pour cela j'ai un champs qui me permet de rentrer un code postal(5 chiffres). Quand je valide, je récupère les deux premiers numéros de la valeur et je les comparent à deux listes. La première possède tous les 2 premiers chiffre des codes postaux du nord et la deuxieme le reste. Voici mon code : $champscodepostal = substr($champscodepostal, 0, 2); if ($champscodepostal == '01' || '03' || '02' || '08' ...) {$zone = 1;} elseif($champscodepostal == '04' || '05' ||'07' || '09' ...) {$zone = 2;} else{$zone = 3;}; Le code fonctionne pour toutes les valeur de code postal sauf pour ceux qui commence par 0. ex : le substr pour 09562 vaut 9 et non 09. Merci de votre aide.
|
|
samedi 7 février 2009 à 19:33:13 |
Re : probleme de 0 avec substr

TychoBrahe
|
Salut,
Pour commencer, ta manière de faire les if conduira toujours ton expression a être vrai au tout premier (a moins que tu n'ai ici mis un raccourcis). En effet, les chaînes '03', '02' en sont pas comparées a $champscodepostal et sont évaluées comme tel, c'est a dire a une valeur qui est, dans le cas présent, toujours vrai. Ceci corrigé, ton script marche très bien. Une solution beaucoup plus propre serait de te faire un tableau qui associe a chaque numéro du département (indice dont tu n'as pas a te soucier) le numéro de la zone.
Exemple pour les 4 premiers départements : $zone_data = array(4, 3, 4, 4); $zone = $zone_data[intval($champscodepostal) + 1];
Un tableau est indexé a partir de 0 et non de 1, d'où l'ajout de 1 lors de la recherche. En théorie le intval() est inutile, PHP convertissant automatiquement.
|
|
samedi 7 février 2009 à 22:38:36 |
Re : probleme de 0 avec substr

scoubydog
|
Je te remercie pour ta réponse. Effectivement l'idée du tableau est beaucoup plus propre et plus simple, mais il me reste une derniere petite erreur
Voici ce que j'ai fait : <?php $champscodepostal=10000; $champscodepostal2=substr($champscodepostal,0,2); pour récupérer le deux premiers chiffres. $zone_data = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 ); ///different pour savoir quel valeur correspond. $zone = $zone_data[$champscodepostal2]-1; echo $champscodepostal2; //donne 10, parfait echo $zone; //donne 10, parfait ?>
mais si je met un département qui commence par un zero : <?php $champscodepostal=06100; ...... ?> il me met une erreur puisque l'index 06 n'existe pas.Il doit surement y avoir une astuce pour contourner ce probleme. merci encore.
|
|
samedi 7 février 2009 à 22:50:05 |
Re : probleme de 0 avec substr

scoubydog
|
oups désoler j'avais supprimé ton intval ce qui donne :
<?php $champscodepostal='08220'; $champscodepostal=substr($champscodepostal, 0, 2); $champscodepostal=intval($champscodepostal); $zone_data = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 ); $zone = $zone_data[$champscodepostal]-1; ?> réponse 8
voila j'ai plus qu'a appliquer ca a mon code merci
|
|
dimanche 8 février 2009 à 09:41:36 |
Re : probleme de 0 avec substr

TychoBrahe
|
Salut,
En effet c'est bien -1 au lieux de +1 comme j'avais mis par erreur (encore une étourderie de ma part :s).
Par contre, tu as mal placé le dit -1 et tu ne semble pas avoir bien compris le principe du tableau que je voulais te montrer. Il ne faut pas mettre les numéros de départements dans le tableau mais les numéros de zone.
Si on reprend ce que j'avais mis pour les 4 premiers départements on a : $zone_data = array(4, 3, 4, 4); donc : $zone_data[0] a pour valeur 4 => le département numéro 00 est dans la zone 4; $zone_data[1] a pour valeur 3 => le département numéro 01 est dans la zone 3; $zone_data[2] a pour valeur 4 => le département numéro 02 est dans la zone 4; et ainsi de suite.
Bien entendu, vu qu'il n'existe pas de département 00 il faut enlever 1 pour retrouver la bonne valeur : $champscodepostal=intval(substr($champscodepostal, 0, 2)) - 1; Ceci te donne le numéro du département avec 1 de moins afin de se mettre a un index 0 et non 1.
|
|
dimanche 8 février 2009 à 21:35:08 |
Re : probleme de 0 avec substr

scoubydog
|
Salut, oui pour le -1 j'ai posté trop vite mais j'avais bien fait la modif apres. Pour ce qui des valeurs du tableau c'était juste pour effectuer mes test pour aller plus vite comme ca en mettant par exemple la valeur 08220 je savais que j'allais tomber sur 8 et ainsi de suite pour mes autres test. Dans la version finale j'ai changer les valeur par 1, 2 ou 3 par rapport à mes trois zones.
Voila, merci encore.
|
|
Cette discussion est classée dans : code, probleme, substr, postal, champscodepostal
Répondre à ce message
Sujets en rapport avec ce message
probleme code postal et ville dans code php [ par docteurmouse ]
salut a tous voila mon probleme dans mon site d'annonce (http://www.lecoinbreton.fr/offres-et-recherches-1.htm ) , en accedant aux offre , j'aimerai
Probleme rafraichissement [ par youvalcsharpp ]
Bonjour, jai une page (index.php) qui se rafraichie toute seul toute les 3 secondes : [code=html]<meta http-equiv="refresh" content="3; URL=index.ph
probleme creation cookie [ par youvalcsharpp ]
bonjour, j'ai un probleme: je creer un cookie comme sa : [code=php][/code] En local, avec un serveur instalelr sur mon pc, cela marche, mais a dista
Probleme avec un bouton radio dans ma table la donner se transforme en on au lieux d'etre M ou F [ par gb66 ]
voila d'apres moi lerreur se trouve dans le type mais vu que je suis debutan et que je cherche je me suis dit que ses p-e dans le code html quand je
Faire un where avec 2 champs [ par destiny ]
Bonjour, [u]Voila ce que j'aimerai faire : [/u] [code=autre]SELECT _ID, ville, code_postal FROM `codes_postal` WHERE ville+"-"+code_postal="avrillé-
probleme memory_limit sur mon site [ par goks ]
bonjour, depuis quelque jours, j'ai ce message qui apparait alors que je n'ai pas fait de modification et que tout fonctionnais depuis plus d'un an :
Probleme de php [ par remitete ]
Bonjour j'ai un probleme avec mon code php ! Enfete je demande a mon visiteur son nom de compte son mot de passe et le nom de son personnage ! le
probleme value [ par yomane51100 ]
bonsoir a tous ges un petit probleme dans pages de mon telesite je mes se code [code][/code]donc sa fonctionne très bient mes la problème c
Bonjour un petit probleme de direction ou j'aimerai une explication svp [ par Underskill ]
[code=php] Gestion de la salle de spéctacle body{background-image:url(couleur_fond.jpeg);color:white;} "; session_start(); if (!isset($_SESSION['logi
Probleme de To_String [ par Genildf ]
Bonjour je suis tout nouveau en php et je souhaite faire ma combobox en fonction du contenu de ma base SQL le problème c'est que n'arrive pas a défini
Livres en rapport
|
Derniers Blogs
ROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGEROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGE par Matthieu MEZIL
Si vous utilisez Roslyn et que vous vous voulez vous simplifier le code du code rewriter, je vous conseille d'installer mon NuGet package RoslynHelper ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|