Page 1 sur 1

espace

Posté : 02 mars 2006, 21:41
par knops
Rebonjours, dans un formulaire qui envoi une chaine de caractére donc un mot ou une phrase

j'ai voulu remplacer les + et ; et , etc....qui eventuellment serait envoyé par

l'utilisateur par des espace blanc alors j'ai fait ceci:

   
$recherche=($recherche)


$recherche=strip_tags($_POST['recherche']); 

    $mots = str_replace("+", "", trim($recherche));//on remplace les + par des espaces
    $mots = str_replace("\"", "",trim($recherche));          //idem pour \
    $mots = str_replace(",", "", trim($recherche));         //idem pour ,
    $mots = str_replace(":", "", trim($recherche));        //idem pour :

    $tab=explode(" " , $mots);

message d'erreur: Warning: explode(): Empty delimiter.

ci par example j'entre un simple espace comme recherche il m'afffiche tout ce que contient

ma table ..c'est pas normal et si par example j'entre un + comme recherche normalement il

doit étre remplacer par un espace...mais non il s'affcihe comme il a était envoyé sachant

que je l'ai remplacer par un espace au préalable je pence que je n'ai pas comis une erreur

en choisissant str_replace et c quoi le problème à votre avis??

Posté : 02 mars 2006, 23:28
par titerm
Déjà tu peux simplifier un peu...
$mots = str_replace(array('+', '"', ',', ':'), "", trim($recherche));
Ensuite, quand tu rentre un espace uniquement, le trim le vire et tu te retrouve avec une chaine null. D'ou ton warning empty. Le fait que tu voies toute ta table est certainement lié mais ss la requete, difficile d'en dire plus.

Le + devrait effectivement disparaitre...

no no

Posté : 04 mars 2006, 20:58
par vassago666
$mots = str_replace(array('+', '"', ',', ':'), "", trim($recherche));
ne régle pas le problème, ya pas une méthode pour virer le champ avec un espace dedans ??????????????????? car dés j'ai mis une condition qui si ya rien d'entrer dans un champ un message saffiche /rentrer au moin un mot/ sa marche mais si je tape espace la table m'affiche tout ce qu'elle contient....HELP

Re: no no

Posté : 04 mars 2006, 21:55
par mario
ya pas une méthode pour virer le champ avec un espace dedans ??????????????????? car dés j'ai mis une condition qui si ya rien d'entrer dans un champ un message saffiche /rentrer au moin un mot/ sa marche mais si je tape espace la table m'affiche tout ce qu'elle contient....HELP
Qu'appelles tu "virer les champ avec un espace dedans" ?
Si la table t'affiches tout ce qu'elle contient, ya un soucis au niveau de la requête.
Regarde du coté de trim

ex:
if ( empty(trim($_POST['mdp')) ){
   echo "Mot de passe vide";
}
Si ce n'est pas ce que tu veux, explique toi un peu mieux stp.

look!

Posté : 05 mars 2006, 21:54
par knops
mon problème ce n'est pas le champ vide car pour sa j'ai:

i
f (!empty($recherche))
    {
echo"le champ de reecherche est vide!";
mon problème c'est la touche [espace] elle n'est pas considérer comme champ vide une fois rentrer, mais un caractére :roll: si je tape espace dans le champ recherche tout le contenue de ma table ou je fait la recherche ...sa na pas de lien avec
urldecode ou urlencode ?
MERCI

Re: look!

Posté : 06 mars 2006, 07:44
par mario
sa na pas de lien avec urldecode ou urlencode
:-k non.

normalement si tu fais un trim d'un espace, ça retourne une chaîne vide.
Regarde l'exemple ci-dessous.
<?php
$str = ' ';
$str = trim($str);
if ( empty($str) ){
  echo '$str est vide';
}
else
{
  echo '$str n\'est pas vide';
}
/*
Affiche:
$str est vide
*/
?>

Re: look!

Posté : 06 mars 2006, 09:49
par sadeq
mon problème ce n'est pas le champ vide car pour sa j'ai:
if (!empty($recherche))
    {
echo"le champ de reecherche est vide!";
mon problème c'est la touche [espace] elle n'est pas considérer comme champ vide une fois rentrer, mais un caractére :roll: si je tape espace dans le champ recherche tout le contenue de ma table ou je fait la recherche ...sa na pas de lien avec
urldecode ou urlencode ?
MERCI
Nos amis n'ont pas céssé de t'expliquer qu'il faut utiliser un trim() pour transformer le fameux espace dont tu parle en vide pourque ton if fonctionne et n'affiche plus ta table quand tu tape espace.
Ecrit plutôt :
if ( empty( trim($recherche) ) ) //tu avais une erreur ici, correction : pas de ! (not)
    {
echo"le champ de reecherche est vide!";
Quant au problème de remplacement, tu doit remplacer tes caractères (+ ...) par un espace et non un vide en écrivant :
$mots = str_replace(array('+', '"', ',', ':'), " ", trim($recherche));
$tab=explode(" " , $mots);
Moi à ta place je remplacerai par un caractère spécial sur lequel peut s'appuier explode pour construire le tableau $tab.

Regarde, j'utilise par exemple la tabulation (\t):
//Remplacer des caractères précis par un seul délimiteur (ici la tabulation)
$mots = str_replace(array('+', '"', ',', ':'), "\t", trim($recherche));
$tab=explode("\t" , $mots); //construire un tableau se basant sur le marqueur \t