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 :

Moteur de recherche resultat page vide [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Invité
    Invité(e)
    Par défaut Moteur de recherche resultat page vide
    Bonsoir voila j'ai fait un petit moteur de recherche pour ma base, mais j'ai un souci au niveau de l'affichage du résultat final qui m'affiche une page vide, sans erreur rencontrer...
    je vaudrais mettre le résultat sous forme de tableau et faire un seul tableau pour mes 4 condition. voici donc mon formulaire de recherche

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <form action="recherche.php" method="post">
     
            <select name="recherche">
               <option value="CPVilla">Par Le code postal</option>
               <option value="VilleVilla">Par La ville de la villa</option>
               <option value="NbChambres">Par Le nombre de chambres</option>
               <option value="NbPlaces">Par Le nombre de places</option>
             </select>
     
    	 <input type='text' name='recherche' size=40 maxlength=100>
     
             <input type="submit" value="Rechercher">
     
      </form>

    qui ne me pose pas de soucis également, mais ce dont je ne comprend pas c'est pourquoi la page s'affiche vide...
    si quelqu'un pourrais m'aider a corriger voir même aider a améliorer mon moteur de recherche et bien je vous remercie beaucoup par avance...

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     <?php
     $recherche = $_POST['recherche'];
     // on se connecte à notre base
                     $connexion = mysql_connect("localhost","","" );
                     mysql_select_db("villa",$connexion);
     
    //1ere condition si l'user a fait sa recherche par production
    if($_POST['recherche'] == 'CPvilla')
    {
    $sq1 = ("SELECT * FROM GITE WHERE CPvilla = '$recherche'" );
    $requete = mysql_query($sq1);
    while ($recherche = mysql_fetch_array($requete))
    {
    echo $ligne['Novilla']." ".$ligne['Ruevilla']." ".$ligne['CPGite']." ".$ligne['Villevilla']." ".$ligne['NbPlaces']." ".$ligne['NbChambres']." ".$ligne['Surface']." <br />";
    }
    }
     
    //2éme condition si l'user choisi par artiste  
    else if($_POST['recherche'] == 'Villevilla')
    {
    $sq1 = ("SELECT * FROM GITE WHERE Villevilla = '$recherche'" );
    $requete = mysql_query($sq1);
    while ($recherche = mysql_fetch_array($requete))
    {
    echo $ligne['Novilla']." ".$ligne['Ruevilla']." ".$ligne['CPvilla']." ".$ligne['Villevilla']." ".$ligne['NbPlaces']." ".$ligne['NbChambres']." ".$ligne['Surface']." <br />";  
    }
    }
     
    //3éme condition par album            
    else if($_POST['recherche'] == 'NbChambres')
    { 
     $sq1 = ("SELECT * FROM GITE WHERE NbChambres = '$recherche'" );
     $requete = mysql_query($sq1);
     while ($recherche = mysql_fetch_array($requete))
     {
     echo $ligne['Novilla']." ".$ligne['Ruevilla']." ".$ligne['CPvilla']." ".$ligne['Villevilla']." ".$ligne['NbPlaces']." ".$ligne['NbChambres']." ".$ligne['Surface']." <br />";
     }
     }
     
     //4éme condition par titre
     else if($_POST['recherche'] == 'NbPlaces')
     {
     $sq1 = ("SELECT * FROM GITE WHERE NbPlaces = '$recherche'" );
     $requete = mysql_query($sq1);
     while ($recherche = mysql_fetch_array($requete))
     {
     echo $ligne['Novilla']." ".$ligne['Ruevilla']." ".$ligne['CPvilla']." ".$ligne['Villevilla']." ".$ligne['NbPlaces']." ".$ligne['NbChambres']." ".$ligne['Surface']." <br />";
     }
     }
      mysql_close();
     ?>
    Merci a vous.
    Dernière modification par julp ; 27/03/2008 à 01h26. Motif: merci d'employer les balises [code] (bouton # de l'éditeur)

  2. #2
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Points : 434
    Points
    434
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while ($recherche = mysql_fetch_array($requete))
    {
    echo $ligne['Novilla']." ".$ligne['Ruevilla']." ".$ligne['CPvilla']." ".$ligne['Villevilla']." ".$ligne['NbPlaces']." ".$ligne['NbChambres']." ".$ligne['Surface']." <br />";
    }
    Bah, la variable $ligne est différent de $recherche.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Je viens de changer les variables et le résultat est toujours le même... la page résultat reste vide...

  4. #4
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Points : 434
    Points
    434
    Par défaut
    J'ai compris, dans ton HTML, t'as deux champs qui portent le même nom : le SELECT et le INPUT_TEXT. Le INPUT_TEXT va primer sur ton SELECT donc on ne saura jamais quel critère de recherche l'utilisateur a t-il pû choisir.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Mais alors comment remédier a ce problème ?

  6. #6
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Points : 434
    Points
    434
    Par défaut
    Bah, comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     <select name="critere">
               <option value="CPVilla">Par Le code postal</option>
               <option value="VilleVilla">Par La ville de la villa</option>
               <option value="NbChambres">Par Le nombre de chambres</option>
               <option value="NbPlaces">Par Le nombre de places</option>
             </select>
     
    	 <input type='text' name='recherche' size=40 maxlength=100>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     <?php
     $recherche = $_POST['recherche'];
     $critere = $_POST['critere'];
     
    //1ere condition si l'user a fait sa recherche par production
    if($critere == 'CPvilla')
    {
       $sq1 = ("SELECT * FROM GITE WHERE CPvilla = '$recherche'" );
       $requete = mysql_query($sq1);
        // Blabla
    }

  7. #7
    Invité
    Invité(e)
    Par défaut
    Merci pour ton aide je viens de faire les modifications...
    mais il me met a présent une erreur sql...
    que voici

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /mnt/103/sdb/f/9/pseudo/Nouveau dossier/Nouveau document texte.php on line 26

    c'est au niveau du while...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    //2éme condition si l'user choisi par artiste  
    else if ($critere == 'VilleGite')
    {
    $sq1 = ("SELECT * FROM Gite WHERE VilleGite = '$recherche'" );
    $requete = mysql_query($sq1);
    while ($recherche = mysql_fetch_array($requete))
    {
    echo $recherche['NoGite']." ".$recherche['RueGite']." ".$recherche['CPGite']." ".$recherche['VilleGite']." ".$recherche['NbPlaces']." ".$recherche['NbChambres']." ".$recherche['Surface']." <br />";  
    }
    }
    mais je ne comprend pas cette erreur...
    Dernière modification par Invité ; 27/03/2008 à 19h40.

  8. #8
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Points : 434
    Points
    434
    Par défaut
    C'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sq1 = "SELECT * FROM Gite WHERE VilleGite = '$recherche'";
    J'aurais dû remarqué ça plus tôt ~~.

    En même temps, s'il y a un ' ou un " dans ta variable POST, ça risque de faire capoter la requête. Il faudra penser à les filtrer avec les fonctions adéquates comme htmlspecialchars.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Je viens d'effectuer les changements préconiser et cette fois c'est une erreur toujours en ligne 26 je ne vois pas d'où peut venir cette erreur...

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /mnt/103/sdb/f/9/pseudo/Nouveau dossier/Nouveau document texte.php on line 26

    si il y a un autre model de moteur de recherche avec critère je suis preneur...
    un grand merci de votre aide par avance

  10. #10
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Points : 434
    Points
    434
    Par défaut
    Ca ne peut qu'être la requête, affiches$sq1 pour la vérifier sous mysql.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    voila j'ai effecteur les modification nécessaire mais je me retrouve cette fois si avec une erreur pour chacune de mais condition

    Notice: Undefined variable: sql in h:\www\travail\nouveau document texte.php on line 23

    Notice: Undefined variable: sql in h:\www\travail\nouveau document texte.php on line 23
    Erreur SQL !

    Query est vide
    Notice: Undefined variable: sql in h:\www\travail\nouveau document texte.php on line 34

    Notice: Undefined variable: sql in h:\www\travail\nouveau document texte.php on line 34
    Erreur SQL !

    Query est vide
    Notice: Undefined variable: sql in h:\www\travail\nouveau document texte.php on line 45

    Notice: Undefined variable: sql in h:\www\travail\nouveau document texte.php on line 45
    Erreur SQL !

    Query est vide
    Notice: Undefined variable: sql in h:\www\travail\nouveau document texte.php on line 56

    Notice: Undefined variable: sql in h:\www\travail\nouveau document texte.php on line 56
    Erreur SQL !

    Query est vide
    Et voici le script, je ne comprend pas cette erreur...

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    <?php
    	if (isset($_POST['recherche']))
    	{
              $recherche = $_POST['recherche'];
    	}
    	$recherche = $_POST['recherche'];  
     
    		if (isset($_POST['critere']))
    	{
              $recherche = $_POST['critere'];
    	}
    	$critere = $_POST['critere'];  
     
     
       // on se connecte à notre base
       $connexion = mysql_connect("***","***","***" );  
       mysql_select_db("villa",$connexion);  
     
       //1ere condition si l'user a fait sa recherche par code postal
       if($critere == 'CPVilla')  
       {  
       $sq1 = "SELECT * FROM Villa WHERE CPVilla = '$recherche'";  
       $requete = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());  
       while ($recherche = mysql_fetch_array($requete)) ;  
       {  
       echo $recherche['NoVilla']." ".$recherche['RueVilla']." ".$recherche['CPVilla']." ".$recherche['VilleVilla']." ".$recherche['NbPlaces']." ".$recherche['NbChambres']." ".$recherche['Surface']." <br />";  
       }  
       }  
     
      //2éme condition si l'user choisi par ville
       else if ($critere == 'VilleVilla')  
       {  
       $sq1 = "SELECT * FROM Villa WHERE VilleVilla = '$recherche'";  
       $requete = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
       while ($recherche = mysql_fetch_array($requete)) ;  
       {  
       echo $recherche['NoVilla']." ".$recherche['RueVilla']." ".$recherche['CPVilla']." ".$recherche['VilleVilla']." ".$recherche['NbPlaces']." ".$recherche['NbChambres']." ".$recherche['Surface']." <br />";  
       }  
       }  
     
       //3éme condition par nombre de chambres
       else if($critere == 'NbChambres')  
       {  
       $sq1 = "SELECT * FROM Villa WHERE NbChambres = '$recherche'";  
       $requete = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());  
       while ($recherche = mysql_fetch_array($requete)) ;  
       {  
       echo $recherche['NoVilla']." ".$recherche['RueVilla']." ".$recherche['CPVilla']." ".$recherche['VilleVilla']." ".$recherche['NbPlaces']." ".$recherche['NbChambres']." ".$recherche['Surface']." <br />";  
       }  
       }  
     
       //4éme condition par nombre de places
       else if($critere == 'NbPlaces')  
       {  
       $sq1 = "SELECT * FROM Villa WHERE NbPlaces = '$recherche'";  
       $requete = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
       while ($recherche = mysql_fetch_array($requete)) ;  
       {  
       echo $recherche['NoVilla']." ".$recherche['RueVilla']." ".$recherche['CPVilla']." ".$recherche['VilleVilla']." ".$recherche['NbPlaces']." ".$recherche['NbChambres']." ".$recherche['Surface']." <br />";  
       }  
       }  
       mysql_close();  
    ?>
    je vous remercie par avance

  12. #12
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    Essaye en échappant tes variables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sq1 = "SELECT * FROM Villa WHERE CPVilla = '$recherche'";
    devient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sq1 = "SELECT * FROM Villa WHERE CPVilla = '".$recherche."'";

    PS : je te conseille pas l'utilisation de majuscules dans les bases de données, tables & champs :p

  13. #13
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Points : 434
    Points
    434
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     $sq1 = "SELECT * FROM Villa WHERE CPVilla = '$recherche'";  
       $requete = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    La variable $sql est différent de $sq1.
    Caractère alphabétique "L" et caractère numérique "1" .

  14. #14
    Invité
    Invité(e)
    Par défaut
    Merci de votre aide...
    je viens de faire les modification nécessaire,
    maintenant il ne m'affiche rien en page résultat !!!

    a quoi cela peut être du ?

  15. #15
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Points : 434
    Points
    434
    Par défaut
    Soit il ne passe dans une des conditions soit la requête ne donne aucun résultat.

  16. #16
    Invité
    Invité(e)
    Par défaut
    Vous n'aurriez pas un model type a proposer ?

  17. #17
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    ouais en fait c'est extrêmement simple !


    Tu détruis TOI MEME tes variables -_-


    En effet, en haut du code tu écris quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $recherche = $_POST["recherche"];
    A partir de ce moment là, $recherche existe (et est normalement correcte)

    [HORS SUJET]
    Ton code sert à rien vu que j'ai vu que tu vérifiais si $_POST["recherche"] était défini (isset($_POST["recherche"])) il faut savoir qu'une variable $_POST est toujours définie !!! mais parfois, elle peut être vide ;-)

    De plus, tu écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if( isset($_POST["recherche"]) ) {
       $recherche = $_POST["recherche"];
    }
    $recherche = $_POST["recherche"];
    A quoi ca sert de vérifier quelque chose si quoi qu'il arrive tu fais la même chose ?

    [/ HORS SUJET]

    Revenons à nos moutons, tu as donc ta variable $recherche mais regarde plus loin dans ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $recherche = mysql_fetch_array(........)
    $recherche retourne maintenant une "Ressource ID" affichage avec var_dump

    Change tes variables ou utilise simplement $_POST["recherche"] dans tes requêtes, exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $query = mysql_query("SELECT * FROM ma_table WHERE mon_champ = '".$_POST["recherche"]."'");
    while( $row = mysql_fetch_array($query) ) {
        echo $row["mon_champ"]."<br />";
    }

  18. #18
    Invité
    Invité(e)
    Par défaut
    Merci a toi...
    mais j'ai toujours un pages blanche...
    je ne comprend vraiment pas pourquoi. si vous avez un moteur multicritere qui fait apel au sql dans une en utilisant un seule table dans une seule base. je suis preneur. celui que je fais commence a me faire tourner la tête...

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 18/04/2014, 14h03
  2. Redirection moteur de recherche vers page de résultats
    Par maxime rebh dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 11/03/2014, 11h21
  3. [MySQL] Moteur de recherche avec page par page
    Par dancom5 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 15/06/2011, 16h35
  4. moteur de recherche interne - page.htm
    Par nysyus dans le forum Débuter
    Réponses: 1
    Dernier message: 26/08/2010, 21h47
  5. Moteur de recherche avec pages protégées
    Par oc_alex86 dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 13/02/2010, 12h59

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