<form method="POST" action='index6.php'>
<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="initiale">Par initiale</option>
<option value="date">Par date</option>
<option value="localisation">Par localisation</option>
<option value="disponibilite">Par disponibilité</option>
</select>
</td></tr>
<tr><td><input type="submit" name=envois value="Rechercher"></td></tr>
</form>
un lien des entêtes :<TH><a href='index6.php?class=reference&methode2=<?php echo $methode2; ?>&motsclef2=<?php echo $motsclef2; ?>&limite2=<?php echo $limite; ?>' name=envois>Reference</a></TH>
et ici le code pour dire : tant qu'il n'y a pas de mots clef de rentré dans le formulaire on prend ceux de l'adresse
$methode = $_POST['methode'];
$motsclef = $_POST['motsclef'];
$methode2=$_GET['methode2'];
$motsclef2=$_GET['clef'];
if (!isset($methode2))
$methode2 = $methode;
if (!isset($motsclef2))
$motsclef2 = $motsclef;
echo $motsclef2;
if (isset ($_GET['clef']))
{
if ($motsclef !="") $motsclef2 = $motsclef;
}
if (isset ($_GET['methode2']))
{
if ($methode !="") $methode2 = $methode;
}
voici un echo de la requete avant d'appuyer sur une categorie:
Code : Tout sélectionner
SELECT groupe,classe,produit,nom,quantite,initiale,numero,date,localisation,disponibilite,commentaire,reference,img,formule FROM biobase WHERE nom LIKE '%t%' ORDER BY 'reference' Code : Tout sélectionner
SELECT groupe,classe,produit,nom,quantite,initiale,numero,date,localisation,disponibilite,commentaire,reference,img,formule FROM biobase WHERE nom LIKE '%Array%' ORDER BY 'reference'
ça veut simplement dire que ta variable $b est de type tableau, essaye de faire un print_r($a);
if (!isset($methode2))
$methode2 = $methode;
if (!isset($motsclef2))
$motsclef2 = $motsclef;
print_r($_POST['motsclef']);
echo $motsclef2;
echo $methode2;
if (isset ($_GET['clef'] ))
{
if ($motsclef !="") $motsclef2 = $motsclef;
}
if (isset ($_GET['methode2'] ))
{
if ($methode !="") $methode2 = $methode;
}
Tu entend quoi par la??mais ce serait encore mieux de tester si une valeur a été passée en POST nan ?
Salut,ici le code pour dire : tant qu'il n'y a pas de mots clef de rentré dans le formulaire on prend ceux de l'adresse
$methode = $_POST['methode']; $motsclef = $_POST['motsclef']; $methode2=$_GET['methode2']; $motsclef2=$_GET['clef']; if (!isset($methode2)) $methode2 = $methode; if (!isset($motsclef2)) $motsclef2 = $motsclef; echo $motsclef2; if (isset ($_GET['clef'])) { if ($motsclef !="") $motsclef2 = $motsclef; } if (isset ($_GET['methode2'])) { if ($methode !="") $methode2 = $methode; }
Code : Tout sélectionner
<form method="post">
Mot clé <input name="motcle"> <input type="submit" value="Recherche">
</form>
<table>
<tr>
<!-- la colonne Nom + un lien de tri asc/desc -->
<th>
<a href=
"?tri_par=nom&sens=<?php echo ($_GET['sens']=='desc'?'asc':'desc'); ?>&motcle=<?php echo $_POST['motcle']; ?>&methode=<?php echo $_POST['methode']; ?>"
>Nom</a>
</th>
<!-- la colonne Reference + un lien de tri asc/desc -->
<th>
<a href=
"?tri_par=reference&sens=<?php echo ($_GET['sens']=='desc'?'asc':'desc'); ?>&motcle=<?php echo $_POST['motcle']; ?>&methode=<?php echo $_POST['methode']; ?>"
>Référence</a>
</th>
... suite du tableau
//Au démarrage afficher tout et à la recherche ou le tri selon POST et GET
//réception des variables
//Pour la recherche : motcle et methode se trouvent dans POST ou dans GET
$motcle = $_POST["motcle"]?$_POST["motcle"]:$_GET["motcle"]?$_GET["motcle"]:""; //par défaut motcle est vide
$methode = $_POST["methode"]?$_POST["methode"]:$_GET["methode"]?$_GET["methode"]:"nom"; //par defaut chercher dans "nom"
//Pour le tri : tri_par et sens se trouvent dans le GET
$tri_par = $_GET["tri_par"]?$_GET["tri_par"]:"nom"; //par défaut tri par nom
$sens = $_GET["sens"]?$_GET["sens"]:"asc"; //par défaut l'ordre est ASC
//Maitenant prêt pour générer la requête :
$sql ="SELECT groupe,classe,produit,
nom,quantite,initiale,numero,date,localisation,
disponibilite,commentaire,reference,img,formule
FROM biobase
WHERE $methode LIKE '%$motcle%' ORDER BY $tri_par $sens";
//Exécution
.... et suite
Et bien voilà, tu as assimilé le concept du débuggeur !j'ai tester pour $_POST['motsclef'] et c'est pas un tableau
(genre dans la formulaire de recherche je met "t" et quanb je fais l'echo du $_POST sa me donne bien "t"
de meme je fais un echo de $motsclef2 aprés les premiere isset et sa me donne bien aussi t (avant le clique sur l'entête) et l'echo de methode2 me donne bien la bonne valeur lui aussi
Pas nécessairement, mais que tu regardes si la valeur existe avant de l'utiliser, ça t'évitera des messages d'erreurs sur certaines configuration.Tu entend quoi par la??mais ce serait encore mieux de tester si une valeur a été passée en POST nan ?
que je devrais plutot passer la valeur en $_POST plutot qu'en $_GET (pour recuperer les valeur dans l'adresse) ?
if(isSet($_POST['methode']))
$methode = $_POST['methode'];
else
$methode = '';
// ou avec l'opérateur ternaire (ca revient au même que le code ci-dessus)
$methode = (isSet($_POST['methode'])) ? $_POST['methode'] : '';
Ainsi tu es sur que $methode est définie, et aura la valeur vide par défaut (genre quand tu arrives sur la page pour la première fois et qu'aucune donnée n'a été envoyée en post