Page 1 sur 2

bonjour demande aide pour un moteur de recherche multi critè

Posté : 23 mai 2008, 11:57
par MR73PHP
je debute en php 5 sous vista et wamp2

j' ai creer une base de donnéés :NOM DE LA BASE : "recherche"
NOM de la table :"famille"
avec des champs: "Nom,pren,om,date,lieu,cp"

ma requete sql serai ?
SELECT * FROM famille WHERE Nom LIKE '%rechercher%' ORDER BY id;

pourrai-je avoir de l' aide pour le demmarrage ainsi que la cherche voici comment?

a) Ceer un menu déroulant MR ou MRS ou MELLE.
se serai la permiere selection mais il faudrai rempli une autre case dans la recherche pour avoir le ou les réponse(s)

-le mode de recherche serai basé sur:

titre :BIENVENUE DANS L' ESPACE RECHERCHGE;

DONC:
selectioner :MR (menu déroulant)
MRS
MELLE

-ET:

RECHERCHER PAR NOM ::::::::::::::::::::::::::::::::::: /rechercher/

RECHERCHER PAR Prenom :::::::::::::::::::::::::::::: /rechercher/

RECHERCHER PAR Date ::::::::::::::::::::::::::::::::::: /rechercher/

RECHERCHER PAR Lieu ::::::::::::::::::::::::::::::::::: /rechercher/

RECHERCHER PAR CP (pour code postal)..::::::::::::: /rechercher/

