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 :

Vérifier syntaxe Prefixe et Sufixe


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Par défaut Vérifier syntaxe Prefixe et Sufixe
    Bonjour à tous,

    J'aurai besoin d'aide sur mon projet

    Je dispose dans ma base de donnée d'un préfixe et suffixe

    Exemple : Préfixe = CS+ / suffixe 8 caractère lettre et chiffre

    Mon exemple de code : CS+7f45dd

    J'aimerais vérifier ce code par une fonction PHP

    Si le préfixe n'est pas bon un echo qui le dit
    si le suffixe ne contient pas 8 caractère un echo code faux

    Merci pour vos lumières

  2. #2
    Membre éclairé Avatar de MTroy_
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 63
    Par défaut
    Bonjour,

    Tester la présence d'un prefix peut s'effectuer avec un simple strpos() (mais les regex peuvent aussi bien remplir la mission).


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $code_prefix = "CS+";
    $code_a_verifier = "CS+7f45dd";
     
    if(strpos($code_a_verifier, $code_prefix) === false)
      echo "Prefix invalide !";
    Pour ce qui est du test suffixe, tu peux soit tester la longueur totale du code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(strlen($code_a_verifier) != 8)
      echo "Suffixe invalide !";
    Soit, ta "base" contient des préfixes de longueur variable, et dans ce cas il convient d'en extraire le suffixe via la fonction substr() pour calculer sa longueur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $code_suffixe = substr( $code_a_verifier, strlen($code_prefix) );
    if( strlen( $code_suffixe ) != 8)
      echo "Suffixe invalide !";
    Par curiosité, à quel moteur de base de données fais-tu référence ?

  3. #3
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    En partant de ton exemple (dont le suffixe ne contient que 6 caractères), j'en déduis que le suffixe est composé de caractères hexadécimaux en minuscule. Tu peux utiliser une regex simple du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (preg_match('~\ACS\+[0-9a-f]{8}\z~', $code)) {
        // le code est bon
    } else {
        // le code est faux
    }
    \A et \z désignent le début et la fin de la chaîne. + doit être échappé car c'est un caractère spécial dans une regex (voir tutoriel ou manuel php).

    Si les caractères hexadécimaux peuvent aussi être en majuscule, il suffit d'ajouter (?i) avant la classe de caractère ou de changer celle-ci en [a-fA-F0-9] ou [[:xdigit:]].

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Par défaut
    Voici le code

    cela m’insère bien les codes dans la base.

    Mais à l'affichage il m'indique uniquement une seul ligne lors de l'insertion de 3 code différent et si un code est faux il me dit que les 3 sont faux

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    <?
    $prod = $_POST['codetype_id'];
     
    $req=mysql_query("SELECT * FROM cats where id = '$prod' ");
    $da=mysql_fetch_array($req);
     
    $prefixe = $da['prefixe'];
    $sufixe = $da['sufixe'];
    $code = $_POST['codes'];
     
    $code_prefix = $prefixe;
    $code_sufix = $sufixe;
     
    $x=explode("\n", htmlentities($_POST['codes']));
     
    for($i=0; $i<count($x); $i++) {
     
     
    $z=trim($x[$i]);
     
    $zecodes.=$z.'||';
     
    $cpt =	count($x);
     
    $code_a_verifier = $z;	
     
    }
     
     
    if(strpos($code_a_verifier, $code_prefix) === false) {
     $err = "<font color='red'>Prefix invalide !</font>";
    }else{	
    $code_suffixe = substr( $code_a_verifier, strlen($code_prefix) );		
     
    if(strlen($code_suffixe) != 8){
      $err = "<font color='red'>Suffixe invalide !</font><br>";
    }else{
    			$err = "<font color='green'>Code VALIDE</font>";	
    			$prix=$_POST['prix'];
    			$prixnet1=$prix*3/100;
    			$prixnet=$prix-$prixnet1;
    			$dateU=date("U");
    			mysql_query('UPDATE users SET ventes=ventes+"'.$cpt.'", ventesw=ventesw+"'.$cpt.'" WHERE id="'.$_SESSION['id'].'"');
    			mysql_query('INSERT INTO vente (idvendeur, prixcode, prixnet, date, codes, idcode, qte) VALUES ("'.$_SESSION['id'].'", "'.$prix.'", "'.$prixnet.'", "'.$dateU.'", "'.$zecodes.'", "'.$prod.'", "'.$cpt.'")');
     
    			echo '<center>Codes '.$z.' : '.$err.' <br></center>';	
     
    	}
    }
     
     
    	echo '<center><h3>Veuillez ne pas actualiser !</h3></center>';
     
    ?>

  5. #5
    Membre éclairé Avatar de MTroy_
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 63
    Par défaut
    Je me suis permis d'optimiser un peu ton code,
    il y avait des lignes inutiles et pas claires.

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    <?php
     
    $prod = $_POST['codetype_id'];
    $req = mysql_query("SELECT prefixe, sufixe FROM cats where id = '$prod' ");
    list($prefixe, $sufixe) = mysql_fetch_array($req);
     
    $codes_bruts = htmlentities($_POST['codes']); 
    $code_reformates = [];
    $codes = explode("\n", $codes_bruts);
     
    foreach($codes as $i => $code)
    {
      $code_a_verifier = trim($code);
      $codes_reformates[] = $code;
    // $cpt =	count($x); <=== Tu peux faire un count après la boucle, plutôt qu'à chaque itérations, c'est inutile et pas optimisé vu que tu ne souhaite le total à l'insert mysql 
    }
     
    // reunification de la liste
    $codes_reformates = implode("||", $codes_reformates);
     
    // check codes prefix/sufix validity
     
    $err = null; 
    if(strpos($code_a_verifier, $code_prefix) === false)
    {
      $err = "<font color='red'>Prefix invalide !</font>";
    }else
    {
      $code_suffixe = substr( $code_a_verifier, strlen($code_prefix) );
      if(strlen($code_suffixe) != 8)
      {
        $err = "<font color='red'>Suffixe invalide !</font><br>";
      }
    }
     
    if(!is_null($err))
    {
    	$prix = $_POST['prix'];
    	$prixnet1 = $prix*3/100;
    	$prixnet = $prix-$prixnet1;
    	$dateU = date("U");
            $cpt = count($codes_reformates);
     
    	mysql_query('UPDATE users SET ventes=ventes+"'.$cpt.'", ventesw=ventesw+"'.$cpt.'" WHERE id="'.$_SESSION['id'].'"');
    	mysql_query('INSERT INTO vente (idvendeur, prixcode, prixnet, date, codes, idcode, qte) VALUES ("'.$_SESSION['id'].'", "'.$prix.'", "'.$prixnet.'", "'.$dateU.'", "'.$codes_reformates.'", "'.$prod.'", "'.$cpt.'")');
     
            echo '<center>Codes '.$code.' : <font color='green'>Code VALIDE</font><br></center>';	
    }else
            echo '<center>Codes '.$code.' : '.$err.'<font color='green'>Code VALIDE</font><br></center>';	
     
     
    echo '<center><h3>Veuillez ne pas actualiser !</h3></center>'; 
    ?>
    Premier constat curieux,
    tu sembles recevoir une liste de code depuis ton formulaire, que tu lis dans une boucle, mais tu ne teste qu'un seul des codes,
    parce ta variable $code_a_verifier est écrasée à chaque itération (non corrigé dans mon code).

    Secondement, vu que tu ne fais qu'un seul insert, qui enregistre la liste des codes, je ne comprend pas pourquoi tu t'attends à avoir trois enregistrement ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Par défaut
    Merci beaucoup pour votre aide.

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

Discussions similaires

  1. Vérifier syntaxe sur déclaration variable
    Par monlou dans le forum Langage
    Réponses: 3
    Dernier message: 13/06/2010, 19h48
  2. [RegEx] Vérifier syntaxe URL
    Par temperature dans le forum Langage
    Réponses: 5
    Dernier message: 16/05/2008, 13h47
  3. Fonction vérifier syntaxe de date OK sur IE et KOs sur firefox
    Par aymen007 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 17/10/2007, 16h16
  4. Générateur de code Java : vérifier syntaxe, etc.
    Par Yannick_from_31 dans le forum Langage
    Réponses: 3
    Dernier message: 14/09/2007, 12h40
  5. Vérifier la syntaxe de commande sql
    Par Mr N. dans le forum Requêtes
    Réponses: 3
    Dernier message: 16/03/2007, 21h03

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