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 PHP [Fait]


Sujet :

PHP & Base de données

  1. #1
    Invité
    Invité(e)
    Par défaut Moteur de recherche PHP
    Bonjour, cela fait plusieurs jours que je travaille sur un moteur de recherche php/mysql avec plusieurs critères mais sans résultat. ce qui ma conduit a le diviser en plusieurs partie...
    Le problème qui se présente a moi est niveau de l'affichage des résultat, en effet quand il trouve un résultat il l'affiche en plusieurs fois le même or il y en a 9 de différent dans ma base...
    C'est dire quand je recherche une villa à Monaco il m'en affiche 1 mais répéter plusieurs fois or il n'affiche pas les autres.
    Je suis débutant en php et je ne vois pas comment corriger cela...
    ci dessous mon script...

    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
     
    <?php
       $VilleVilla = $_POST['VilleVilla'];
     
       // on se connecte à notre base
       $connexion = mysql_connect("localhost","","" );  
       mysql_select_db("Villa",$connexion);  
     
       //choisi par ville
       $sql = "SELECT * FROM villa WHERE VilleVilla = '$VilleVilla'";  
       $requete = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
       while ($ligne = mysql_fetch_array($requete)) 
       {  
    echo "<h3>Présentation des gîtes</p>" ;
    echo "<table BORDER=\"1\">" ;
    echo "<tr><th>NoVilla</th><th>Rue</th><th>CP</th><th>Ville</th><th>Places</th><th>Chambres</th><th>Surface</th><th>Jardin</th></tr>";
    echo "<tr><td>".$ligne['NoVilla']."</td><td>".$ligne['RueVilla']."</td><td>".$ligne['CPVilla']."</td><td>".$ligne['VilleVilla']."</td><td>".$ligne['NbPlaces']."</td><td>".$ligne['NbChambres']."</td><td>".$ligne['Surface']."</td><td>Oui</td></tr>";
    echo "</table>";
    echo "<hr>";
       }
    echo "Aucun résultat ne correspond à votre recherche" ;
     
       mysql_close();  
    ?>
    Je vous remerci par avance.

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Je pense que tu as un problème sur l'ouverture de ta table et ta boucle...
    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
       $sql = "SELECT * FROM villa WHERE VilleVilla = '$VilleVilla'";  
       $requete = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    if (mysql_num_rows($requete) >0) { //on a au moins un resultat 
    //début du tableau echo "<h3>Présentation des gîtes</p>" ;
    echo "<table BORDER=\"1\">" ;
    echo "<tr><th>NoVilla</th><th>Rue</th><th>CP</th><th>Ville</th><th>Places</th><th>Chambres</th><th>Surface</th><th>Jardin</th></tr>";
       while ($ligne = mysql_fetch_array($requete)) 
       {  //remplissage du tableau
    echo "<tr><td>".$ligne['NoVilla']."</td><td>".$ligne['RueVilla']."</td><td>".$ligne['CPVilla']."</td><td>".$ligne['VilleVilla']."</td><td>".$ligne['NbPlaces']."</td><td>".$ligne['NbChambres']."</td><td>".$ligne['Surface']."</td><td>Oui</td></tr>";
       }
    //fin du tableau
    echo "</table>";
    echo "<hr>";
    }else{
    echo "Aucun résultat ne correspond à votre recherche" ;
    }

  3. #3
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    essaye de faire SELECT DISTINCT * au lieu de SELECT *

    et dit nous ce que cela produit

  4. #4
    Invité
    Invité(e)
    Par défaut
    Je vais tester ca de suite je vous tiens au courant

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 102
    Points : 58
    Points
    58
    Par défaut
    N'aurais-tu pas un problème de boucle infinie ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Justement c'etait une boucle infinie...
    cela marche desormais...
    Grand merci a vous.

    Voila je me pose un autre petit probleme sur le bien etre des visiteur...
    voila mais resultat seron afficher dans des tableau differents qui sont assez long... j'aurrais aimer limiter le nobre de resultat dans la page à 5 ainsi passer a la page suivante...
    en bas juste a la fin du dernier resultat y afficher la page sur la quelle on se trouve et aussi deux liens (precedent et suivant) je vous remecie encore enormement

  7. #7
    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
    Citation Envoyé par SphynXz Voir le message
    essaye de faire SELECT DISTINCT * au lieu de SELECT *

    et dit nous ce que cela produit
    Si cela ne résoud rien, utilise GROUP BY VilleVilla (à la fin de ta requête)

    Aussi étrange que cela puisse parraitre, j'ai travailler sur un site il n'y a pas longtemps qui ne "comprenait" apparemment pas le SELECT DISTINCT (d'ailleurs si quelqu'un a une explication à ça, je suis preneur) et donc on était obligé d'utiliser le GROUP BY

  8. #8
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Citation Envoyé par kolivier2
    voila mais resultat seron afficher dans des tableau differents qui sont assez long... j'aurrais aimer limiter le nobre de resultat dans la page à 5 ainsi passer a la page suivante...
    en bas juste a la fin du dernier resultat y afficher la page sur la quelle on se trouve et aussi deux liens (precedent et suivant) je vous remecie encore enormement
    créer un système automatique de pagination

  9. #9
    Invité
    Invité(e)
    Par défaut
    Ok merci a vous je vais lire le tuto...

  10. #10
    Invité
    Invité(e)
    Par défaut
    Voila je viens d'integrer le html qui dans le quel les resultat seront mis mais j'ai une erreur de a la ligne 50 au niveau du else
    coment y remedier svp ?

    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
     
    <?php
       $VilleVilla = $_POST['VilleVilla'];
       // on se connecte à notre base
       $connexion = mysql_connect("localhost","","" );  
       mysql_select_db("villa",$connexion);  
       //choisi par ville
       $sql = "SELECT * FROM Villa, PROPRIO, RESERVATION WHERE VilleVilla = '$VilleVilla'";  
       $requete = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
       //Si il y a un resultat
       if (mysql_num_rows($requete) >0)
       {
       while ($ligne = mysql_fetch_array($requete))
       {  
       echo "<html>";
    	echo "<head>";
    	echo	"<title>Liste des Villas</title>";
    	echo "</head>";
    	echo "<body bgcolor='#006666' text='#FFFFFF' link='#FFFF00' vlink='#00FFFF' alink='#00FF00'>";
    	echo "<form action='index.htm'><input type='submit' value='Retour'></form>";
    	echo "<h1 align='center'>Liste des Gîtes</h1>";   
       echo "<h3>Présentation des gîtes</p>" ;
       echo "<table BORDER='1'>" ;
       echo "<tr><th>NoVilla</th><th>Rue</th><th>CP</th><th>Ville</th><th>Places</th><th>Chambres</th><th>Surface</th><th>Jardin</th></tr>";
       echo "<tr><td>".$ligne['NoVilla']."</td><td>".$ligne['RueVilla']."</td><td>".$ligne['CPVilla']."</td><td>".$ligne['VilleVilla']."</td><td>".$ligne['NbPlaces']."</td><td>".$ligne['NbChambres']."</td><td>".$ligne['Surface']."</td><td>Oui</td></tr>";
       echo "</table>";
       echo "<h3>Propriétaire du gîte</h3>";
       echo "<table BORDER='1'>";
       echo "<tr><th>Nom</th><th>Rue</th><th>CP</th><th>Ville</th><th>Tel</th><th>Mel</th></tr>";
       echo "<tr><td>".$ligne['NomProprio']."</td><td>".$ligne['RueProprio']."</td><td>".$ligne['CPProprio']."</td><td>".$ligne['VilleProprio']."</td><td>".$ligne['TelProprio']."</td><td>".$ligne['MelProprio']."</td></tr>";
       echo "</table>";
       echo "<h3>Prix du gîte</h3>";
       echo "<table BORDER='1'>";
       echo 	"<tr><th>Saison</th><th>Unité</th><th>Prix</th></tr>";
       echo     "<tr><td>Printemps</td><td>Par semaine</td><td align='right'>250,00 €</td></tr>";
       echo     "<tr><td>Eté</td><td>Par semaine</td><td align='right'>350,00 €</td></tr>";
       echo     "<tr><td>Automne</td><td>Par semaine</td><td ALIGN='RIGHT'>250,00 €</td></tr>";
       echo     "<tr><td>Hiver</td><td>Par semaine</td><td ALIGN='RIGHT'>200,00 €</td></tr>";
       echo "</table>";
       echo "<h3>Occupation du gîte</h3>";
       echo "<table BORDER='1'>";
       echo     "<tr><th>N°Réservation</th><th>N° semaine</th><th>début</th></tr>";
       echo    "<tr><td>".$ligne['NoRes']."</td><td>".$ligne['numsemaine']."</td><td>".$ligne['DateResDeb']."</td></tr>";
       echo "</table>";
       echo "<hr>";
       echo "</body>";
       echo "</html>";  
       }
       else
       {
       echo "Aucun résultat ne correspond à votre recherche" ;
       }
       mysql_close();  
    ?>

  11. #11
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 102
    Points : 58
    Points
    58
    Par défaut
    Peut-être en ajoutant une accolade fermante avant ton else....
    Vérifie un peu ton code avant de poster direct quand ça ne marche pas...

  12. #12
    Invité
    Invité(e)
    Par défaut
    je doit la placer apres "echo "Aucun résultat ne correspond à votre recherche" ;" ? ce qui en donnera 2 c'est bien cela ? parce que la j'utilise le bloc note et je ne peut tester...

  13. #13
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Citation Envoyé par oneTime Voir le message
    Peut-être en ajoutant une accolade fermante avant ton else....
    lis un peu mieux ce qu'on te conseille

    Il suffit de compter : une ouvrante pour le if et une ouvrante pour le while dans le if, ça fait deux à fermer avant le else.
    Et tu peux peut-être changer d'EDI...

  14. #14
    Invité
    Invité(e)
    Par défaut
    Voila ca marche !!!
    merci a vous...
    maintenant je vais m'attaquer a la pagination sans doute le plus dur
    Quel editeur me conceiller vous ?

  15. #15
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372

  16. #16
    Invité
    Invité(e)
    Par défaut
    Je pense avoir trouver... je vais faire les jointure de mes tables en effet elle ont toutes le meme le cp... si cela ne marche pas je vous tiens au courrant.
    merci a vous

  17. #17
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par SphynXz Voir le message
    essaye de faire SELECT DISTINCT * au lieu de SELECT *

    et dit nous ce que cela produit
    Je viens de tester cela mais toujours le même problème...

Discussions similaires

  1. [MySQL] Problème moteur de recherche php avec base donnée Mysql
    Par hotwheals dans le forum PHP & Base de données
    Réponses: 19
    Dernier message: 28/06/2011, 10h06
  2. Moteur de recherche PHP - Ajax - Jquery - SQL
    Par visual3d dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 20/05/2009, 16h45
  3. Moteur de recherche => PHP ou XML ?
    Par caledonien dans le forum Langage
    Réponses: 6
    Dernier message: 09/03/2007, 10h58
  4. [MySQL] Moteur de recherche PHP
    Par bressan dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/10/2006, 13h27
  5. [SQL] Classement et moteur de recherche PHP
    Par fabrice78 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 10/07/2006, 12h21

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