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 :

[Fonction Explode] Problème


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2009
    Messages : 140
    Par défaut [Fonction Explode] Problème
    Bonjour,

    Je fait appel à vous car j'ai un soucis avec la fonction explode.

    J'ai une liste déroulante HTML comme 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
    15
    16
    17
    18
    19
    20
    21
    <select name="categorie">
     
    <option value="Equipe2">S&eacute;niors 1</option>
    <option value="Equipe3">S&eacute;niors 2</option>
    <option value="Equipe4">S&eacute;niors 3</option>
    <option value="Equipe5">U19 (18 ans)</option>
    <option value="Equipe6">U17 (15 ans)</option>
    <option value="Equipe7">U15 (13 ans)</option>
    <option value="Equipe8">U13 (Benjamins)</option>
    <option value="Equipe9">U11 (Poussins)</option>
    <option value="Equipe10">U9 (Debutants)</option>
    <option value="Equipe11">U7 (Ecole de foot)</option>
    <option value="Equipe12">Loisirs</option>
     
     
    <option value="Evenement2">Le Loto</option>
    <option value="Evenement3">Le Bal</option>
    <option value="Evenement4">Le Stage de fin d ann&eacute;e</option>
     
     
    </select>
    Lors de la validation, je veut savoir si "categorie" est un evenement ou une equipe, et quel est le 'suffixe' (1, 2, 3, 4 ...)

    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
     
    // Decoupage de $categorie pour savoir si c'est une evenement ou une equipe
    $Trouve = contientChaine( $categorie , "Evenement");
     
    // Puis requete adaptée	
    if ($Trouve == true){	// Les photos sont en rapport avec un evenement
     
         $tab = explode("Evenement", $categorie);
         $idE = $tab[1];
     
    else{	// Les photos sont en rapport avec une équipe
     
         $tab = explode("Equipe", $categorie);
         $idE = $tab[1];
     
     
    }
    Voici la fonction contientChaine utilisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function contientChaine($cherche , $chaine) {
     
    	if(strpos($chaine, $cherche) <> ''){
    		return true;
    	}
    	else{
    		return false;
    	}
     
    }
    Le probleme est que 'trouve' ne vaut jamais true, il va systematiquement dans le else

    Ou-est mon erreur ? je ne vois pas ...

    Merci pour votre aide précieuse

  2. #2
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    Bonjour,

    je veux pas être méchant car on est vendredi mais quand même un petit tour dans le manuel t'aurais épargné ce post à rallonge.

    La fonction strpos() ne renvoie pas une chaine mais un index de position dans d'une chaine au sein d'une autre chaine

    De plus, je ne vois pas l'interet de ta fonction contientChaine si celle-ci ne fait que ca. Pourquoi réinventer la roue et perdre ainsi la maintenabilité du code.

    En faisant, simplement ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if ( strpos($categorie, 'Evenement') !== false ){
        $idE = str_replace('Evenement','',$categorie);
    }
    elseif (strpos($categorie, '') !== false)  {
        $idE = str_replace('Equipe','',$categorie);
    }
    Ensuite, suivant ce que tu fais de $idE, il y aura surement moyen de réorganiser le code.
    Que se passe t-il si tu rajoute un élément dans la combo ?
    Pour ma part, j'aurais inséré un caractère entre le type d'élément et son numéro, de cette façon l'explode() deviendrait utile

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2009
    Messages : 140
    Par défaut
    Je peut sans problème rajouter un '-' entre evenement (ou equipe) et le chiffre.

    Merci de ton aide

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2007
    Messages : 121
    Par défaut
    Sans prendre en compte la validité de ton code dans ce contexte, tu peux simplifier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    if(strpos($chaine, $cherche) <> ''){
    		return true;
    	}
    	else{
    		return false;
    	}
    ?>
    En
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    return ( strpos($chaine, $cherche) <> '' ); //Ceci dit cette condition n'est pas sémantiquement correcte.
    ?>
    -----

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    $tab = explode("Evenement", $categorie);
    $idE = $tab[1];
    ?>
    En
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    list(, $idE) = explode("Evenement", $categorie);
    ?>
    -----

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    if ($Trouve == true){
    ?>
    En
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    if ( $Trouve ){ //Avec ou sans == true c'est EXACTEMENT pareil.
    ?>
    J'espère que ces quelques astuces te serviront...

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Février 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2009
    Messages : 140
    Par défaut
    OK merci de toutes ces astuces.
    Je débute en PHP, je suis plus ASP mais je dois changer de langage donc j'apprend, et tous les conseils sont bons à prendre ^^

  6. #6
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 494
    Par défaut
    Euh... une simple regex suffit avec preg_match !

    et pour le suffixe, suffit d'utiliser le filtre de conversion FILTER_SANITIZE_NUMBER_INT

Discussions similaires

  1. [Smarty] problème fonction explode
    Par kevain_09 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 07/11/2012, 13h29
  2. [PHP-JS] problème fonction explode
    Par tom79 dans le forum Langage
    Réponses: 22
    Dernier message: 06/07/2006, 12h17
  3. Fonction ASP: problème avec popup
    Par claralavraie dans le forum ASP
    Réponses: 6
    Dernier message: 07/02/2006, 10h31
  4. histoire de fonction avec problème sur arguments
    Par bébé dans le forum Langage
    Réponses: 5
    Dernier message: 07/01/2006, 11h29
  5. equivalent de la fonction EXPLODE de php
    Par gyouk dans le forum ASP
    Réponses: 1
    Dernier message: 28/11/2005, 10h49

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