Accueil > Forum > > > > Recherche dans une table avec un ou plusieurs critères
Recherche dans une table avec un ou plusieurs critères
vendredi 10 février 2006 à 09:56:36 |
Recherche dans une table avec un ou plusieurs critères

murrigane
|
Bonjour,
J'essais de créer d'après un formulaire, une recherche sur un ou plusieurs critères :
Le champ 1 est une liste déroulante, le champ 2 c'est du texte, le champ 3 liste déroulante et le champ 4 liste déroulante également. Je sais pas si ca peut vous être important de la savoir, mais bon je me suis dit que de le préciser serait pas mal. Ensuite cette recherche s'effectue sur une table qui s'appel Client. le champ 1 correspond à la région du client, le champ 2 au deux premières lettres du département, le champ 3 si il est professionnel ou particulier, le champ 4 le type d'envois (transporteur, la poste, etc...) Donc voilà, alors théoriquement je vois à peu près comment faire, pour le champ 1 je fais dans la requête : WHERE region=$_POST['champ1'] pour le champ 2 je fais un LIKE avec le % placé de façon à ne comparer que les deux première lettres du code postal et pour les deux autres champs je fais comme pour le champ1
Si je n'ais qu'un seul poste de passé, bon rien de bien compliqué, mais là où je n'arrive plus à gérer c'est quand 3 ou 4 champs sont passés. Je peux décomposé avec des if toutes les possibilités mais ca risque de faire quelque chose de pas très propre. J'ai regardé dans des codes sources, j'en ai trouvé un qui pourrait fonctionner mais comme je n'arrive pas à en comprendre le fonctionnement je préfère ne pas l'utiliser. Quelqu'un aurait-il une solution assez simple à me proposer ? Merci d'avance 
|
|
vendredi 10 février 2006 à 10:31:23 |
Re : Recherche dans une table avec un ou plusieurs critères

