PHP - faire plusieurs recherches a la suite .
Résolu/Fermé
Maskk
Messages postés
89
Date d'inscription
mercredi 1 juillet 2009
Statut
Membre
Dernière intervention
23 décembre 2010
-
30 sept. 2010 à 08:59
Maskk Messages postés 89 Date d'inscription mercredi 1 juillet 2009 Statut Membre Dernière intervention 23 décembre 2010 - 22 oct. 2010 à 12:25
Maskk Messages postés 89 Date d'inscription mercredi 1 juillet 2009 Statut Membre Dernière intervention 23 décembre 2010 - 22 oct. 2010 à 12:25
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
- Php natif - Forum PHP
- Copiez la ligne qui indique aux moteurs de recherche de ne pas référencer la page. ✓ - Forum Référencement
- Effacer un référencement sur les moteurs de recherche ✓ - Forum Google Chrome
6 réponses
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
Modifié par Alain_42 le 30/09/2010 à 09:40
Modifié par Alain_42 le 30/09/2010 à 09:40
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>
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
Modifié par Alain_42 le 30/09/2010 à 13:36
Modifié par Alain_42 le 30/09/2010 à 13:36
$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
Maskk
Messages postés
89
Date d'inscription
mercredi 1 juillet 2009
Statut
Membre
Dernière intervention
23 décembre 2010
2
30 sept. 2010 à 13:49
30 sept. 2010 à 13:49
oua super en 2 commentaires de ta part je crois qui ya pas mal de questions que j'avais qui sont claires maintenant merci
Maskk
Messages postés
89
Date d'inscription
mercredi 1 juillet 2009
Statut
Membre
Dernière intervention
23 décembre 2010
2
30 sept. 2010 à 14:07
30 sept. 2010 à 14:07
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>";
}
?>
Maskk
Messages postés
89
Date d'inscription
mercredi 1 juillet 2009
Statut
Membre
Dernière intervention
23 décembre 2010
2
Modifié par Maskk le 30/09/2010 à 14:45
Modifié par Maskk le 30/09/2010 à 14:45
par contre je n'arrive pas a joindre ma BDD avec les <select> rajouté apres celui la ... je cherche de mon coté pourquoi....J'ai copié ma requete je l'ai rename , et la tout fonctionne ^^
Maskk
Messages postés
89
Date d'inscription
mercredi 1 juillet 2009
Statut
Membre
Dernière intervention
23 décembre 2010
2
5 oct. 2010 à 08:58
5 oct. 2010 à 08:58
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
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
5 oct. 2010 à 18:38
5 oct. 2010 à 18:38
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
Maskk
Messages postés
89
Date d'inscription
mercredi 1 juillet 2009
Statut
Membre
Dernière intervention
23 décembre 2010
2
22 oct. 2010 à 12:25
22 oct. 2010 à 12:25
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);
30 sept. 2010 à 10:04
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 !
30 sept. 2010 à 11:21
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 ?