Filtration multiple

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Filtration multiple

Re: Filtration multiple

par ouckileou » 02 nov. 2009, 17:05

Ton problème est résolu ou pas ?

Re: Filtration multiple

par pasbonte » 01 nov. 2009, 18:07

MERCI
j'ai simplifié le code..
mais maintenant autre problème: si j'entre une seule condition (motclef1)=adj mais motclef2 est vide) il m'affiche tout...une idée pour contourner la chose ?
J'avance avec votre aide merci phpanonyme !
avec un petit changement ça marche:

Code : Tout sélectionner

<html> <body> <br><a href="abs_index.php">Accueil</a><br> <a href="newabs.php">Revenir à la page des modifications globales</a> <form action="newabs.php" method="post"><br> <input type="text" onFocus="motclef.style.backgroundColor='yellow'" onBlur="motclef.style.backgroundColor='white'" name="motclef1" value="<?php echo $_POST['$motclef1%']; ?>"> <input type="text" onFocus="motclef.style.backgroundColor='yellow'" onBlur="motclef.style.backgroundColor='white'" name="motclef2" value="<?php echo $_POST['$motclef2%']; ?>"> <input type="submit" value="1) Rechercher un élève par le nom (ou tapez les 3 premières lettres), par le numéro de l'absence ou par la classe OU cliquez sur ce bouton pour avoir TOUS les élèves"><br> </form> <table border="1"> <tr> <td width=''>NOM</td> <td width=''>PRENOM</td> </tr> <?php if ((isset($_POST['motclef1'])) or isset($_POST['motclef2'])) { $sql = mysql_query("SELECT * FROM ges_abs WHERE ((elenom like '".$_POST['motclef1']."%' OR elenom like '".$_POST['motclef2']."%') or (Numero like '".$_POST['motclef1']."%' OR Numero like '".$_POST['motclef2']."%') or (divcod like '".$_POST['motclef1']."%' OR divcod like '".$_POST['motclef1']."%')) ORDER BY elenom ASC") or die('Erreur de requete '.mysql_error()); $resultat = mysql_num_rows($sql); //echo $sql; if($resultat>2) { while ($eleve = mysql_fetch_array ($sql)) { echo '<b>'.$eleve['id'].''; echo"<tr><td><b>".$eleve['elenom']."</b></td>"; echo"<td>".$eleve['elepre']."</td>"; echo"<td><input type='checkbox' name='maj[]' value='".$eleve['Numero']."'></td>"; $id10=$eleve['elenoet']; $id11=$eleve['Numero']; echo "<TD> <a href='abs_modifierbis.php?id1=$id11'>MODIFIER</a>"; } } } ?> </form> </table> </body> </html>

Re: Filtration multiple

par pasbonte » 31 oct. 2009, 01:24

le sql donne: SELECT * FROM ges_abs WHERE elenom like 'vei%' or Numero like 'vei%' or divcod like 'vei%' ORDER BY elenom

Re: Filtration multiple

par pasbonte » 31 oct. 2009, 01:23

voici le code qui fonctionne avec seulement 1 input

Code : Tout sélectionner

<a href="newabs.php">Revenir à la page des modifications globales</a> <form action="newabs.php" method="post"><br> <input type="text" onFocus="motclef.style.backgroundColor='yellow'" onBlur="motclef.style.backgroundColor='white'" name="motclef" value="<?php echo $_REQUEST['$motclef%']; ?>"> <input type="submit" value="1) Rechercher un élève par le nom (ou tapez les 3 premières lettres), par le numéro de l'absence ou par la classe OU cliquez sur ce bouton pour avoir TOUS les élèves"><br> </form> <table border="1"> <tr> <td width=''>NOM</td> <td width=''>PRENOM</td> <td width=''>CLASSE</td> <td width=''>JUSTIFICATION</td> <td width=''>Justifiée & légitime ?</td> <td width=''><b>Quand</b></td> <td width=''>de</td> <td width=''>A</td> <td width=''>Total</td> <td width=''>Numéro</td> </tr> <?php if (isset($motclef) ) { $dateencours=$motclef; $clause = " WHERE elenom like '$motclef%' or Numero like '$motclef%' or divcod like '$motclef%' "; } $orderby = " ORDER BY elenom"; $sql = "SELECT * FROM ges_abs " . $clause . $orderby; $resultat = mysql_query ($sql); echo $sql; echo ''; while ($eleve = mysql_fetch_array ($resultat)) {

Re: Filtration multiple

par ouckileou » 30 oct. 2009, 20:16

Ok donc on peut voir le résultat de echo $sql ?

C'est en tête du forum, on a besoin de voir le sql généré !

Re: Filtration multiple

par pasbonte » 30 oct. 2009, 20:14

oui ma requête simple fonctionne c'est avec les deux input que cela se complique

Re: Filtration multiple

par ouckileou » 30 oct. 2009, 20:07

T'as une requête statique qui marche déjà ? On teste le PHP qu'une fois qu'on a son modèle de requête.

Filtration multiple

par pasbonte » 30 oct. 2009, 19:53

Bonjour,
Je désire filtrer un ensemble avec deux ou 3 critères.
Je m'explique:
Je veux la liste des personnes dont le nom commence par ADJ ou VEI
voici mon code:

Code : Tout sélectionner

<a href="newabs.php">Revenir à la page des modifications globales</a> <form action="newabs.php" method="post"><br> <input type="text" onFocus="motclef.style.backgroundColor='yellow'" onBlur="motclef.style.backgroundColor='white'" name="motclef" value="<?php echo $_REQUEST['$motclef1%']; ?>"> <input type="text" onFocus="motclef.style.backgroundColor='yellow'" onBlur="motclef.style.backgroundColor='white'" name="motclef" value="<?php echo $_REQUEST['$motclef2%']; ?>"> <input type="submit" value="1) Rechercher un élève par le nom (ou tapez les 3 premières lettres), par le numéro de l'absence ou par la classe OU cliquez sur ce bouton pour avoir TOUS les élèves"><br> </form> <table border="1"> <tr> <td width=''>NOM</td> <td width=''>PRENOM</td> <td width=''>CLASSE</td> <td width=''>JUSTIFICATION</td> <td width=''>Justifiée & légitime ?</td> <td width=''><b>Quand</b></td> <td width=''>de</td> <td width=''>A</td> <td width=''>Total</td> <td width=''>Numéro</td> </tr> <?php if (isset($motclef1) or isset($motclef2) ) { $dateencours=$motclef1; $clause = " WHERE elenom like '$motclef1%' or elenom like '$motclef2%' or elenom like '$motclef1%' or Numero like '$motclef1%' or divcod like '$motclef1%' "; } $orderby = " ORDER BY elenom"; $sql = "SELECT * FROM ges_abs " . $clause . $orderby; $resultat = mysql_query ($sql); echo $sql; echo ''; while ($eleve = mysql_fetch_array ($resultat)) { suite du code bien sûr......
Si je fais un seul $motclef, cela marche mais sur 1 critère
comment avoir sur les deux noms par ex ? en espérant être clair....
merci