moteur de recherche

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : moteur de recherche

par Invité » 11 févr. 2008, 23:42

Merci pour ta précieuse aide cyrano effectivement maintenant mon affichage est bien meilleur.

J'essaye maintenant de mettre une nouvelle donnée, à savoir "type", incluant soit une maison, soit un appartement. J'ai donc tout normalement introduit une nouvelle variable, appelée $type que j'ai insérée dans mon code.

Comme mes fonctions se font par "exclusion" des cases que je n'ai pas cochées (c'est-à-dire par exemple si je n'ai indiqué aucune commune, affiche-moi le type et le nombre de pièce), j'ai donc là encore réajusté le code. Tout fonctionne et s'affiche, sauf lorsque je ne rentre que l'un des trois paramètres, alors que les données correspondantes existent dans ma base de données.

Cela donne le bout de code suivant :
elseif ($piece == 'no' AND $commune == 'no') 
{ 
        $reponse = mysql_query('SELECT * FROM maisons where type = \''.$type.'\'') or die (mysql_error()); 
} 
elseif ($piece == 'no' AND $type == 'no') 
{ 
        $reponse = mysql_query('SELECT * FROM maisons where commune = \''.$commune.'\'') or die (mysql_error()); 
} 
elseif ($type == 'no' AND $commune == 'no') 
{ 
        $reponse = mysql_query('SELECT * FROM maisons where piece = \''.$piece.'\'') or die (mysql_error()); 
} 
Donc lorsque je sélectionne un seul des trois champs, le tableau des données apparaît, mais rien ne s'affiche. J'ai essayé toutefois de remplacer "AND" par "OR" , ce qui m'a peu convaincu dès le départ, et effectivement, cette option était à priori complètement débile : aucun affichage non plus.

J'aimerais comprendre...

par Cyrano » 11 févr. 2008, 07:24