en réponse (donner le resultat intégrale exemple 'MR Dupont Georges 12/04/1972 PARIS'

-OU:

si la recherche n' abouti pas:

"AUCUN RESULTAT : NOUVELLE RECHERCHE..."

Voila j'ai essayé plusieurs code source, mais le plus prés que j' ai pu trouver :j'ecrire dans ma cherche est en réponser je n' avais rien...

Merci de votre aide .

Posté : 23 mai 2008, 12:41
par animithra
Bonjour
Voila j'ai essayé plusieurs code source, mais le plus prés que j' ai pu trouver :j'ecrire dans ma cherche est en réponser je n' avais rien...
Tu m'excuseras mais je n'ai pas saisi ce que tu voulais dire exactement ?

Si ta question portait sur la manière de faire la requête de recherche de manière automatisée, voici ma réponse :

Ton champ "rechercher par :" doit être une liste ou un bouton radio.
Si on considère que tu as associé un champ de saisie pour que l'utilisateur saisisse le nom/prénom/cp qu'il souhaite rechercher, et que tu as donné à ce champ le nom motCle, alors il faut procéder de la manière suivante :

Code : Tout sélectionner

on récupère le champ de la table sur lequel s'effectue le trie (résultat de la liste ou du bouton radio) on récupère la valeur à comparer (résultat du champ de saisie motCle) on redige la requete sur le modele : selectionne l'ensemble des données de la table famille où le champ *champ sur lequel on trie* est '%*motCle*%'
Rappel : si tu dois passer des paramètres dans une requête, tu dois rédiger comme ceci :
$requete = "SELECT * FROM table WHERE champ = '".$param."' ";
En espérant avoir répondu à ta question, bonne progra !

Posté : 23 mai 2008, 13:08
par MR73PHP
Merci de ta réponse mais pour que je sois claire dans ma demande et que sois soit compris:

Mon 1er choix:
Ton champ "rechercher par :c'est un menu déroulant on commence par selection :MR MRS MELLE.

et ensuite il faut que l' utlisateur écrive dans une des recherdches si dessous:


RECHERCHER PAR NOM :[===============] /rechercher/

RECHERCHER PAR Prenom: [=============] /rechercher/

RECHERCHER PAR Date: [===============] /rechercher/

RECHERCHER PAR Lieu: [===============] /rechercher/

RECHERCHER PAR CP: (pour code postal):[====] /rechercher/

en réponse (donner le resultat intégrale exemple 'MR Dupont Georges 12/04/1972 PARIS' .

Posté : 23 mai 2008, 13:17
par animithra
Question : à quoi sert la sélection Mme/Mlle/M si tu n'as pas une interprétation vis-à-vis de la base de données (un champ civilité par exemple) ?

Pour le reste, ce que j'ai répondu suffit :
tu récupères chaque paramètre (voir variables $_POST) et tu ajoutes ça aux conditions de ta requête (je te conseille de passer sur phpdebutant.org et de voir la rubrique sur les conditions dans les requêtes).

Bonne progra !

Posté : 23 mai 2008, 13:31
par MR73PHP
Le parmètre de la sélection "Mme/Mlle/Mr" sert justement à un champ civil
mais pour avoir une réponse l' utlisateur dois remplir un autre champ de recherche pour avoir la ou les réponse(s).

Merci encore pour ton aide..

Posté : 23 mai 2008, 13:42
par animithra
j' ai creer une base de donnéés :NOM DE LA BASE : "recherche"
NOM de la table :"famille"
avec des champs: "Nom,pren,om,date,lieu,cp"
Ce que je voulais dire c'est que tu n'as pas de champ civil dans ta table donc cette partie de ton formulaire ne sert pas vraiment.

Pour le reste tu procèdes ainsi :

Code : Tout sélectionner

ecriture d'une requete de base : selection de tous les éléments de la table famille si l'utilisateur a renseigné un nom alors on ajoute "où le nom est comme '%nomSaisi%'" à la requête de base finsi si l'utilisateur a renseigné un prénom alors on ajoute "où le prénom est comme '%prénomSaisi%'" à la requête de base finsi et de même pour chaque paramètre
bonne progra !

Posté : 23 mai 2008, 13:50
par MR73PHP
super merci mais ca ddonnerai quoi ca en lagage php et en requete en esperant pas trop abusé merci quand meme.

Posté : 23 mai 2008, 14:45
par animithra
C'est bizarre, mon petit doigt me dit que si j'ai écrit l'algorithme sous cette forme c'est pour que tu cherches un minimum par toi même, on est ici pour t'aider, non pour faire le boulot à ta place normalement.

Essai de chercher un peu, si ce soir tu n'as pas trouvé la solution je posterai une aide supplémentaire, mais je te recommande chaudement un détour par phpdebutant, le site est bien construit et apportera les réponses à tes questions.

Bonne progra !

re aide

Posté : 23 mai 2008, 14:55
par MR73PHP
tu c' est je suis sur ca depuis le début du mois, j' en dort trés mal la nuit enfin j' ai essayé plusieurs choses mais ca foire à chaque fois ..
Merci .

Posté : 23 mai 2008, 15:53
par cuisto44000
il va falloire jouer sur les conditions :
<?php

if (isset($_POST['formulaire'])) // si on a bien appelé cette page via le formulaire
    {
    // C'est ici que tu redigera tes conditions par exemple :
    $pseudo=$_POST['pseudo']; // déclaration des paramètres postés
    if ($pseudo!="")
        {
         // tape ta requete avec comme parametre ...WHERE pseudo='$pseudo'...
        }
    else if ('gerard'=='jean_claude') // Biensure ne tape pas ça, c'est pour te montrer comment passer plusieurs conditions
        {
        // autre requète avec les parametres adéquates
        }
    else // Tous les champs sont vides, alors on affiche un message d'erreur !
        echo 'Vous devez remplire au moins un champ pour que le requête s'effectue, merci !';
    }
else
    {
    echo 'Vous n' êtes pas autorisé à voir cette page'; //si cette page n'a pas étée appelée par le formulaire
    }

?>

Besoin de plus d'explications ? je te conseil de lire les tutoriels du http://siteduzero.com qui sont assez longs, mais qui te permettrons de tres tres bien comprendre le fonctionnement de php .

Enjoy ;)

Posté : 23 mai 2008, 16:34
par steph29
avant de regarder php, commence par regarder html.

La construction d'un formulaire se fait d'abord en html, ensuite le traitement peut se faire en php.

quelques balises a etudier:

form
input
select

une fois que tu as construit ton formulaire on pourra t'aider ;)

un peu de lecture pour le week-end ;)
http://www.siteduzero.com/tuto-3-6-0-ap ... e-web.html

Posté : 23 mai 2008, 17:25
par cuisto44000
avant de regarder php, commence par regarder html.

La construction d'un formulaire se fait d'abord en html, ensuite le traitement peut se faire en php.

quelques balises a etudier:

form
input
select

