recherche selon different champ

Eléphant du PHP | 450 Messages

31 mai 2005, 10:57

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

31 mai 2005, 11:02

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() ); 
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 450 Messages

31 mai 2005, 11:23

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() );

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

31 mai 2005, 11:37

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() );
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 450 Messages

31 mai 2005, 11:50

mince en faisant sa jai plus aucun resultat dans mon tableau..
gloupss et jai aucune erreure je comprend pas..

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

31 mai 2005, 11:53

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() );
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 450 Messages

31 mai 2005, 12:47

aie aie aie , sa marche toujours pas .....

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

31 mai 2005, 13:00

Dernier test :

met
echo $select;
juste après la construction de la requete
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 450 Messages

31 mai 2005, 13:10

lol bah non sa marche pas ...
bon tan pis vé essayer de decortiquer ma requete on vera bien

mici encore c genti :)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

31 mai 2005, 13:16

Quand tu dit: "ca marche pas", tu entend quoi ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 450 Messages

31 mai 2005, 13:20

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

31 mai 2005, 13:28

$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 ...
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 450 Messages

31 mai 2005, 13:41

ASC limit ".$limite.','.$nombre.";
comme sa c bien initialiser?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

31 mai 2005, 13:45

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;
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 450 Messages

31 mai 2005, 13:51

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: