Moteur de recherche php

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 php

Re: Moteur de recherche php

par Mazarini » 23 juin 2011, 11:45

Bonjour,

Hors les problèmes relevés par moogli,

$sql = mysql_query("SELECT * FROM cp_insee WHERE Departement LIKE '%PAS DE CALAIS%') or die (mysql_error());
Il faut mettre les chaines de caractère entre quote Et Je pense que $pas est une faute de frappe.

Eventuellement :
$departement = 'PAS DE CALAIS'
$sql = mysql_query("SELECT * FROM cp_insee WHERE Departement LIKE '%$departement%') or die (mysql_error());

Autrement list doit contenir 1 variable par élément du tableau. Hors tu fais select * donc tu as autant d'éléments que de colonnes dans la table.
List n'est pas une bonne idée surtout avec un "select *".
En général on fait plutot :
$ligne = mysql_fetch_array(...)
et on utilise $ligne[0], $ligne[1] selon l'ordre des colonnes
ou $ligne['CP']... selon les noms de colonne

Remarque : Pour list() et $ligne[0], il vaut mieux indiquer les noms de colonne et ne pas faire select * sinon une inversion de colonne, un ajout de colonne et ton script est à revoir. Je préfère $ligne['CP']

Re: Moteur de recherche php

par moogli » 22 juin 2011, 19:49

il te faut mysql_connect et mysql_selected_db avant le mysql_query ;)


@+

Re: Moteur de recherche php

par malcolm1482 » 22 juin 2011, 13:11

Bonjour tout le monde je vous écris pour un soucis que je ne maitrise pas.

Voila j'ai mis en place ce petit moteur, mais je ne comprends ce qui est faux dans la structure
selon moi, le problème viendrait de la
$colonne1
et du fait qu'il n'yai pas de
$Table = 'cp_insee'
J'ai essayé de remplir ca mais en vain

Je sais que ca prend 3 secondes à un spécialiste, mais là je sèche

Je vous joins le code php du moteur et la base sql.
http://www.megaupload.com/?d=TT7NWHPB
Merci d'avance
<?php
// database settings 
$Host = 'localhost'; 
$User = 'root'; 
$Pass = ''; 
$Base = 'test';
// mysql table :
?>
 
<?php

// Le moteur:
?> <html>
<form method="POST" action=""> 
Rechercher un mot : <input type="text" name="recherche">
<input type="SUBMIT" value="Rechercher"> 
</form>
</html> <?php

// Récupère la variable
$recherche = isset($_POST['recherche']) ? $_POST['recherche'] : '';
// la requete mysql$colonne1 = Departement;
$sql = mysql_query("SELECT * FROM cp_insee WHERE Departement LIKE %$PAS DE CALAIS%") or die (mysql_error());

// affichage du résultat
while(list($colonne1) = mysql_fetch_array($sql)){echo 'Resultat de la recherche: '.$colonne1.' <br />';}
?>

en cliquant j'obtient
( ! ) Notice: Undefined variable: PAS in C:\wamp\www\moteur\code_source.php on line 23
Call Stack
# Time Memory Function Location
1 0.0005 368992 {main}( ) ..\code_source.php:0

No database selected

Re: Moteur de recherche php

par malcolm1482 » 19 juin 2011, 13:27

Bonjour moogli merci pour la réactivité
Je vois que je ne peux rien te cacher. Effectivement je débute en php.
J'utilise le livre du siteduzero et malheureusement il ne mentionne pas le moteur de recherche. :(
Cependant grâce à ce site et ton aide je sens que j'ai moyen de m'en sortir
Merci encore.

je te joins la base sql de cp_insee au lien suivant http://www.megaupload.com/?d=TT7NWHPB
comme ça tu pourras la tester.

Sinon avec le livre bleu du siteduzero (que je conseille pour les débutants comme moi, car il part vraiment de la base) j'avais réussi grâce a ce livre à afficher une base sql en php mais pas à faire un moteur c'est un problème de requête je pense.

Merci encore

enfin le but à terme de ce moteur est de faire un catalogue de données où en cherchant j'obtiens les résultats + un petit résumé et la possibilité d'ouvrir la fiche de données.

Selon moi pour réaliser ce projet j'aurai une base de données avec toutes mes infos avec une colonne avec type de données, auteur, date, projection, échelle,... résumé
et de l'autre coté mon formulaire html où figure mon moteur, comme tu me l'a expliqué
Ensuite je verrai comment rediriger ma recherche vers une page html ou autre mais je n'en suis pas encore la. Tu sais tout maintenant

Voila voila merci encore

Re: Moteur de recherche php

par moogli » 18 juin 2011, 16:22

salut,

un moteur de recherche basique oui c'est simple a réaliser c'est un égale dans une requête, par contre un vrai moteur de recherche fiable, efficace et surtout pertinent c'est loin d'être extrêmement simple (sinon il existerais des google a tous les coins du net ;) )