obcstaff
|
Réponse acceptée !
Je te passe un moteur de recherche qui pourrait correspondre a tes
attentes. Il doit surement exister un moteur meilleur mais je ne suis
que debutant alors il n'est pas trés complexe mais correspondra a ce
que tu recherche. Ici mon code traite de 3 critere de recherche:
<?
//On regarde s'il y a quelques choses de poster:
if(extract($_POST))
{
//On assigne des variables aux post envoyé:
$num_fichier = $_POST['num'];
$nom_fichier = $_POST['nom'];
$jours = $_POST['jours'];
$mois = $_POST['mois'];
$annee = $_POST['annee'];
$date = $jours."-".$mois."-".$annee;
if(empty($num_fichier) AND empty($nom_fichier) AND ($jours == 0 OR $mois == 0 OR $annee == 0))
{
echo("Vous
n'avez pas entré de critére de recherche, vous allez être redirigé
automatiquement.");
?><script
language="JavaScript">setTimeout("window.location='recherche.php'",5000);</script><?
}
elseif(($jours == 0 OR $mois == 0 OR $annee == 0) AND !empty($num_fichier) AND !empty($nom_fichier))
{
$sql = "SELECT
* FROM fichier, diffusion WHERE num_fichier = '$num_fichier' AND
nom_fichier LIKE '%$nom_fichier%' AND fichier.num_diffusion =
diffusion.num_diffusion";
$result = mysql_query($sql);
//affiche ton resultat
}
elseif(($jours == 0 OR $mois == 0 OR $annee == 0) AND empty($num_fichier) AND !empty($nom_fichier))
{
$sql = "SELECT
* FROM fichier, diffusion WHERE nom_fichier LIKE '%$nom_fichier%' AND
fichier.num_diffusion = diffusion.num_diffusion";
$result = mysql_query($sql);
//affiche ton resultat
}
elseif(($jours == 0 OR $mois == 0 OR $annee == 0) AND empty($nom_fichier) AND !empty($num_fichier))
{
$sql = "SELECT
* FROM fichier, diffusion WHERE nom_fichier = '$num_fichier' AND
fichier.num_diffusion = diffusion.num_diffusion";
$result = mysql_query($sql);
//affiche ton resultat
}
elseif($jours != 0 AND $mois != 0 AND $annee != 0 AND empty($nom_fichier) AND empty($num_fichier))
{
$sql = "SELECT
* FROM fichier, diffusion WHERE date_fichier = '$date' AND
fichier.num_diffusion = diffusion.num_diffusion";
$result = mysql_query($sql);
//affiche ton resultat
}
elseif($jours != 0 AND $mois != 0 AND $annee != 0 AND empty($nom_fichier) AND !empty($num_fichier))
{
$sql = "SELECT
* FROM fichier, diffusion WHERE date_fichier = '$date' AND num_fichier
= '$num_fichier' AND fichier.num_diffusion = diffusion.num_diffusion";
$result = mysql_query($sql);
//affiche ton resultat
}
elseif($jours != 0 AND $mois != 0 AND $annee != 0 AND empty($num_fichier) AND !empty($nom_fichier))
{
$sql = "SELECT
* FROM fichier, diffusion WHERE date_fichier = '$date' AND nom_fichier
LIKE '%$nom_fichier%' AND fichier.num_diffusion =
diffusion.num_diffusion";
$result = mysql_query($sql);
//affiche ton resultat
}
elseif($jours != 0 AND $mois != 0 AND $annee != 0 AND !empty($nom_fichier) AND !empty($num_fichier))
{
$sql = "SELECT
* FROM fichier, diffusion WHERE date_fichier = '$date' AND num_fichier
= '$num_fichier' AND nom_fichier LIKE '%$nom_fichier%' AND
fichier.num_diffusion = diffusion.num_diffusion";
$result = mysql_query($sql);
//affiche ton resultat
}
}
//S'il y a rien d'envoyé on affiche le formulaire:
else
{?>
Vous pouvez effectuer une recherche de fichier, d'archive, de note par les critéres suivant:<br>
- Numéro de fichier<br>
- Nom de fichier<br>
- Date du fichier<br>
<form method='post' action='recherche.php'>
<table align='center'>
<tr>
<td>Entrer un numéro de fichier:</td>
<td>
<input type='text' name='num'
size='20'>
</td>
</tr>
<tr>
<td>Entrer un nom de fichier:</td>
<td>
<input type='text' name='nom'
size='20'>
</td>
</tr>
<tr>
<td align='center'>Selectionner le
jour</td>
<td>
<select name='jours'
size='1'>
<option
value='0'></option>
<?php
$sql = "SELECT * FROM jours";
$result = mysql_query ($sql);
while ($result2 =
mysql_fetch_object ($result))
{
echo("<option
value='$result2->num_jour'>$result2->num_jour</option>");
}
?>
</select>
</td>
</tr>
<tr>
<td align='center'>Selectionner le
mois</td>
<td>
<select name='mois'
size='1'>
<option
value='0'></option>
<?php
$sql = "SELECT * FROM mois";
$result = mysql_query ($sql);
while ($result2 =
mysql_fetch_object ($result))
{
echo("<option
value='$result2->num_mois'>$result2->nom_mois</option>");
}
?>
</select>
</td>
</tr>
<tr>
<td align='center'>Selectionner
l'année</td>
<td>
<select name='annee'
size='1'>
<option
value='0'></option>
<?php
$sql = "SELECT * FROM annee";
$result = mysql_query ($sql);
while ($result2 =
mysql_fetch_object ($result))
{
echo("<option
value='$result2->num_annee'>$result2->num_annee</option>");
}
?>
</select>
</td>
</tr>
<tr align='center'>
<td align='center'>
<input type='submit'
value='Envoyer'>
</td>
</tr>
</table>
|
|
vendredi 10 février 2006 à 10:32:58 |
Re : Recherche dans une table avec un ou plusieurs critères

obcstaff
|
Voila essaye avec ca et di moi quoi si tu as un probleme ou situ ne
comprend pas une partie du code....voilivoilou...
++
*-*
|
|
vendredi 10 février 2006 à 11:15:16 |
Re : Recherche dans une table avec un ou plusieurs critères

murrigane
|
Bonjour obcstaff !
Merci beaucoup de m'avoir répondu aussi vite c'est très sympa de ta part de me passer ton script qui m'a l'air compréhensible pour mon niveau ! Je vais le tester et essayer de l'adapter à mes besoins. Par conte si je peux me permettre je vais te faire une suggestion au niveau de ton extract, il faudrait que tu l'utilise comme ceci : extract($_POST,EXTR_SKIP) J'avais posté une fois un bout de script sur le forum avec un extract($_POST) et quelqu'un m'avait dit qu'il ne fallait pas le faire, sinon cela créer un trou de sécurité a moin de l'écrire : extract($_POST,EXTR_SKIP)

Je vais tester ton code et reviens de suite pour raconter ce qu'il m'arrive 
|
|
vendredi 10 février 2006 à 11:44:47 |
Re : Recherche dans une table avec un ou plusieurs critères

murrigane
|
Désolée pour le texte écrit tout gros ...... C'était pas pour mettre mes trucs en évidence mais j'ai fait une mauvaise manip' avec la taille des caractères ...
Vraiment désolée !
|
|
vendredi 10 février 2006 à 11:48:09 |
Re : Recherche dans une table avec un ou plusieurs critères

obcstaff
|
Je te retourne le remerciement car je suis moi meme débutant, alors toute suggestion est la bienvenue, ok pour le EXTRACT($_POST,EXTR_SKIP) mais juste une question, qu'est ce que cela signifie le extr_skip? Peut tu me renseigner stp?
Merci et n'hésite pas a poser des questions sur mon code...et si tu
vois une autre suggestion, fais toi plaisir....lol ++
|
|
vendredi 10 février 2006 à 11:49:37 |
Re : Recherche dans une table avec un ou plusieurs critères

obcstaff
|
Dsl également pour l'ecriture en gros mais je ne pense pas que ce soit
de notre faute car je n'ai fais aucune fausse manipulation.....ca ne
vient pas de nous en tout cas!!! looool
++
|
|
vendredi 10 février 2006 à 11:50:41 |
Re : Recherche dans une table avec un ou plusieurs critères

obcstaff
|
c'est parcequ'il reste sur l'ecriture en gros aprés le: EXTR_SKIP mdr
|
|
vendredi 10 février 2006 à 12:11:46 |
Re : Recherche dans une table avec un ou plusieurs critères

Anthomicro
|
Réponse acceptée !
<? //On regarde s'il y a quelques choses de poster: if(extract($_POST)) { //On assigne des variables aux post envoyé: $num_fichier = $_POST['num']; $nom_fichier = $_POST['nom']; $jours = $_POST['jours']; $mois = $_POST['mois']; $annee = $_POST['annee']; $date = $jours."-".$mois."-".$annee; belles failles de sécurité :-) EXTR_SKIP dans les paramètres du extract, et puis aussi les isset sur les variables, le <?php au lieu de <?...
|
|
vendredi 10 février 2006 à 13:27:39 |
Re : Recherche dans une table avec un ou plusieurs critères

murrigane
|
EEeuu extract(extr_skip) ben ca veut dire, eeeeeeuuuu ...... Skip l'extraction et ne prends que le nom des variables  Honnetement je ne sais pas exactement ce que cela veut dire, par déduction j'ai supposé la définition plus haut, mais bon ce n'est pas parole d'évangile ! J'ai regardé dans ma bible ... J'avais rien à ce sujet ! Sinon pour les <? au lieu de <?php, oui c'est une erreur, d'ailleurs avec php5 si je ne me trompe pas si tu mets pas <?php aucune partie de ton code ne s'affiche ... .Mais là encore je peux me tromper. Pitetre qu'un spécialiste passera dans le coin et l'expliquera. Bon je retourne me prendre la tête sur les elseif..... J'ai presque toutes mes différentes valeurs de recherche qui fonctionnent excéptés une seule ... C'est rageant !! Je reviens plus tard !
|
|
Cette discussion est classée dans : table, recherche, liste, champ, critères
Répondre à ce message
Sujets en rapport avec ce message
recherche dans une table [ par 01cod10 ]
J'aimerai afficher la liste de tous les membres ayant comme sexe femme dont l'age est compris entre 30 et 35 et une photo je sais que je dois utilise
recherche dans une base de donne d'un champ avec des selection [ par temanizied ]
est ce que je peut trouver un code php/mysql qui permet la recherche dans la base : - d'un champ de saisie de type text - et 3 liste de selection :
Afficher le dernier enregistrement d'une table SQL [ par forumcafe ]
Bonjour je désire affiché via un script php le dernier champ d'une table via un champ précis.Bizarrement parfois celui ci marche et parfois non, si je
probleme pour lier une checkbox à un champ texte [ par extremenet ]
Bonjour,je viens ici car cela fait tres long moment que je n'arrive pas à trouver la solution à mon probéme :J'ai créé un tableau suivant les donné d
liste deroulante [ par georgesm ]
Bonjour,Je cherche de l'aide après avoir bien explorer le forum. Voici mon "petit"problème.J'ai une bd avec trois tables: table UN , table DEUX et tab
modifier dans ma table créer dans une base de donnee [ par hindweb ]
bonjour a tousj'ai créer une base de donnéé(gestion) et une table(employe) avec 12 champ(nom,prenom,cin,poste,date,extrait,cv,diplome,categorie,experi
pb dans le remplissage d'une table de la base de données [ par angeimaginaire ]
bjr pour ts,qlqun m aider svp, j'ai un pb au lieu de modification des données d'une table 'membre' à travers d'un formulaire dans lequel j'ai récupér
Inserér une longue liste dans une table [ par med93100 ]
J'aimerais insérer une longue listeXX1XX2XX3XX4.....XXX100J'aimerais rentrer toute ces valeurs d'un seul coup dans une table SQL Comment faire? Merci
base de donnée access affichage de champ [ par copou ]
Bonjour, je réalise une base de donnée sous ACCESS pour gérer des stocks pour un entreprise ou je suis en apprentissage et je rencontre deux trois pro
Update php d'une liste [ par sirgeese ]
Bonjour à tous, J'ai une table que je souhaite mettre à jour régulièrement pour assurer un suivi quotidien de mes médias. Pour se faire, je doit créer
Livres en rapport
|
Derniers Blogs
ROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGEROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGE par Matthieu MEZIL
Si vous utilisez Roslyn et que vous vous voulez vous simplifier le code du code rewriter, je vous conseille d'installer mon NuGet package RoslynHelper ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko
Forum
SELECTSELECT par hab2oo
Cliquez pour lire la suite par hab2oo
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|