Page 1 sur 2

recherche selon different champ

Posté : 31 mai 2005, 10:57
par castelli
Bonjour a vous tous :)
En faite j'ai un petit probleme et jaurais aimé de l'aide
Je dois faire une recherche dans ma base de donné et jaurai voulu la faire selon un nom ressemblant a un champ defini auparavant
et j'ai absolument auqune idé de la maniere de faire sa...
Quelqun pourrait il m' eclairer un peu?

Code : Tout sélectionner

<body> <!-- debut de la table --> <center><table width="50%"> <!-- On declare le formulaire --> <form method="POST" action='truc3.php' <!-- Le champs à remplir par le visiteur --> <tr><td><input type="text" name="motsclef"></td> <td><select name="methode"> <option value="val1">Par nom</option> <option value="val2">Par reference</option> <option value="val3">Par forumule brute</option> <option value="val4">Par numero de CAS</option> </select> </td></tr> <tr><td><input type="submit" value="Rechercher"></td></tr> </form></table></center>
sa sa correspond au module de recherche

et sinon voila ma recherche

Code : Tout sélectionner

$select = "SELECT nom,formule,reference,disponibilite,localisation,quantite,numero_cass,toxicite FROM produit2 WHERE nom LIKE '%$motsclef[0]%'ORDER BY 'nom' ASC limit ".$limite.','.$nombre; $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
voila comment pouvoir faire pour que le champ de recherche correspond a la valeur choisit dans le menuderoulant?

merci d'avance

Posté : 31 mai 2005, 11:02
par zeus
Dans ton module recherche, dans ta liste déroulabte, tu attribue tes noms de colonnes comme value de tes options et dans ton moteur, tu récupère ce nom de colonne. Il sera par défaut sur le 1er
<body>

<!-- debut de la table -->
<center><table width="50%">

<!-- On declare le formulaire -->
<form method="POST" action='truc3.php'

<!-- Le champs à remplir par le visiteur -->
<tr><td><input type="text" name="motsclef"></td>

<td><select name="methode">

<option value="nom">Par nom</option>
<option value="reference">Par reference</option>
<option value="formule">Par forumule brute</option>
<option value="numero_cass">Par numero de CAS</option>

</select>

</td></tr>

<tr><td><input type="submit" value="Rechercher"></td></tr>
</form></table></center>
$mot = $_POST["motsclef"];
$col = $_POST["methode"];
$select = "SELECT nom,formule,reference,disponibilite,localisation,quantite,numero_cass,toxicite FROM produit2 WHERE nom LIKE '%$mot%'ORDER BY '".$col."' ASC limit ".$limite.','.$nombre;
$result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() ); 

Posté : 31 mai 2005, 11:23
par castelli
Arghh sa marche pas...
lorsque jessaille de recherche des molecules en "C6" (formule brute)sa me donne rien du tout..pareuils pour les molecules ayant comme reference 125 etc... :?

Code : Tout sélectionner

$path_parts = pathinfo($_SERVER['PHP_SELF']); $page = $path_parts['enscr_web']; $select = 'SELECT count(nom) FROM produit2'; $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); $row = mysql_fetch_row($result); $total = $row[0]; $mot = $_POST["motsclef"]; $col = $_POST["methode"]; $select = "SELECT nom,formule,reference,disponibilite,localisation,quantite,numero_cass,toxicite FROM produit2 WHERE nom LIKE '%$mot%'ORDER BY '".$col."' ASC limit ".$limite.','.$nombre; $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );

Posté : 31 mai 2005, 11:37
par zeus
Je t'ai dit une bétise, je viens de relire le post et je croyais que tu voulais trier selon la méthode.

prend ce code plutôt :
$mot = $_POST["motsclef"];
$col = $_POST["methode"];
$select = "SELECT nom,formule,reference,disponibilite,localisation,quantite,numero_cass,toxicite FROM produit2 WHERE '".col."' LIKE '%$mot%'ORDER BY 'nom' ASC limit ".$limite.','.$nombre;
$result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() );

Posté : 31 mai 2005, 11:50
par castelli
mince en faisant sa jai plus aucun resultat dans mon tableau..
gloupss et jai aucune erreure je comprend pas..

Posté : 31 mai 2005, 11:53
par zeus
Oula, je fatigue moi ce matin, 2 erreurs de suites dans le même post !!!!

j'aioublié le $ devant le col !!!

essaye ça :
$mot = $_POST["motsclef"];
$col = $_POST["methode"];
$select = "SELECT nom,formule,reference,disponibilite,localisation,quantite,numero_cass,toxicite FROM produit2 WHERE '".$col."' LIKE '%$mot%'ORDER BY 'nom' ASC limit ".$limite.','.$nombre;
$result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() );