Logique encore une fois : tu as rajouté des echo() à l'intérieur d'un print(), ce qui est parfaitement inutile. Essaye comme ceci :
<?php
while(false != ($maison = mysql_fetch_assoc($reponse))) //prends-moi toutes les maisons une par une qui sont dans la réponse
{
       print ("
           <tr>
               <td>". $maison['piece'] ."</td>
               <td>". $maison['commune'] ."</td>
           </tr>
       ");
}

mysql_close(); // Déconnexion de MySQL
?>

par Invité » 10 févr. 2008, 23:55

Maintenant que l'appel de mes deux données marchent, je voudrais améliorer mon affichage, car il n'était pas top dans la script initial (les données s'affichent à la suite sans espace).

Bref, j'ai créé mon petit tableau dans lequel devraient s'afficher mes données, mais bien évidemment, après quelques corrections de mon script, elles ne s'affichent pas.

Voilà ce que donne mon bout de code :

Code : Tout sélectionner

<?php while($maison = mysql_fetch_assoc($reponse)) //prends-moi toutes les maisons une par une qui sont dans la réponse { print (" <tr> <td> echo $maison['piece']; </td> <td> echo $maison['commune']; </td> </tr> "); } mysql_close(); // Déconnexion de MySQL ?>
lorsque je lance une recherche, le message suivant s'affiche :

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

Je dois avoir un problème de ponctuation dans mes echo, pourtant ils s'écrivent normalement comme je l'ai fait si je m'en réfère à la documentation. Sûrement un cas particulier avec l'ouverture des balises html...

Help !

par Invité » 09 févr. 2008, 23:11

Je dois vraiment être trop crevé... :D Enfin ça marche !!! Merci beaucoup !!!

Je vais pouvoir faire mumuse avec mon code maintenant que j'ai tout compris

Cordialement zen,

Lhamo

par Cyrano » 09 févr. 2008, 23:01

Logique, tu as écrit mysql_fetch_assos au lieu de mysql_fetch_assoc

par Invité » 09 févr. 2008, 22:58

j'ai corrigé comme ceci :

Code : Tout sélectionner

while($maisons = mysql_fetch_assos($reponse))
Est-ce que ma correction est bonne ? Dans tous les cas, ça m'affiche l'erreur suivante :

Code : Tout sélectionner

Fatal error: Call to undefined function mysql_fetch_assos() in C:\wamp\www\zero\tutorial\resultat.php on line 40

par zeus » 09 févr. 2008, 22:44

en fait, le simple égal était bien puisque tu dois faire une affectation et non pas tester l'égalité.
Par contre, mysql_fetch_assoc() est une fonction ... donc avec des parenthèses ...

Il faut toujours commencer par le message d'erreur qui te donne les indications nécessaires à la résolution ;)

par Invité » 09 févr. 2008, 22:27

Pffffffffiouuuuuuuuu !

Honnêtement, ça fait des heures que je suis penché sur ce code, à force je n'y vois plus très clair.
En temps habituel, j'aime bien jouer aux devinettes, mais là je sèche.

J'ai quand même procédé à des modif :

- j'ai mis un joli s à maison, car le nom de ma table en comporte un ;

- j'ai mis un double = pour signifier que la valeur doit être exactement égale.

ça donne :
while($maisons == mysql_fetch_assos$reponse)
Si la bonne réponse se trouvait dans les propositions que je viens de faire, j'ai l'honneur de vous dire que ça marche toujours pas :
"Parse error: syntax error, unexpected T_VARIABLE in C:\wamp\www\zero\tutorial\resultat.php on line 40"

Si je suis complètement à côté de la plaque, est-ce que je brûle néanmoins ou suis-je plutôt froid ? Sinon un indice svp, pour ne pas dire "la soluce par pitiéééééééééé " :(

Merci

Lhamo, en train de péter un plomb de sa zen attitude tout ça à cause de ce fichu code

par @rthur » 09 févr. 2008, 20:41

Bonjour,

Regarde ce que tu as mis comme condition dans ton while() ;)

##edit: grillé! :)

Re: moteur de recherche

par Jules Petibidon » 09 févr. 2008, 20:40

Ca provient à priori de ma boucle while.

Quelqu'un peut-il m'aider à résoudre ce problème.
Hello, tu as bien identifié le probleme :)

Code : Tout sélectionner

while($maison = mysql_fetch_assos$reponse)
Relis bien ce que tu as écrit. Y'a rien qui te brule les yeux ?

moteur de recherche

par lhamo » 09 févr. 2008, 19:41

Bonjour je débute en php, j'ai potassé mes cours et je cherche à mettre au point un moteur de recherche interne conversant avec une base de bonnée immobilière.

Voici mon script de recherche :
<?php
mysql_connect("localhost", "root", "");

mysql_select_db("locatif"); // Sélection de la base


//// Définition des variables
$piece = mysql_real_escape_string($_POST['piece']);
$commune = mysql_real_escape_string($_POST['commune']);
 
 
//// Liste des requetes
if($piece == 'no' AND $commune == 'no' )//si valeur des deux = no
{
        $reponse = mysql_query('SELECT * FROM maisons ORDER BY id') or die (mysql_error());//va me chercher dans la bdd la liste entière
}
elseif($piece=="no" )
{
        $reponse = mysql_query('SELECT * FROM maisons where commune = \''.$commune.'\'') or die (mysql_error());
}
elseif ($commune=="no" )
{
        $reponse = mysql_query('SELECT * FROM maisons where piece = \''.$piece.'\'') or die (mysql_error());
}
else
{
        $reponse = mysql_query('SELECT * FROM maisons where piece = \''.$piece.'\' and commune = \''.$commune.'\'') or die (mysql_error());
}
 
echo '<h2>Voici les résultats de votre recherche</h2>';
 
while($maison = mysql_fetch_assos$reponse) //prends-moi toutes les maisons une par une qui sont dans la réponse
{
        echo $maison['piece'];//affiche-moi la donnée correspondante de la BDD
        echo $maison['commune'];
}


mysql_close(); // Déconnexion de MySQL
?>
Et voilà donc l'erreur que ça m'affiche : Parse error: syntax error, unexpected T_VARIABLE in C:\wamp\www\zero\tutorial\resultat.php on line 40.

Ca provient à priori de ma boucle while.

Quelqu'un peut-il m'aider à résoudre ce problème.

P.S. : je sais que ce script n'est pas optimisé, mais je le comprends parfaitement, je cherche juste à résoudre ce problème pour qu'il tienne la route. Inutile donc de me proposer des codes entièrement refaits à votre sauce.

Merci d'avance