Ligne incorrect php

Résolu
ana7 Messages postés 16 Statut Membre -  
Ricky38 Messages postés 5776 Date d'inscription   Statut Contributeur Dernière intervention   -
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;
}
Configuration: Windows Vista
Firefox 3.5.6

4 réponses

  1. zoby44 Messages postés 868 Statut Membre 199
     
    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
    1. Ricky38 Messages postés 5776 Date d'inscription   Statut Contributeur Dernière intervention   1 463
       
      Salut zoby44

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

      Bonne journée ;)
      0
  2. Ricky38 Messages postés 5776 Date d'inscription   Statut Contributeur Dernière intervention   1 463
     
    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
  3. okuni Messages postés 1325 Statut Membre 126
     
    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
  4. ana7 Messages postés 16 Statut Membre
     
    Merci de votre aide et pour ton code zoby44, tu m'as depanné.
    Merci encore.
    0