Vérification avec et sans majuscules

Eléphant du PHP | 184 Messages

05 déc. 2011, 17:47

Je dois faire une petite vérification sur un champ de formulaire.
La personne entre le nom d'une catégorie, je dois vérifier si cette catégorie existe déjà, si c'est le cas, refuser l'enregistrement.

Cela marche bien, mais si la personne met une majuscule, là cela passe.
Comment faire pour faire une vérification, majuscules et minuscules ne comptant pas ?
$nom_categorie = stripslashes(mysql_real_escape_string($_POST['nom_categorie']));

$sql = "SELECT nom_categorie
        FROM categories";

$requete = mysql_query($sql) or die( mysql_error());
$result = mysql_fetch_array($requete);

if (empty($_POST['nom_categorie'])){
	echo '<br/><br/>'.'<p style="color:#ff0000;font-weight:bold;">Vous devez au moins entrer le titre en Français pour pouvoir continuer</p>'."<br/><a href=\"addcategorie.php\">Revenir aux catégories</a>";
exit;
}

if ($result['nom_categorie'] == $nom_categorie){
		echo '<br/><br/>'.'<p style="color:#ff0000;font-weight:bold;">Cette série existe déjà</p>'."<br/><a href=\"addcategorie.php\">Revenir aux catégories</a>";
exit;
}
Merci à vous

ViPHP
xTG
ViPHP | 7331 Messages

05 déc. 2011, 17:59

Ton code ne fonctionne absolument pas, il ne teste que le premier enregistrement dans ta base de données.
Utilises la clause WHERE de la requête SQL :
$sql = "SELECT nom_categorie
FROM categories
WHERE nom_categorie = '" . mysql_real_escape_string($_POST['nom_categorie']) . "'";
// mysql_real_escape_string() permet de protéger la chaîne des petits caractères malicieux qui pourraient générer une erreur ou exécuter un code non voulu
Mais cela respecte encore a casse, pour régler cela on va utiliser la fonction LOWER() en SQL :
SELECT id
FROM maTable
WHERE LOWER(nom) = LOWER('Stéphanie')
En supposant que Stéphanie soit orthographié par exemple stéphanie dans la table.
Le fait d'utiliser LOWER() va tout mettre en minuscule et donc le problème sera résolu.

Eléphant du PHP | 184 Messages

05 déc. 2011, 18:03

Merci, je vais essayer cela.

Juste pour info, a quoi sert le . "'"; à la fin ?

Eléphant du PHP | 184 Messages

05 déc. 2011, 18:04

Merci, je vais essayer cela.

Juste pour info, a quoi sert le
. "'";
à la fin ?

Eléphant du PHP | 184 Messages

05 déc. 2011, 18:08

J'ai fait ceci mais cela n'a pas marché, je ne m'y prend pas correctement ?
$sql = "SELECT nom_categorie
FROM categories
WHERE LOWER(nom_categorie) = LOWER('" . mysql_real_escape_string($_POST['nom_categorie']) . "')";

ViPHP
xTG
ViPHP | 7331 Messages

05 déc. 2011, 18:32

Cette requête te génère une erreur ? Te renvoie-t-elle une ligne de résultat ?

Eléphant du PHP | 184 Messages

05 déc. 2011, 19:07

Non pas d"erreur particulière, juste cela passe.