première chose : est ce que tu débute en php ? (je pense que c'est le cas au vue des questions).

Pour ce qui est du fonctionnement de php / mysql je t’envoie vers l'introduction de phpdebutant.org http://phpdebutant.org/article118.php.
Par exemple phpmyadmin est un script php qui permet d’administrer en ligne un ou plusieurs mysql, il va te permettre de tester ta requête, de créer et d'alimenter rapidement une table mais ne va pas faire ton script php ;) (enfin si tu lui demande gentiment il te fournis celui de la requête ;)).

donc il y a deux choses pour le moteur de recherche :
- le formulaire HTLM qui demande la (ou les ?) commune(s) dont on recherche le code
- le traitement php du formulaire
le formulaire c'est relative simple (une seule commune), c'est donc un champ texte et un bouton submit (pour le html tu peux regarder sur http://fr.selfhtml.org), pour le traitement d'un formulaire sur phpdebutant.org dans les tutos ;)

le formulaire te fournit qui servir de paramètre à la requête SQL, une fois encore on va séparer, il faut créer la requête SQL et tester (avec phpmyadmin, on la onsole mysql, n'importe quel soft sachant se connecter a un serveur mysql et exécuter une requête dessus, par exemple mysql workbench) avant de la tester.

pour l'apprentissage du SQL un site http://sqlpro.developpez.com c'est très complet, pas toujours pédagogique pais utile ;)

la requête de base : select CP,INSEE from CP_INSEE where communes='Arras'; cette requête testée avec phpmyadmin devrait t'afficher ce que tu souhaite ? ;)

Prolème je suis feignant et j'écris, dans le formulaire, arras au lieu de Arras (ou l'inverse la table contient arras et l'on met Arras) : ta requête ne fournit pas de réponse car la recherche est sensible a la casse (minuscule / majuscule) et la c'est le drame :)

il existe bien entend des solutions : le mot clef like et ses jokers, la recherche fulltext, ou les soundex (et surement d'autre que je ne connais pas), la solution http://blog.developpez.com/sqlpro/p9344 ... search-no/ va te permettre de donner un ordre de pertinence et afficher des résultat connexe. Le truc c'est que c'est un poil plus complexe a mettre en place (mais pas impossible :mrgreen: ).

la partie php de ce que tu souhaite faire est vraiment minime et peut (doit :)) être séparée du SQL, une fois que tu arrive a faire ce que tu veux avec tes données depuis une console, tu aura une petite heure de travail pour l'implanter avec php.

Pour ce qui est des requetes vers le SGBD je te conseil PDO (si tu utilise php 5, ce qui devrais être le cas partout maintenant), cela te permettera d'avoir un code non dépendant du serveur de données :)

je sais que tout cela est assez soporifique, mais tu a toute les clefs. si tu a des soucis en cours de réalisation pas de soucis on est toujours la ;)

question subsidiaire : peut tu me dire ou je peux trouver la structure de la table et ses données pour je puisse tester aussi ? merci ;)


@+

Moteur de recherche php

par malcolm_1482 » 18 juin 2011, 15:39

Bonjour tout le monde, je vous écris pour un soucis qui m'embête depuis quelques semaines, voila je dois créer un moteur de recherche qui interroge une base de données MySQL.

Je vais essayer d'être directif pour être simple

Outils
Je travaille avec wampserver et donc phpadmin
Ma base de données s'appelle "test" et ma table s’appelle CP_INSEE
CP_INSEE contient 4 colonnes
communes
CP
Departement
INSEE

Objectif
En tapant le nom de la commune, j'obtienne le Code Postal et le code Insee de la commune.

Problème
Quel que soit le moteur de recherche que je trouve sur internet (commentçamarche, siteduzero, easy-script...), je ne parvient pas à faire marcher ma requête j'écris ma commune, exemple Arras et rien ne se passe.

Question
Je voulais savoir comment régler ce problème.
Ou dois je mettre ma page html ou php dans mon serveur wamp?
Est-ce que je dois avoir la table en .sql a coté de ma page o figure mon code?
Lorsque l'on tape la requête dans MySQL faut-il sélectionner tous mes individus (lignes) avant de créer sa requête ...

J'ai l'impression d'être très bête quand je lis partout que l'on dit qu'un moteur est très simple a réaliser.

Merci d'avance