Condition IF avec un preg_match
Résolu
Slylia
Messages postés
58
Date d'inscription
Statut
Membre
Dernière intervention
-
heyquem Messages postés 759 Date d'inscription Statut Membre Dernière intervention -
heyquem Messages postés 759 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
J'ai un soucis avec ma condition IF. Je cherche à vérifier que le champ Nom contient seulement des majuscules et minuscules. S'il n'en contient pas j'affiche un message d'erreur sinon j'insère l'information dans une base de données.
Le problème c'est que même si le champ contient autre chose que des caractères l'information est remplie dans la base de données.
Voila mon code :
Pouvez-vous m'aider ?
J'ai un soucis avec ma condition IF. Je cherche à vérifier que le champ Nom contient seulement des majuscules et minuscules. S'il n'en contient pas j'affiche un message d'erreur sinon j'insère l'information dans une base de données.
Le problème c'est que même si le champ contient autre chose que des caractères l'information est remplie dans la base de données.
Voila mon code :
$LAB_Nom = $_POST['LAB_Nom']; $LAB_Nom = addslashes($LAB_Nom); if (preg_match("/([^A-Za-z])/")) { echo "Le nom du laboratoire ne doit contenir que des lettres !"; } else { $req_insertLabo = "INSERT INTO laboratoire (LAB_Id, LAB_Nom) VALUES ('', '$LAB_Nom')"; $insertLabo = mysql_query($req_insertLabo, $connect) or die($req_insertLabo . " - " . mysql_error()); echo " /!\ Laboratoire ajouté /!\\" ; }
Pouvez-vous m'aider ?
A voir également:
- Condition IF avec un preg_match
- Excel cellule couleur si condition texte - Guide
- Excel condition ou - Guide
- Excel champ calculé avec condition - Forum Excel
- Excel copier une cellule si condition ✓ - Forum Excel
- Excel colorer une cellule sous condition d'une autre cellule ✓ - Forum Excel
3 réponses
Sur "8274 Aerien 634 Aerostat 7676 Aeronautique"
la RE "/([^A-Za-z])/" va faire matcher la regex avec 'Aerien'
Pour indiquer que le match doit avoir lieu sur toute la chaîne testée, il faut dire à la regex: " tu dois matcher à partir du tout début, et tu dois aller comme ça jusqu'à la toute fin"
Soit une RE égale à ceci
"/^([^A-Za-z])\z/"
ou
"/^([^A-Za-z])\Z/" , je ne sais plus, à toi de regarder
la RE "/([^A-Za-z])/" va faire matcher la regex avec 'Aerien'
Pour indiquer que le match doit avoir lieu sur toute la chaîne testée, il faut dire à la regex: " tu dois matcher à partir du tout début, et tu dois aller comme ça jusqu'à la toute fin"
Soit une RE égale à ceci
"/^([^A-Za-z])\z/"
ou
"/^([^A-Za-z])\Z/" , je ne sais plus, à toi de regarder
J'ai essayé les 2 synthaxes et une nouvelle ligne de la table se crée quand même.
J'ai modifié un peu mon code pour prendre en compte les valeurs nulles :
Mais ça ne fonctionne toujours pas.
J'ai modifié un peu mon code pour prendre en compte les valeurs nulles :
if (preg_match("/^([^A-Za-z])\Z/")) { echo "Le nom du laboratoire ne doit contenir que des lettres !"; include 'gestionlabo.php'; } elseif ($LAB_Nom = "") { echo "Le nom du laboratoire ne doit pas être vide !"; include 'gestionlabo.php'; } else { $req_insertLabo = "INSERT INTO laboratoire (LAB_Id, LAB_Nom) VALUES ('', '$LAB_Nom')"; $insertLabo = mysql_query($req_insertLabo, $connect) or die($req_insertLabo . " - " . mysql_error()); echo " /!\ Laboratoire ajouté /!\\" ; }
Mais ça ne fonctionne toujours pas.
Pardon, je n'ai pas fait gaffe:
il faut répéter le symbole [^A-Za-z]
Ce symbole représente UNE lettre. Disons qu'il represente ce qui doit se trouver à UNE position. Et ce quelque chose n'est pas fixé, c'est l'une des valeurs d'un ensemble, c'est à dire un des caractères définis entre [ ]
if (preg_match("/^([^A-Za-z]+)\Z/"))
En mettant un + au lieu d'une *, on s'assure qu'une chaîne vide ne serait pas acceptée.
il faut répéter le symbole [^A-Za-z]
Ce symbole représente UNE lettre. Disons qu'il represente ce qui doit se trouver à UNE position. Et ce quelque chose n'est pas fixé, c'est l'une des valeurs d'un ensemble, c'est à dire un des caractères définis entre [ ]
if (preg_match("/^([^A-Za-z]+)\Z/"))
En mettant un + au lieu d'une *, on s'assure qu'une chaîne vide ne serait pas acceptée.