Posté : 31 mai 2005, 12:47
par castelli
aie aie aie , sa marche toujours pas .....

a votre avis sa peut vnir dotre chose?? que de la requete?

Posté : 31 mai 2005, 13:00
par zeus
Dernier test :

met
echo $select;
juste après la construction de la requete

Posté : 31 mai 2005, 13:10
par castelli
lol bah non sa marche pas ...
bon tan pis vé essayer de decortiquer ma requete on vera bien

mici encore c genti :)

Posté : 31 mai 2005, 13:16
par zeus
Quand tu dit: "ca marche pas", tu entend quoi ?

Posté : 31 mai 2005, 13:20
par castelli
bah pas de retour de resultat apres la requete (en gros sa s'affiche dans le tableau que j'ai fai precedement) :?

jte copie le truc pour que tu vois :?

Code : Tout sélectionner

$nombre = 20; // on va afficher 20 résultats par page. if (!isset($limite)) $limite = 0; // si on arrive sur la page pour la première fois // on met limite à 0. $path_parts = pathinfo($_SERVER['PHP_SELF']); $page = $path_parts['enscr_web']; $motsclef = $_POST['motsclef']; $methode = $_POST['methode']; $motsclef = explode(" ",$motsclef); $nbr_mots = count($motsclef); $select = 'SELECT count(nom) FROM produit2'; $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); $row = mysql_fetch_row($result); $total = $row[0]; $select = "SELECT nom,formule,reference,disponibilite,localisation,quantite,numero_cass,toxicite FROM produit2 WHERE '".$methode."' LIKE '%$motsclef%'ORDER BY 'nom' ASC limit ".$limite.','.$nombre; $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); echo $select; $limitesuivante = $limite + $nombre; $limiteprecedente = $limite - $nombre; $result = mysql_db_query("enscr_web", $select); echo "<table border=1><TR bgcolor=\"#CCFFCC\"><TH>Nom</TH><TH>Formule</TH><TH>Reference</TH><TH>Disponibilite</TH><TH>Localisation</TH><TH>Quantite</TH><TH>Numero_cass</TH><TH>Action</th></TR>"; while ($voir = mysql_fetch_assoc($result)) { echo"<tr> <td><font face='Verdana' size='2'>" .$voir['nom']. "</font></td> <td><font face='Verdana' size='2'>" .$voir['formule']. "</font></td> <td><font face='Verdana' size='2'>" .$voir['reference']. "</font></td> <td><font face='Verdana' size='2'>" .$voir['disponibilite']. "</font></td> <td><font face='Verdana' size='2'>" .$voir['localisation']. "</font></td> <td><font face='Verdana' size='2'>" .$voir['quantite']. "</font></td> <td><font face='Verdana' size='2'>" .$voir['numero_cass']. "</font></td> <TD><font face='Verdana' size='2'> <a href=maj.php>Commander</A></font></td></tr>"; } echo "</table>"; echo "<table border=\"0\">";echo "<tr>"; if($limite != 0) { echo '<form action="'.$page.'" method="post">'; echo "<input type='hidden' value='".$_POST['motsclef']."' name='motsclef'>"; echo '<input type="submit" value="précédents">'; echo '<input type="hidden" value="'.$limiteprecedente.'" name="limite">'; echo '</form>'; }echo "</tr>"; echo "<tr>"; if($limitesuivante < $total) { echo '<form action="'.$page.'" method="post">'; echo "<input type='hidden' value='".$_POST['motsclef']."' name='motsclef'>"; echo '<input type="submit" value="suivants">'; echo '<input type="hidden" value="'.$limitesuivante.'" name="limite">'; echo '</form>'; }echo "</tr>"; echo "</table>"; mysql_free_result($result); ?>
voila sinon avant jappel le serveur et tout mais peut pas mettre les parametre car c un truc du cnrs alors... lol

Posté : 31 mai 2005, 13:28
par zeus
$motsclef = $_POST['motsclef'];
Evite de mettre le même nom, selon la configuration de ton serveur, ça peut poser des problèmes
 ASC limit ".$limite.','.$nombre;
Tu initialise bien $limite, mais pas $nombre ...

Posté : 31 mai 2005, 13:41
par castelli
ASC limit ".$limite.','.$nombre.";
comme sa c bien initialiser?

Posté : 31 mai 2005, 13:45
par zeus
non, ce que je voulais dire, c'est "Où est-ce que tu mets des valeurs dans ces variables ?"

Donne moi la requete qui est affichée quand tu fait echo $select;

Posté : 31 mai 2005, 13:51
par castelli
il saffiche sa
SELECT nom,formule,reference,disponibilite,localisation,quantite,numero_cass,toxicite FROM produit2 WHERE 'nom' LIKE '%%'ORDER BY 'nom' ASC limit 0,20
:cry: