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 :

Formulaire et exploitation de variable via "ereg" [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Janvier 2006
    Messages : 250
    Points : 99
    Points
    99
    Par défaut Formulaire et exploitation de variable via "ereg"
    Bonjour a tous je suis en train de faire un formaulaire de recherche "simplifié" qui ne contient qu'un champ texte et un boutton .
    Je veut via une methode post envoyer une variable puis regarder de quelle type est la variable...
    Dans la mesure ou ma recheche ne porte que sur deux type :
    alpha
    numérique.
    J'ai develloppé ceci rapidement :
    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
    //Options recherche : fonction contenue dans layout.inc.php
    FilterSearch();
     
     
    if ($_POST['val']=="")
    {
    	$Recherche ="";
    }
    else
    {
    	$Recherche =$_POST['val'];
    	echo $Recherche;
    	if(ereg("[:digit:]",$Recherche))
    	{
    	 echo "chaine num";
    	}
    	else if(eregi("[:alnum:]",$Recherche))
    	{
    	 echo "chaine alpha";
    	}			
    	else if(eregi("[:blank:]",$Recherche))
    	{
    	 echo"chaine vide";
    	}
    }
    et FilterSearch()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function FilterSearch()
    {?>
    <form name="form_search" action="search.php" method="post">
    	<table height="65px" cellspacing="0" cellpadding="0" class="classic-content">
    		<tr>
    			<td class="grey" align="left"><b>Condition :</b></td>
    		</tr>
    		<tr>
    			<td class="grey"><input type="text" input name="val" size="20" maxlength="25" class="empty" style="padding-left: 5px;"/><input type="submit"  name="valider" id="valider" value="Effectuer requête">
    		</tr>
    </table>		
    </form>			
    <?php 
    }
    Mais le fonctionnement est plus qu'aléatoire
    Merci pour votre aide .

  2. #2
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    250
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Janvier 2006
    Messages : 250
    Points : 99
    Points
    99
    Par défaut
    J'ai trouvé mon erreur :
    il faut eviter d'utliser les expressions régulières qui définissent des classes de caractères:
    [:alpha:] mais preferer [a-zA-Z]

  3. #3
    Expert éminent sénior

    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
    Points : 17 777
    Points
    17 777
    Par défaut
    Vos tests sont complètement erronés car il demande dans l'ordre soit que la variable contienne au moins un chiffre, au moins une lettre (peut importe la casse) et au moins un blanc (espace, tabulation, ...) - trim serait peut être plus adéquat ici. Par ailleurs vous n'utilisez pas les ancres de début (^) et de fin de chaîne ($).

    Une correction possible serait, j'imagine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $Recherche = isset($_POST['val']) ? trim($_POST['val']) : '';
    if ($Recherche != '')
    	if(preg_match('/^[[:digit:]]+$/D', $Recherche))
    	{
    	 echo "chaine num";
    	}
    	else if(preg_match('^[[:alnum:]]+$/D', $Recherche))
    	{
    	 echo "chaine alpha";
    	}
    }
    Les expressions régulières sont détaillées dans le tutoriel : Initiation aux expressions régulières en PHP.

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

Discussions similaires

  1. Formulaire variables via POST ou GET
    Par tremeur53 dans le forum Langage
    Réponses: 5
    Dernier message: 26/10/2008, 13h44
  2. transmission de $variable via un formulaire
    Par kraken972 dans le forum Langage
    Réponses: 4
    Dernier message: 29/05/2008, 15h52
  3. Passer plusieurs variable via un formulaire, en GET
    Par godjojo dans le forum Langage
    Réponses: 2
    Dernier message: 22/01/2008, 09h17

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