IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Vérification champ bdd [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 20
    Par défaut Vérification champ bdd
    Salut!

    je souhaiterai vérifier les entrées d'un champ précis avant d'effectuer une requete de recherche, et si le nom n'est pas présent dans le champs afficher un message "nom machine inconnu" sinon afficher les résultats de la recherche;
    voici le code que j'ai écrit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?php
     
    if(isset($_POST['recherche']))  $recherche=$_POST['recherche'];
     
    else $recherche="";
     
     
    include ("config.inc.php");
     
    //Vérification du champs nom_mach
    $req = mysql_query("select NOM_MACH from mach where NOM_MACH like '%$recherche%'") or die ("erreur mysql");
     
    if ($req != ""){
    echo "Nom de machine introuvable";
     
    }else{
    //requete recherche
    ...
    mysql_close();
    ?>
    }

    Le probleme c'est qu'avec ce code j'ai tout le temps le message "Nom de machine introuvable", meme lorsque je fais la recherche avec un nom de machine existant dans la base...
    Comment je pourrais faire??

    Merci d'avance

  2. #2
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Bonjour,

    Et avec ce code ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php
     
    if(isset($_POST['recherche']))  $recherche=$_POST['recherche'];
     
    else $recherche="";
     
     
    include ("config.inc.php");
     
    //Vérification du champs nom_mach
    $req = mysql_query("select NOM_MACH from mach where NOM_MACH like '%$recherche%'") or die ("erreur mysql");
     
    $data = mysql_fetch_array($req);
    if (is_null($data)){
    echo "Nom de machine introuvable";
     
    }else{
    //requete recherche
    ...
    mysql_close();
    ?>
    }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 20
    Par défaut
    Alors la lorsque le champ existe j'ai bien le resultat de la recherche, mais lorsque le champs n'existe pas je n'ai pas le message "Nom de machine introuvable" d'afficher mais rien d'affiché...

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Par défaut
    Essaie peut etre avec empty au lieu de is_null :

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 20
    Par défaut
    La ça me met "Nom de machine introuvable" quoiqu'il en soit...

  6. #6
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    et avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if  (mysql_num_rows($req) > 0)
    C'est mieu ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 20
    Par défaut
    Non plus
    Pareil qu'à ta premiere soluce; lorsque le champ est présent ça m'affiche le résultat comme il faut mais lorsque le champs recherché n'est pas présent dans la bdd ça m'affiche page blanche...

  8. #8
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    hum .. ok et ca ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php
     
    if(isset($_POST['recherche']))  $recherche=$_POST['recherche'];
     
    else $recherche="";
     
     
    include ("config.inc.php");
     
    //Vérification du champs nom_mach
    $req = mysql_query("select NOM_MACH from mach where NOM_MACH like '%$recherche%'") or die ("erreur mysql");
     
    $data = mysql_fetch_array($req);
    if (is_null($data)){
    echo "Nom de machine introuvable";
     
    }else{
    //requete recherche
    ...
    mysql_close();
    }
    ?>

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 20
    Par défaut
    Euuh c'est la même soluce que la 1ere que tu m'as proposé :s ! Fonctionne pas non plu..

  10. #10
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Non les {} ne sont pas correctes, et puisque je sais pas mais apparemment c'est au niveau de ton if que ça marche pas, je t'invite a vérifier tes { }
    Dans le premier exemple le } est après ?> ce qui devrais d'ailleurs, te donner une erreur ...

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 20
    Par défaut
    Citation Envoyé par kazou Voir le message
    Non les {} ne sont pas correctes, et puisque je sais pas mais apparemment c'est au niveau de ton if que ça marche pas, je t'invite a vérifier tes { }
    Dans le premier exemple le } est après mysql_close() ce qui devrais d'ailleurs, te donner une erreur ...
    Avec le "}" apres ?> j'ai cette erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Parse error: syntax error, unexpected $end in /home/cedwic/site_poste/result2.php on line 511
    Et avec le "}" juste avant probleme cité juste au dessus!
    J'ai essayé aussi de placer le "}" juste apres la requete de recherche qui suit mais meme soucis..

  12. #12
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Oulah on se comprend plus
    Je résume, dans ton premier post (et tout les autres qui ont suivit), quand tu nous montre ton code t'as une } tout à la fin en dehors du <?php ?>, ce qui m'as fait penser que le problème venais de la.

    Ta requête te renvoi quoi si tu l'execute toi dans phpMyAdmin ? elle renvoi toujours quelque chose ? si c'est le cas c'est normal que ça ne parle pas, $data sera toujours valuée.

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 20
    Par défaut
    Dans le premier poste je me suis trompé en mettant le } tout a la fin désolé! En fait il est juste avant mysql_close!
    Donc je reprend:
    voici le code pour vérifier si ce qui a été tapé dans la zone de saisie de recherche existe dans la table "mach" champ NOM_MACH:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
     
    if(isset($_POST['recherche']))	$recherche=$_POST['recherche']; 
     
    else $recherche="";
     
     
    include ("config.inc.php");
     
    //Vérification du champs nom_mach
    $req = mysql_query("select NOM_MACH from mach where NOM_MACH = '%$recherche%'") or die ("erreur mysql");
    	if (is_null($data)){
    	echo "Nom de machine introuvable";
    	}else{
    ensuite il y a la requete de recherche qui me sort, si le nom de machine existe, tout le nécessaire! et voici la fin du code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?
    	}//fermeture de la boucle while de la requete de recherche
    }//fermeture de la condition pour la vérification dans le champ NOM_MACH
    mysql_close();
     
    ?>

  14. #14
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Si tu ne tente pas de récupérer la première information tu ne poura pas savoir si le recordset est vide (grace a mysql_fetch_array())
    Ensuite une expression de recherche encadré de % me semble plus approprié a un LIKE qu'a un =.
    Tente donc cela.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $req = mysql_query("select NOM_MACH from mach where NOM_MACH LIKE '%$recherche%'") or die ("erreur mysql");
    $data = mysql_fetch_array($req);

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 20
    Par défaut
    Alors voici le code a present:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
     
    if(isset($_POST['recherche']))	$recherche=$_POST['recherche']; 
     
    else $recherche="";
     
     
    include ("config.inc.php");
     
    //Vérification du champs nom_mach
    $req = mysql_query("select NOM_MACH from mach where NOM_MACH = '%$recherche%'") or die ("erreur mysql");
    $data = mysql_fetch_array($req);
    	if (is_null($data)){
    	echo "Nom de machine introuvable";
    	}else{
    fin du code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?
    	}//fermeture de la boucle while de la requete de recherche
    }//fermeture de la condition pour la vérification dans le champ NOM_MACH
    mysql_close();
     
    ?>
    Toujours le probleme; marche bien lorsque le nom de machine existe dans la bdd (la requete de recherche qui suit est donc bien executée) mais lorsque le nom n'existe pas page blanche :s

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 20
    Par défaut
    Probleme résolu!
    Il fallait inverser la condition de cette facon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $req = mysql_query("select NOM_MACH from mach where NOM_MACH LIKE '%$recherche%'") or die ("erreur mysql");
    $data = mysql_fetch_array($req);
    	if ($data != ""){
     
    //requete de recherche
     
    }else{
     
    //message comme quoi la machine est inexistante
    }
    mysql_close()
    ?>

  17. #17
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Si c'est juste une inversion de résultat booleen tu peut faire :


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 23/07/2009, 14h26
  2. Réponses: 8
    Dernier message: 26/05/2009, 12h18
  3. vérification champ après champ d'un formulaire
    Par Francis_R dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/10/2005, 08h55
  4. modification champs BDD
    Par jeff06_2 dans le forum Bases de données
    Réponses: 4
    Dernier message: 05/06/2004, 20h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo