Recherche selon Critères

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 : Recherche selon Critères

par Photographiquement Vôtre » 13 juil. 2006, 20:52

Super cool ça marche.

Merci encore

par leakcim51 » 13 juil. 2006, 16:20

Salut, si tu veux qu'il ne prenne pas en compte le dernier élément de ta catégorie, il te faut un code du style:

while ($ligne=mysql_fetch_array($result)) {
  print "<OPTION value=$Id_theme";

  if($Id_theme == $_POST['id_categorie']){
    print " SELECTED ";
  }

  print ">$Legende_Theme</OPTION>\n";
  }
print "</SELECT>";
Bon courage

par Photographiquement Vôtre » 12 juil. 2006, 16:34

Merci cela marche pour le nombre de pages.

Pour le id_categorie j'ai fait comme cela mais le select reste sur le dernier ID

$query = "select * from tbltheme";
			$result = mysql_query($query) or exit ('Erreur SQL !'.$query.'<br>'.mysql_error());
			$compteur=1;
			while ($ligne=mysql_fetch_array($result))
				{
				extract($ligne);
			//	echo "<option value=$Id_theme>$Legende_Theme</option>"; 

			echo "<option value=$Id_theme if (isSet($_POST[id_categorie])) $id_categorie = $_POST[id_categorie] if($id_categorie == $Id_theme) selected>$Legende_Theme</option>"; 	

				
  			$compteur++;
				}	
			
			 	
				echo"</SELECT>";
Merci d'avance

par Ryle » 12 juil. 2006, 14:47

Oki, donc j'avais bon au début, on oubli le javascript, il te faut simplement définir les valeurs par défaut de tes champs :

Pour le champ "mot" si $_POST['mot'] (ton formulaire étant envoyé en post) est défini on l'affiche dans l'attribut value="" de l'input
<input type="text" size="20" name="mot" value="<?php if (isSet($_POST['mot']) echo $_POST['mot']; ?>">
Pour le select "id_categorie" et "numrows", il te faut de même récupérer $_POST["id_categorie"] et $_POST['numrows'], les comparer aux valeurs des options et afficher "selected" dans la balise (comme tu le fais actuellement avec $_GET['id'].

Dans le cas de numrows, comme tu as déjà $_GET['id'] pour donner une valeur par défaut, il te suffit de les ordonner :
if (isSet($_GET['id'])) 
  $numRows = $_GET['id'];
if (isSet($_POST['numrows']))
  $numRows = $_POST['numrows'];
et tu peux ainsi tester chacune de tes options : if($numRows == xx) echo "selected" :)

par Photographiquement Vôtre » 12 juil. 2006, 13:27

Merci je vais essayer d'être plus clair.

J'ai tros champs :

un champ texte pour le mot recherché

une liste pour la catégorie

une liste pour le nbre de photos par page.

Ma sélection marche bien mais dès que j'ai appuyé sur Recherche les zones sont mises à leur valeur par défaut.

Rien pour le mot

Toutes pour la Catégorie

6 pour le nombre

La personne ne sait plus ce qu'il a demandé.

Je voudrai donc que les critères sélectionnés soient visibles

par Ryle » 12 juil. 2006, 13:19

C'est un soucis de javascript alors pas de php ;)

Cela dit, je ne suis pas sur de comprendre... l'utilisateur va saisir des infos dans ton formulaire et quand il clique sur Recherche, ca mette à jour les champ avec les valeurs qu'ils contiennent déjà ? y a un truc qui m'échappe :)

Bon cela dit outre le fait que je ne comprenne pas bien le pourquoi du comment, par rapport à ton javascript, déjà tu fais appel à un champ "categorie" qui n'est pas présent dans ton formulaire. D'autre part, pour mettre jour la valeur d'un select, il ne faut pas setter l'attribut value de l'option avec la valeur, mais sélectionner l'option dont tu veux utiliser la valeur :
// au lieu de 
document.recherche.numrows.options[document.recherche.numrows.selectedIndex].value=mat; 

