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 :

Empêcher l'affichage si champs vide


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 024
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 024
    Par défaut Empêcher l'affichage si champs vide
    Bonjour à tous,

    Grâce à l'aide qui m'a été apportée sur le forum, j'ai pu faire des tests de champs vide venant d'un formulaire.
    Ceci était pour l'admin d'un moteur.

    Par contre, pour le moteur lui-même, je n'arrive pas à empêcher l'affichage des mots clés si le champs est vide et est quand même validé.

    Si je saisis un mots clés, tout va bien, mais je ne saisis rien, tout va mal.

    J'ai essayé de reprendre ce qu'on m'avait donné pour l'administration, mais j'y arrive pas.
    Quand j'essaie, j'ai toujours cette erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Notice: Undefined variable: req in G:\SiteQI98_valide\pages\recherche\result.php on line 8
     
    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in G:\SiteQI98_valide\pages\recherche\result.php on line 8
    et voici la ligne incriminée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat= mysql_num_rows($req);
    Si vous pouviez me dépanner, ce serait sympa.

    Le code complet n'est pas très grand heureusement, aussi pour que ça soit plus claire pour vous, je le mets
    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
    24
    25
    26
    27
    $resultat= mysql_num_rows($req); 
    if (($resultat !="")) 
    {
    $req = mysql_query("SELECT url, titre FROM $nomtable WHERE motscles LIKE '%$_POST[recherche]%' Order by url Asc "); 
      //on affiche le nombre de resultats
    echo 'Il y a : ';
    	   if($resultat <=1)
    		echo''.$resultat.' resultat';
    		elseif($resultat >1)
    		echo''.$resultat.' resultats';
    echo '&nbsp;&nbsp;';
    echo'pour le mot [ <span class="grasmarron">'.$_POST['recherche'].' </span> ]';
     
    //on ressort les infos par ordres alphabétiques
    while( $result = mysql_fetch_array($req))
    {
    echo'<span style="font-weight:bold;text-decoration:underline;">'.$result['titre'].'</span><br /> Lien vers la page : <a href="'.$result['url'].'">'.$result['url'].'</a><br /><br />';
    }
    }
     
    else
    {
    echo 'Désolé mais aucun resultat ne correspond à votre demande.';
    }
     
    mysql_close(); 
    ?>
    Merci d'avance.

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 061
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 061
    Par défaut
    Bonjour,

    La requête que tu passes dans la variable $req ne doit pas être valide, sûrement parce que $_POST[recherche] est vide... C'est pour ça que ça plante. Il faut que tu contrôles au préalable que $_POST[recherche] est rempli (avec les fonctions isnull($_POST[recherche]) ou strlen($_POST[recherche]) > 0, de mémoire).

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre éprouvé
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 024
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 024
    Par défaut
    C'est là que je bloque.

    Parce que j'appelais des variables via un formulaire, et par conséquent, il n'y avait que $_POST[xxxx] qui marchait bien. Là, j'avais 2 fichier
    1- en html pour le formulaire
    2- en php pour le traitement

    Mais le moteur en question n'a qu'une seule page .php.

    Ce que tu me dis est clair et limpide pour toi, mais là pour moi c'est un peu de l'hébreu.
    J'essaye d'apprendre MySQL et c'est pas évident !

    Je suis perdu parce qu'avant j'avais un formulaire pour l'admin, donc avec l'aide ça été, mais là j'en ai pas.

  4. #4
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 061
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 061
    Par défaut
    Citation Envoyé par jlb59 Voir le message
    Ce que tu me dis est clair et limpide pour toi, mais là pour moi c'est un peu de l'hébreu.
    J'essaye d'apprendre MySQL et c'est pas évident !
    Encore une fois, ce n'est pas MySQL que tu apprends (en tout cas dans le cas présent), mais le PHP...
    Là aussi, c'est visiblement un problème de PHP.

    Ta variable $_POST[recherche] doit être vide (les champs de recherche n'ont pas été remplis). Or, tu définis une requête qui, de fait, est incomplète, puisqu'il n'y a rien dans $_POST[recherche]. Pour en être sûr, il faudrait afficher $req avant la ligne qui plante, et voir ce que vaut cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo $req;
    $resultat= mysql_num_rows($req);
    Si la requête est effectivement incomplète, il faut éviter de la lancer. Pour ça, il faut savoir si les champs de recherche ont été remplis.
    Tu as plusieurs façons de faire ça en PHP.
    Par exemple, tu peux regarder si la chaîne de caractères renvoyée par le champs a au moins 1 caractère, d'où le test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (strlen($_POST[recherche]) > 0)) 
    {
      $resultat= mysql_num_rows($req);
      ...
    }
    Ca fait un bout de temps que je n'ai plus fait de PHP...
    Vérifie déjà ce que vaut $req et, en fonction du résultat, on déplacera éventuellement ton post sur un forum PHP (tu auras plus de chances d'obtenir une réponse adéquate ).

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  5. #5
    Membre éprouvé
    Avatar de jlb59
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2004
    Messages
    1 024
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2004
    Messages : 1 024
    Par défaut
    Citation Envoyé par ced Voir le message
    st :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (strlen($_POST[recherche]) > 0)) 
    {
      $resultat= mysql_num_rows($req);
      ...
    }
    C'est sympa de ta part d'être explicite, mais quand tu dis que ce n'est pas du MySQL mais du PHP, là je patauge sérieusement.

    Une requête, c'est du MySQL, non ?
    Même si elle est entre <?PHP et ?>

    Quoiqu'il en soit, là n'est pas le hic.

    Tu me reparles de $_POST[recherche], c'est bien mais où est définie cette variable ?
    Avant, j'avais un formulaire, mais maintenant pour moi c'est différent !

    J'ai oublié de mettre le résultat de $req
    Resource id #12
    Maintenant, c'est de savoir ce que ça signifie !

Discussions similaires

  1. Réponses: 7
    Dernier message: 24/11/2022, 11h32
  2. [MySQL] Moteur de recherche multi critére - Probléme affichage si champs vide
    Par karpe dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 28/02/2010, 20h59
  3. Empêcher la validation d'un formulaire si champs à vide
    Par ghohm dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 16/07/2007, 16h21
  4. affichage des champs vides
    Par nada83 dans le forum Access
    Réponses: 5
    Dernier message: 02/05/2006, 15h33
  5. Réponses: 2
    Dernier message: 17/10/2005, 10h29

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