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 :

Soucis avec regex + preg_match et passage de variables en paramètres [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 91
    Points : 58
    Points
    58
    Par défaut Soucis avec regex + preg_match et passage de variables en paramètres
    Bonjour à tous,

    Voilà j'ai un soucis avec une Regex et un passage de variable par paramètres
    En effet je veux pouvoir entrer une URL de ce genre "localhost/back/monfichier.php?activite=X (X étant un entier)" et que en fonction du chiffre rentré ma variable soit associé à une valeur ou une autre...


    Dans un autre fichier (header.php) j'ai mon header (qui inclut mon menu), et quand je clique
    sur un onglet il me revoie à l'adresse voulue c'est-à-dire : localhost/back/monfichier.php?activite= et pas à localhost/back/monfichier.php?activite= alors que je veux le X après le "="

    Je voudrais donc qu'en cliquant et/ou en entrant manuellement l'URL la variable prenne les bonnes valeurs

    Mon soucis est que je n'arrive pas à faire ma Regex et je suis pas sûr en plus que ma démarche pour la détection de l'entier dans l'URL soit bonne...


    Voici un exemple d'onglet dans mon menu :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
     
    $X = new X();
    $type = $X->setX();
    $proprietes = $X->affiche_libelleOnglets($type[0]);
     
      <li <?php if ($thisPage == $type[0]) 
          	echo ' class="current_top"'; ?>><a href="monfichier.php?activite=<?php echo $type[2]?>"><span>
    	    <?php echo $proprietes[0] ?> </span></a></li>
    ?>



    Je vous fournit aussi un morceau de code de ma classe pour que ce soit plus parlant...



    <?php

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    class X
    {
    	var $ID_X;
    	var $type_X;
    	var $type_y;
     
      function setX()
    	{
    		$sql = "SELECT ID, type_X AS X,
    						   type_Y AS Y 
    					FROM type_X";
     
     
    		$req = mysql_query($sql);
     
    		while($res = mysql_fetch_assoc($req)){
     
    				if (preg_match(??, $_SERVER['REQUEST_URI']))
    				{
    					$this->ID_X = $res_req['ID'];
    					$this->type_X = $res_req['X'];
    					$this->type_Y = $res_req['Y'];
    				}
    				else 
    				{
    					$this->ID_X = 1;
    					$this->type_X = 'truc';
    					$this->type_Y = 'bidule';
    				}
     
    		}
     
    		return array($this->type_X, $this->type_Y, $this->ID_X);
    	 }
     
      }
    ?>


    Le code en lui-même est bon, car il fonctionnait avant, mais pour une question d'optimisation d'URL rewriting je dois passer comme décrit plus haut, le problème vient donc du passage par paramètre et de comment construire la regex je pense...

    Je suis désolé si c'est un peu confus, n'hésitez pas à me demander des précisions si besoin...

    Si vous pouviez m'aider à me sortir de ce mauvais pas.

    Merci d'avance

  2. #2
    Membre émérite
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Points : 2 793
    Points
    2 793
    Par défaut
    Bonjour,

    Je crains ne pas trop comprendre ce que tu veux faire, et je crois surtout que t'es en train de te compliquer la vie...

    En gros,tu veux recréer le comportement de $_GET?
    Tu peux nous montrer un exemple de ce qui marche pas,qu'on puisse voir le problème?
    Toute question technique envoyée en MP ira directement à la poubelle

    Un code ne marchera jamais, il n'a jamais reçu la capacité de se déplacer.
    Inutile donc de dire "ça marche pas", donnez plutôt des informations précises afin de mieux pouvoir vous aider.


    Grand gourou de la -attitude

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 91
    Points : 58
    Points
    58
    Par défaut
    Je me doutais que ce serait confus, je vais tenter de la refaire plus calmement et compréhensiblement :p

    Alors voilà je travaille en POO PHP, j'ai ma classe (dont vous en avez vu un bout) et le site gère plusieurs corps de métier.

    Toutefois, par exemple lorsque ?activite=2 le menu sera composé de Médecins, garde médecin etc... et lorsque l'URL ?activite=1 ce sera les pharmaciens etc...

    En somme je veux pouvoir faire un modèle générique pour tout type de métier, uniquement avec le numéro qui sera passé en paramètre et la comparaison avec ce dernier en base MySQL.

    J'avais fait quelque chose qui fonctionnait bien avant avec des URL du genre localhost/pompiers/mapage.php qui affichait le menu avec les gardes des pompiers etc... et localhost/gendarmes/mapage.php affichait la même page mais avec le menu personnalisé aux gendarmes et avec les informations des gendarmes en BDD et plus des pompiers...

    J'aimerai donc que en entrant le numéro dans la barre d'URL il le compare avec l'ID du métier en base et décide de quelle interface mettre...

    J'espère que c'est un peu plus clair... ? :S

  4. #4
    Membre émérite
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Points : 2 793
    Points
    2 793
    Par défaut
    Bonjour,

    Je ne vois donc pas pourquoi tu te compliques la vie avec les regex

    Tu as juste à récupérer l'id (via par exemple $id = $_GET["activite"]),vérifier qu'il est bien numérique (pour éviter les injections SQL), et ensuite faire tes comparaisons avec la base de données
    Toute question technique envoyée en MP ira directement à la poubelle

    Un code ne marchera jamais, il n'a jamais reçu la capacité de se déplacer.
    Inutile donc de dire "ça marche pas", donnez plutôt des informations précises afin de mieux pouvoir vous aider.


    Grand gourou de la -attitude

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 91
    Points : 58
    Points
    58
    Par défaut
    Je viens justement de voir ça en fait, vu que lors de l'autre développement il fallait que je gère l'affichage via le nom du métier et que je le faisais par Regex...

    J'ai été un boulet..

    Merci beaucoup pour cette aide

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

Discussions similaires

  1. [RegEx] Souci avec le preg_match
    Par diblasio dans le forum Langage
    Réponses: 2
    Dernier message: 10/08/2011, 16h33
  2. Réponses: 1
    Dernier message: 02/10/2008, 12h32
  3. Soucis avec regex.replace
    Par elric47 dans le forum ASP
    Réponses: 1
    Dernier message: 29/04/2008, 23h33
  4. Réponses: 2
    Dernier message: 29/06/2006, 01h36
  5. probleme avec self.opener et passage de variables
    Par logone dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 08/06/2006, 18h08

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