Ligne incorrect php

Résolu/Fermé
ana7 Messages postés 14 Date d'inscription mercredi 16 décembre 2009 Statut Membre Dernière intervention 29 janvier 2010 - 17 déc. 2009 à 18:45
Ricky38 Messages postés 4347 Date d'inscription samedi 15 mars 2008 Statut Contributeur Dernière intervention 2 novembre 2013 - 17 déc. 2009 à 22:38
Bonjour,
J'ai une partie de code qui ne passe pas, il devrait y avoir une vérification mais elle ne se fait pas.
Merci pour votre aide.

Voici le morceau qui pose probleme.

//On verifie que l'enregistrement n'existe pas
$verif = ("SELECT * FROM inscription WHERE activite LIKE '%$libelle%';");
$result_verif = mysql_query($verif) or die ('Erreur : '.mysql_error() );

if ($ligne_verif=mysql_fetch_array($result_verif)) {
$nom_verif = $ligne_verif['nom_eleve'];
$prenom_verif = $ligne_verif['prenom_prenom'];
$classe_verif = $ligne_verif['classe_eleve'];
}

if (($nom_verif == $nom) && ($prenom_verif == $prenom)) {
echo "Vous êtes déjà inscrit à cette activité";
exit;
}

4 réponses

zoby44 Messages postés 818 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 7 avril 2010 199
17 déc. 2009 à 20:46
Salut.
D'accord ni avec l'un, ni avec l'autre ...
Pour Ricky38 :
"$nom" est une variable, "nom" est la clé d'un tableau, donc la syntaxe est bonne.

Pour commencer, la requête sql est une chaine de caractère, pourquoi tu l'entoures avec des parenthèses ? Elles sont inutiles (peut être que ca fonctionne avec, j'ai pas testé).

Ensuite, quand tu regardes dans la doc PHP, mysql_fetch_array renvoi un array et pas un booléen, donc impossible de mettre un "if" dessus.

Le mot clé "LIKE" de SQL fait une recherche approximative dans une base de données, donc pour une vérification, c'est pas terrible.
Si par exemple ton utilisateur s'inscrit pour faire du ski (de fond) et qu'il est déjà inscrit pour du ski nautique, son inscription ne sera pas validée.
Utilises plutôt : WHERE activite='$libelle'

Donc, je verrais plus un truc comme ca :


// On verifie que l'enregistrement n'existe pas
$verif = "SELECT * FROM inscription WHERE activite = '$libelle'";
$result_verif = mysql_query($verif) or die ('Erreur : '.mysql_error() );

// Compteur à 0
$i = 0;

// Boucle sur le nombre d'entées SQL
while ($ligne_verif=mysql_fetch_array($result_verif)) {
$nom_verif[$i] = $ligne_verif['nom_eleve'];
$prenom_verif[$i] = $ligne_verif['prenom_prenom'];
$classe_verif[$i] = $ligne_verif['classe_eleve'];
$i++;
}

// Vérification pour inscription
if ( ( in_array( $nom, $nom_verif ) ) && ( in_array( $prenom, $prenom_verif ) ) ) {
echo "Vous êtes déjà inscrit à cette activité";
exit;
}


J'espère avoir put t'aider.
1
Ricky38 Messages postés 4347 Date d'inscription samedi 15 mars 2008 Statut Contributeur Dernière intervention 2 novembre 2013 1 458
17 déc. 2009 à 22:38
Salut zoby44

tu as bien raison mon ami, j'ai regardé beaucoup trop vite

Bonne journée ;)
0
Ricky38 Messages postés 4347 Date d'inscription samedi 15 mars 2008 Statut Contributeur Dernière intervention 2 novembre 2013 1 458
17 déc. 2009 à 18:53
Salut,

à une place tu as $nom et à l'autre tu as nom_eleve
à une place tu as $prenom et à l'autre tu as prenom_prenom

Surement ça
0
okuni Messages postés 1221 Date d'inscription jeudi 4 septembre 2008 Statut Membre Dernière intervention 2 janvier 2014 126
17 déc. 2009 à 18:54
Quel est la partie qui ne fonctionne pas?

ce code est faux
if ($ligne_verif=mysql_fetch_array($result_verif))

il manque un "="
if ($ligne_verif == mysql_fetch_array($result_verif))

Mais je ne vois pas l'interet d'écrire ceci.
0
ana7 Messages postés 14 Date d'inscription mercredi 16 décembre 2009 Statut Membre Dernière intervention 29 janvier 2010
17 déc. 2009 à 21:03
Merci de votre aide et pour ton code zoby44, tu m'as depanné.
Merci encore.
0