problème espace dans un formulaire de recherche

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 : problème espace dans un formulaire de recherche

Re: problème espace dans un formulaire de recherche

par Ryle » 27 mai 2011, 18:45

Nope, le trim n'affecte que les espaces en début et en fin de chaîne :)

Mais je ne suis pas sur que tes utilisateurs devinent qu'il faut mettre un espace dans le moteur de recherche pour afficher une liste complète et te recommande de regarder du côté du javascript pour le rendre compatible entre les différents navigateurs...

Re: problème espace dans un formulaire de recherche

par Yuuki » 27 mai 2011, 17:22

salut,

mais si je fais un trim, il va me supprimer mes espaces entre les noms composé de deux parties, par exemple "Van oof"

Re: problème espace dans un formulaire de recherche

par linesoft » 27 mai 2011, 10:44

Salut ,
Effectivement comme le dit Ryle le %20 doit etre automatiquement traiter par php et converti en espace
en fait php fait automatiquement un urldecode() sur les variable superglobales $_GET et $_REQUEST

donc je pense aussi que ta requête cherche quelque chose commençant par un espace .
tu devrais faire un trim($_GET['clientsnomlike']) pour enlever les espaces au debut et a la fin comme ca ta condition $_SESSION['cnomlike']=="" serrait validé

Re: problème espace dans un formulaire de recherche

par Ryle » 26 mai 2011, 20:25

Le problème doit provenir de ton javascript dans ce cas... essaye peut être comme ceci :
onchange="document.location.href = '?clientsnomlike='+this.value;"
Sinon le mieux serait de faire un formulaire (balise form) et de le soumettre :)

Re: problème espace dans un formulaire de recherche

par Yuuki » 26 mai 2011, 19:52

Ce qui me perturbe c'est que ça fonctionne parfaitement sous internet explorer, mais pas sous mozzila et chrome :/

Re: problème espace dans un formulaire de recherche

par Ryle » 26 mai 2011, 18:43

Le %20 correspond à l'encodage d'un espace dans une url... comme tu envois un espace en get, il est normale que celui-ci apparaisse sous forme de %20 dans la barre d'adresse, mais celui-ci sera normalement traité par php... c'est à dire que php va effectuer une recherche sur tous les noms commençant par un espace...

Logiquement pour réafficher ta liste complète, il ne te faudrait rien mettre dans le champ de recherche :)

problème espace dans un formulaire de recherche

par Yuuki » 26 mai 2011, 17:45

Bonjour,

J'ai une page clients.php qui m'affiche une tableau d'une liste de clients issue d'une base de donnée.

J'ai intégré dans la colonne titre "nom", un formulaire de recherche.

Quand je tape une recherche, pas de soucis, le nom du client est trouvé, le problème c'est lorsque je veux réaficher ma liste client, je met un espace dans ma recherche, mais lorsque je fais ça, je remarque dans l'url que mes espaces sont convertis par des "%20" et de ce fait, il me fait une recherche pour %20 :/

Voici mon code correspondant à ma recherche dans ma page client :
<?php
	session_start();
		//connexion serveur mysql
	$link = mysql_connect("localhost", "", "");
		if (!$link)
			{
			die ("Impossible de se connecter : " . mysql_error());
			}
		//connexion base de donnée
	$db_selected = mysql_select_db('', $link);
		if (!$db_selected)
			{
			die ('Impossible de sélectionner la base de données : ' . mysql_error());
			}
			
			//Mise du cookie dans la session 
		if (isset($_GET['clientsnomlike']))
				{
					
					$_SESSION['cnomlike']=$_GET['clientsnomlike'];
					
				};		
		
			//traitement en fonction de la session
		if (!isset($_SESSION['cnomlike']))
			{
				$filtreClients = "SELECT * FROM Clients ORDER BY Nom"; 
			}
			
		elseif ($_SESSION['cnomlike']=="")
			{
				$filtreClients = "SELECT * FROM Clients ORDER BY Nom"; 
			}
			
		else
			{
				$filtreClients="SELECT * FROM Clients WHERE Nom LIKE '" . $_SESSION['cnomlike'] . "%' ORDER BY Nom ";
			}

et voici mon forumaire de recherche dans mon tabtop
<table style="text-align: center;" border="1"
 cellpadding="2" cellspacing="2">
  <tbody>
    <tr style="background-color: #CCFFCC; color: #008000">
      <th>Nom<br/>
	  [size=150]<input	maxlength="24" 
						size="24"
						value=""
						onchange="var newsearch='?clientsnomlike='+this.value; location.search=newsearch;reload()"></th>[/size]
      <th>Prénom</th>
	  <th> Dossier</th>
    </tr>


Merci d'avance