begin process at 2012 05 31 12:12:11
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Général

 > 

probleme de 0 avec substr


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,437 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales