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 :

[Tableaux] Profil de recherche


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 64
    Par défaut [Tableaux] Profil de recherche
    Bonjour à tous.
    Dans une conditionnelle, je veux vérifier si un code postal est égal à 51xxx, et je ne parviens pas à utiliser un profil de recherche pour les 3 derniers chiffres.
    Mon code actuel donne ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php if ($row_rsCommande['pays']!='France') 
    			{
    			echo $row_rsPort['prixint'];
    			}
    			elseif ($row_rsCommande['cp']=='51^.+$')
    			{
    			echo $row_rsPort['prixloc'];
    			}
    			else
    			{
    			echo $row_rsPort['prixnat'];
    			}
    			?>
    et invariablement, 'prixnat' est retourné

  2. #2
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Par défaut
    et avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    elseif (substr($row_rsCommande['cp'], 0, 2) == 51)

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 64
    Par défaut Merci
    Oui, c'est tout à fait ça, merci beaucoup.

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Les expressions régulières n'existent pas de manière +/- native comme en Perl ou en Ruby. Vous devez faire appel aux fonctions prévues pour cela (extension PCRE). Pour en revenir à votre idée de départ, cela aurait ressemblé à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elseif (preg_match('~^51\d{3}$~D', $row_rsCommande['cp']))

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 64
    Par défaut Encore mieux
    Merci de votre réponse, les expressions régulières sont ardues à l'extrême et je devrais en fait y ajouter une surconditionnelle qui consiste à dire que le cas s'applique à 4 départements. J'ai donc fait différemment en faisant une boucle simple if then répétée 4 fois avec à chaque fois un N° de département différent.
    En tout cas merci beaucoup pour votre réponse.

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Pour information :

    Citation Envoyé par zorbo
    J'ai donc fait différemment en faisant une boucle simple if then répétée 4 fois avec à chaque fois un N° de département différent.
    Une expression régulière peut toujours le faire, à l'aide des alternatives (|) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $curdep = '51032';
    if (preg_match('~^51(?:032|210|500)$~D', $curdep)) {
        echo "C'est un de 51032, 51210, 51500";
    } else {
        echo "Ce n'est ni 51032 ni 51210 ni 51500";
    }
    Mais on peut également faire cela en rassemblant ces départements dans un tableau et en utilisant la fonction in_array :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $curdep = '51032';
    if (in_array($curdep, array('51032', '51210', '51500'))) {
        echo "C'est un de 51032, 51210, 51500";
    } else {
        echo "Ce n'est ni 51032 ni 51210 ni 51500";
    }
    Il y a sans doute d'autres façons d'écrire tout cela

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

Discussions similaires

  1. [Tableaux] Script de recherche pour site dynamique
    Par clemsouz dans le forum Langage
    Réponses: 7
    Dernier message: 12/05/2006, 17h31
  2. [Tableaux] Moteur de recherche par mot clés
    Par Nee dans le forum Langage
    Réponses: 4
    Dernier message: 20/01/2006, 12h30
  3. [Tableaux] moteur de recherche
    Par vulquin dans le forum Langage
    Réponses: 4
    Dernier message: 24/11/2005, 00h17
  4. Réponses: 6
    Dernier message: 04/11/2005, 18h09
  5. Réponses: 3
    Dernier message: 20/09/2005, 18h00

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