PHP - faire plusieurs recherches a la suite .
Résolu
Maskk
Messages postés
89
Date d'inscription
Statut
Membre
Dernière intervention
-
Maskk Messages postés 89 Date d'inscription Statut Membre Dernière intervention -
Maskk Messages postés 89 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je viens de créer une page recherche pour mon intranet ... (sous mssql par lien ODBC)
je fais un <select> pour prososer les champs et in <input> pour entrer le nom $requete .
Je vous montre une partie de mon code ;
$champ=$_POST['champ'];
$champ_add=$_POST['champ_add'];
$requete=$_POST['requete'];
$globale="WHERE $champ LIKE '%$requete%'";
$globale_add=$_POST['globale_add'];
$requete_add = htmlspecialchars($_POST['requete_add']);
if (isset($_POST['globale_add']))
{$globale=$globale." AND $champ_add LIKE '%$requete_add%'"};
$query = odbc_do($connexion,"SELECT patati patata... $globale ") or die (odbc_error());
Je m'etais dirigé dans ce sens ... malheuresement des qu'il prend en compte le 'globale_add' (qui est mon deuxieme bouton submit...) il ecrasera a chaque fois mon " AND $champ_add LIKE '%$requete_add% de plus j'ai l'impression qu'il perd le contenu exact de ma variable globale...
Je ne suis pas expert auriez vous une solution? Merci
Je viens de créer une page recherche pour mon intranet ... (sous mssql par lien ODBC)
je fais un <select> pour prososer les champs et in <input> pour entrer le nom $requete .
Je vous montre une partie de mon code ;
$champ=$_POST['champ'];
$champ_add=$_POST['champ_add'];
$requete=$_POST['requete'];
$globale="WHERE $champ LIKE '%$requete%'";
$globale_add=$_POST['globale_add'];
$requete_add = htmlspecialchars($_POST['requete_add']);
if (isset($_POST['globale_add']))
{$globale=$globale." AND $champ_add LIKE '%$requete_add%'"};
$query = odbc_do($connexion,"SELECT patati patata... $globale ") or die (odbc_error());
Je m'etais dirigé dans ce sens ... malheuresement des qu'il prend en compte le 'globale_add' (qui est mon deuxieme bouton submit...) il ecrasera a chaque fois mon " AND $champ_add LIKE '%$requete_add% de plus j'ai l'impression qu'il perd le contenu exact de ma variable globale...
Je ne suis pas expert auriez vous une solution? Merci
A voir également:
- PHP - faire plusieurs recherches a la suite .
- Easy php - Télécharger - Divers Web & Internet
- Comment faire une recherche à partir d'une photo - Guide
- Expert php pinterest - Télécharger - Langages
- Copiez la ligne qui indique aux moteurs de recherche de ne pas référencer la page. - Forum Réseaux sociaux
- Consultez le code source de cette page. copiez la ligne qui indique aux moteurs de recherche de ne pas référencer la page. ✓ - Forum Référencement
6 réponses
tiens un petit exemple: (remplaces champ1_bdd par les noms de tes champs de ta table)
<?php //si tu veux proposer plusieurs fois de suite la recherche, le plus simple est de traiter dans la même page // par le value="... on conserve le choix pre cedent au réaffichage //init $choix_champ=array(); //connexion BDD $cnx=mysql_connect("host","login","passw"); $db=mysql_select_db('ta_bdd'); if(isset($_POST['rechercher'])){ //recup des valeurs postées //les champs selectionnées sont dans un array dont l'index est le nom du champ_bdd $choix_champ=$_POST['champ']; //construction de la requette en fonctions des choix $req_rech="SELECT * FROM ta_table WHERE "; if(sizeof($choix_champ)>0){ $i=0; foreach($choix_champ as $champ=>$value){ if($i==0){ $req_rech.=" ".$champ."='".mysql_real_escape_string($value)."' "; }else{ $req_rech.=" AND ".$champ."='".mysql_real_escape_string($value)."' "; } $i++; } //la tu fais ta requette dans la BDD et l'affichage }else{ echo 'Vous devez choisir au moins un champ'; } } ?> <html> <body> <?php $req="SELECT DISTINCT champ1_bdd FROM ta_table"; $result=mysql_query($req); ?> <select name="champ['champ1_bdd']" > <?php while($donnees=musql_fetc_assoc($result)){ echo '<option value="'.$donnees['champ1_bdd'].''; if(in_array($donnees['champ1_bdd'],$choix_champ['champ1_bdd']){ echo selected="selected";} //ça c'est pour conserver le choix au réaffichage echo '">'.$donnees['champ1_bdd']..'</option>'; } ?> </select> <select name="champ['champ2_bdd']" > <?php while($donnees=musql_fetc_assoc($result)){ echo '<option value="'.$donnees['champ2_bdd'].''; if(in_array($donnees['champ2_bdd'],$choix_champ['champ2_bdd']){ echo selected="selected";} //ça c'est pour conserver le choix au réaffichage echo '">'.$donnees['champ2_bdd']..'</option>'; } ?> </select> <select name="champ['champ3_bdd']" > <?php while($donnees=musql_fetc_assoc($result)){ echo '<option value="'.$donnees['champ3_bdd'].''; if(in_array($donnees['champ3_bdd'],$choix_champ['champ3_bdd']){ echo selected="selected";} //ça c'est pour conserver le choix au réaffichage echo '">'.$donnees['champ3_bdd']..'</option>'; } ?> </select> <input type="submit" name="rechercher" value="rechercher" /> </body> </html>
$champ=>$value
ce n'est pas par objet, c'est une fonctionnalité de la boucle foreach pour parcourir un array
foreach parcours l'array en mettant l'index (ou clef) dans la première $champ et la valeur correspondante à cet index dans $value
if(in_array($donnees['champ1_bdd'],$choix_champ['champ1_bdd']){ echo selected="selected";} //ça c'est pour conserver le choix au réaffichage
Quand je met ton code j'ai une erreur de page.
si cette modif ne marche pas, qu'elle erreur ? et as tu bien remplacé 'champ1_bdd' par le nom réel du champ de ta bdd ?
$req="SELECT DISTINCT champ1_bdd FROM ta_table"; je dois dans ton cas mettre $champ_choix non ?
NON c'est pour afficher dans la liste select toutes les valeurs du champ (DISTINCT pour les avoir une seule fois si il y en a plusieurs), pareil remplaces champ1_bdd et ta_table par tes noms à toi
ce n'est pas par objet, c'est une fonctionnalité de la boucle foreach pour parcourir un array
foreach parcours l'array en mettant l'index (ou clef) dans la première $champ et la valeur correspondante à cet index dans $value
if(in_array($donnees['champ1_bdd'],$choix_champ['champ1_bdd']){ echo selected="selected";} //ça c'est pour conserver le choix au réaffichage
if(in_array($donnees['champ1_bdd'],$choix_champ){ echo selected="selected";}
Quand je met ton code j'ai une erreur de page.
si cette modif ne marche pas, qu'elle erreur ? et as tu bien remplacé 'champ1_bdd' par le nom réel du champ de ta bdd ?
$req="SELECT DISTINCT champ1_bdd FROM ta_table"; je dois dans ton cas mettre $champ_choix non ?
NON c'est pour afficher dans la liste select toutes les valeurs du champ (DISTINCT pour les avoir une seule fois si il y en a plusieurs), pareil remplaces champ1_bdd et ta_table par tes noms à toi
Alors voila j'ai pas mal testé deja pour le <select>
En fait une parenthese n'etait pas fermée
<?php
while($donnees=odbc_fetch_array($result)){
echo "<option value='".$donnees['titre']."";
if(in_array($donnees['titre'],$choix_champ)){ echo "selected='selected'";} //ça c'est pour conserver le choix au réaffichage
echo "'>".$donnees['nommat']."</option>";
}
?>
En fait une parenthese n'etait pas fermée
<?php
while($donnees=odbc_fetch_array($result)){
echo "<option value='".$donnees['titre']."";
if(in_array($donnees['titre'],$choix_champ)){ echo "selected='selected'";} //ça c'est pour conserver le choix au réaffichage
echo "'>".$donnees['nommat']."</option>";
}
?>
Bonjour,
$req="SELECT DISTINCT champ1_bdd FROM ta_table";
ne marche que pour le premier <select> par contre les autres ne s'affichent pas derriere , en revanche si je met 3 requettes differentes cela marche...
Alain qu'en penses tu ?
$req="SELECT DISTINCT champ1_bdd FROM ta_table";
ne marche que pour le premier <select> par contre les autres ne s'affichent pas derriere , en revanche si je met 3 requettes differentes cela marche...
Alain qu'en penses tu ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
si tu veux afficher 3 listes différentes il te faut bien 3 requettes non
car je suppose que les trois listes n'affichent pas le même champ de ta BDD
car je suppose que les trois listes n'affichent pas le même champ de ta BDD
Merci grâce a toi , et des dizaines heures de prises de tête.... j'ai enfin trouvé
<?php
function crit($ch){
echo "<input tye=text name='requete' size=10>";
echo "<select type='text' name='champ'>";
echo "<option value='ref'>N° demande</option>" ;
echo "<option value='nomsite'>Site</option>" ;
echo "<option value='nomserv'>Service</option>" ;
echo "<option value='utilisateur'>Utilisateur</option>" ;
echo "<option value='intitule'>Priorité</option>" ;
echo "<option value='nommat'>Probleme</option>" ;
echo "<option value='corrige'>Traité</option>" ;
echo "<option value='date'>Date</option>" ;
echo "</select>" ;
echo "<input type='button' value='reset' onclick='location.replace('rechercher.php')'>";
echo " <input type='submit' name='envoyer' value='ok'>";
}
INCLUDE ('./includes/connexion_bdd.inc.php'); //connexion à ma bdd
$requete =$_POST['requete'];
$champ = $_POST['champ'];
crit('$champ'); // je renvoies ma fonction
if(isset($_POST['envoyer'])){
$filtre = $_POST['filtre'];
$filtre .= " and ".$champ." LIKE '%".$requete."%'";
$query ="SELECT .... WHERE ...(id par ex) <> 0".$filtre;
$query_env=odbc_do($connexion,$query);
<?php
function crit($ch){
echo "<input tye=text name='requete' size=10>";
echo "<select type='text' name='champ'>";
echo "<option value='ref'>N° demande</option>" ;
echo "<option value='nomsite'>Site</option>" ;
echo "<option value='nomserv'>Service</option>" ;
echo "<option value='utilisateur'>Utilisateur</option>" ;
echo "<option value='intitule'>Priorité</option>" ;
echo "<option value='nommat'>Probleme</option>" ;
echo "<option value='corrige'>Traité</option>" ;
echo "<option value='date'>Date</option>" ;
echo "</select>" ;
echo "<input type='button' value='reset' onclick='location.replace('rechercher.php')'>";
echo " <input type='submit' name='envoyer' value='ok'>";
}
INCLUDE ('./includes/connexion_bdd.inc.php'); //connexion à ma bdd
$requete =$_POST['requete'];
$champ = $_POST['champ'];
crit('$champ'); // je renvoies ma fonction
if(isset($_POST['envoyer'])){
$filtre = $_POST['filtre'];
$filtre .= " and ".$champ." LIKE '%".$requete."%'";
$query ="SELECT .... WHERE ...(id par ex) <> 0".$filtre;
$query_env=odbc_do($connexion,$query);
En revanche," $champ=>$value " si j'ai une connexion a ma base par ODBC puis je quand meme faire par objet?
(Tu repondras a une bien grosse question que je me posais ...)
En tout cas merci beaucoup a toi !
if(in_array($donnees['champ1_bdd'],$choix_champ['champ1_bdd']){ echo selected="selected";} //ça c'est pour conserver le choix au réaffichage
Quand je met ton code j'ai une erreur de page.
De plus $req="SELECT DISTINCT champ1_bdd FROM ta_table"; je dois dans ton cas mettre $champ_choix non ?