Condition IF avec un preg_match

Résolu
Slylia Messages postés 64 Statut Membre -  
heyquem Messages postés 808 Statut Membre -
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 :
$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 ?

3 réponses

heyquem Messages postés 808 Statut Membre 131
 
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
0
Slylia Messages postés 64 Statut Membre 1
 
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 :
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.
0
heyquem Messages postés 808 Statut Membre 131
 
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.
0