une fois que tu as construit ton formulaire on pourra t'aider ;)

un peu de lecture pour le week-end ;)
http://www.siteduzero.com/tuto-3-6-0-ap ... e-web.html
si il asimile tout ça en un WE ... :lol: ceci dit, les cours du site du zero sont les meilleurs du web selon moi, un peu longs certes, mais tellement complets et simples à comprendre ... ;) bonne lecture !

Posté : 24 mai 2008, 01:48
par MR73PHP
merci

dur dur

Posté : 25 mai 2008, 09:49
par MR73PHP
voila ou j' en suis maintenant
<html>
<head>
Bonjour et bienvenue sur votre espace recherche,

<p><font size="4" color="#800000"><b><u><i><br>Catégories:<br>
</i></u></b></font></p>
						  
<select name="choix?">         
         <option value="choix1">Nom  </option>
		 <option value="choix2">Prenom  </option>
		 <option value="choix3">Date de naissance </option>
		 <option value="choix4">Lieu de naissance  </option>
		 <option value="choix5">Departement  </option>
</select>	
<title>Moteur de recherche des fonctions PHP.</title>
</head>
<body>
    <p><font size="4" color="#800000"><b><u><i><br>
    Enfants recherché :Critères de sélèction<br>
    </i></u></b></font></p>    
    <form action="<? echo getenv('SCRIPT_NAME'); ?>" method="post">
     <p>Tapez le nom ou une partie du nom:
    <input type="text" name="fonction" size="25" maxlength="100"><br>
    <input type="submit" value="Chercher"></p>     
     <p>Tapez la date de naissance:
    <input type="text" name="fonction" size="25" maxlength="100"><br>
    <input type="submit" value="Chercher"></p>
	 <p>Tapez le lieu de naissance:
    <input type="text" name="fonction" size="25" maxlength="100"><br>
    <input type="submit" value="Chercher"></p>
	 <p>Tapez le Code postal:
    <input type="text" name="fonction" size="25" maxlength="100"><br>
    <input type="submit" value="Chercher"></p>
<?php
$jour = date("d");	
$mois = date("m");	
$annee = date("y");	

$heure =date("h");
$minute = date("i");	

echo "Nous sommes le $jour/$mois/$annee et il est $heure h $minute.";
?>
    </form>
	</head>

<?php
mysql_connect(localhost, root, ""); //LOGIN ET MOT DE PASSE
mysql_select_db(famille);      //connexion à la la basse de données

if (isset($_POST['rechercher'])) // si on a bien appelé cette page via le formulaire
              $requete = "SELECT * FROM famille WHERE Nom LIKE '%$recherche%' ORDER BY id"; // tape ta requete avec comme parametre ...WHERE pseudo='$pseudo'...
 {
    // C'est ici que tu redigera tes conditions par exemple :
 $pseudo=$_POST['pseudo']; // déclaration des paramètres postés //JE VOIS PAS A QUOI CA SERT CA??
 if ($pseudo!="")//JE VOIS PAS A QUOI CA SERT CA??
{
 $requete = "SELECT * FROM famille WHERE Nom LIKE '%$recherche%' ORDER BY id"; // tape ta requete avec comme parametre ...WHERE pseudo='$pseudo'...        
}
    else if ('gerard'=='jean_claude') // Biensure ne tape pas ça, c'est pour te montrer comment passer plusieurs conditions //JET UN COUP D 'OIEL AU SCRIPT 2
        {
        // autre requète avec les parametres adéquates
        }
    else // Tous les champs sont vides, alors on affiche un message d'erreur !
        echo 'Vous devez remplire au moins un champ pour que le requête s'effectue, merci !';
    }
else
    {
    echo 'Vous n' êtes pas autorisé à voir cette page'; //si cette page n'a pas étée appelée par le formulaire
    }

?>

Posté : 25 mai 2008, 20:20
par cuisto44000
if ($pseudo!="") cela veut dire si (le poseudo posté n'est pas null(vide))

pour que cette condition soit traitée, tu dois évidement nommer un de tes champs name="pseudo"...

et tu devra refaire cette requete pour chaque champ en changeant le $pseudo=$_POST['pseudo']; par $nom_de_ta_variable=$_POST['nom_de_ton_champ']; as tu compris cela?

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]