// il te faut un truc du genre :
for(var i=0; var i<document.recherche.numrows.options.length; i++) {
  if(document.recherche.numrows.options[i].value == mat) { // recherche de l'option
    document.recherche.numrows.options[i].selected = true; // selection de l'option
    break;
  }
}

par Photographiquement Vôtre » 12 juil. 2006, 12:56

Non ce que je veux c'est que quand j'appuie sur le bouton Recherche, mes zones de formulaire soient modifiées en conséquence avec les choix faits.

par Ryle » 12 juil. 2006, 12:28

Sans passer par le javascript, ça serait pas plutot juste le nom de la variable que tu testes qu'il faudrait modifier ? Si ton select s'appelle "numrows" il me semblerait plus judicieux d'utiliser $_GET["numrows"] :)
<select name="numrows"> 
  <option value="6" <?php if(isset($_GET['numrows']) && $_GET['numrows']=="6") echo "selected";?>>6</option> 
  ...

Recherche selon Critères

par Photographiquement Vôtre » 12 juil. 2006, 11:11

Bonjour,

J'ai mis en place une recherche de photos par mots clés, rubrique en pouvant choisir le nombre de photos sur chaque page.

J'ai créé un formulaire qui fonctionne bien sauf que mes champs de recherche ne sont pas modifiés par mon choix.

J'ai tenté avec un fonction script mais cela ne marche pas.

Merci de votre aide.

Mon formulaire
<table align="center" width=733 height=320 border=0>
	<table align="center" width=600 border=0 height=50 bgcolor=#D3E134 cellspacing=2 cellpading=2>
		<tr>
			<td>Entrez le(s) mot(s) clé(s) dans le secteur souhaité</td>
			<td>Choisissez une Catégorie :</td>
	 	<tr>
		<form action="recherche.php" method="post" name="recherche">
	  		<td width=180 align=center><input type="text" size="20" name="mot" value=""  ></td>
			<td width=220 align=center>&nbsp<select name="id_categorie" >
			<OPTION value="0">Toutes</OPTION>
			
<?php

include("connection.php");

			$query = "select * from tbltheme ";
			$result = mysql_query($query) or exit ('Erreur SQL !'.$query.'<br>'.mysql_error());
			$compteur=1;
			while ($ligne=mysql_fetch_array($result))
				{
				extract($ligne);
				echo "<option value=$Id_theme>$Legende_Theme</option>"; 
  			$compteur++;
				}	
			echo"</SELECT>";
?>			
			</td>
			<td width="6"></td>
	  		<td width="46">
	  		<select name="numrows" id="numrows"  >
				<option value="6"<?php if(isset($_GET['id']) && $_GET['id']=="6") echo " selected";?>>6</option> 
				<option value="8"<?php if(isset($_GET['id']) && $_GET['id']=="8") echo " selected";?>>8</option> 
				<option value="12"<?php if(isset($_GET['id']) && $_GET['id']=="12") echo " selected";?>>12</option> 
				<option value="24"<?php if(isset($_GET['id']) && $_GET['id']=="24") echo " selected";?>>24</option> 
			</select> 
	  		<input type="hidden" name="pas" value="<?php echo $testpas; ?>" >
      		<td width="84" class="txt-mini">photos par page</td>
      		<td width="25" class="box_right">
        	<td width=120 align=center><input type="submit" name="rechercher" value="rechercher" onClick="ChangeValeur()"></td>
      	</td>
			
		</form>
	</tr>
	</table>
</table>
Ma fonction Javascript

Code : Tout sélectionner

function ChangeValeur() { var mat = document.recherche.numrows.options[document.recherche.numrows.selectedIndex].value; document.recherche.numrows.options[document.recherche.numrows.selectedIndex].value=mat; alert (mat); var mot=document.forms['recherche'].elements['mot'].value; alert(mot); document.forms['recherche'].elements['mot'].value=mot; var categorie=document.forms['recherche'].elements['id_categorie'].value; alert(categorie); document.forms['recherche'].elements['categorie'].value=$categorie; }