Variable avec espace - formulaire - supprimer les espaces

Variable avec espace - formulaire - supprimer les espaces - PHP - Programmation

Marsh Posté le 18-07-2008 à 15:04:41    

Bonjour,
 
Voila j'ai un petit soucis que je vous expose:
 
J'ai fais un formulaire, puis, à la page verif, je vérifie que les champs ne sont pas vides avec empty().
Seulement je viens de me rendre compte qu'un utilisateur peux tres bien mettre juste des espaces et cela fonctionne.
 
Comment faire ?
 
J'ai pensé qu'avec une fonction je pourrais supprimer les espaces de chaque variable POST.
 
Qu'en pensez vous ? avez vous des idées ?
 
Merci par avance pour votre aide.

Reply

Marsh Posté le 18-07-2008 à 15:04:41   

Reply

Marsh Posté le 18-07-2008 à 15:05:51    

http://www.manuelphp.com/php/function.trim.php ??
 
edit : :bounce:


Message édité par Marty_McFly le 18-07-2008 à 15:15:37
Reply

Marsh Posté le 18-07-2008 à 15:05:55    

trim
 
edit  [:benou_grilled]


Message édité par flo850 le 18-07-2008 à 15:06:27

---------------

Reply

Marsh Posté le 18-07-2008 à 15:09:25    

On se calme...
 
D'après mes recherches trim() supprimerais uniquement le début et la fin de la chaine de caractères.

Reply

Marsh Posté le 18-07-2008 à 15:10:20    

ben si tu as la phrase "     " sans les guillements  
 
tous els espaces sont au debut ET a la fin,non ?


---------------

Reply

Marsh Posté le 18-07-2008 à 15:11:06    

Oui, mais si l'espace se trouve entre deux mots: "jean pignon"

Reply

Marsh Posté le 18-07-2008 à 15:13:00    

ça ne supprimera rien  
 
alors que " jean bon " deviendra "jean bon"  


---------------

Reply

Marsh Posté le 18-07-2008 à 15:13:53    

Utilise str_replace(" ","" ) si tu veux virer tous les espaces de ton champ, il me semble que ça fonctionne :D
 
http://www.manuelphp.com/php/function.str-replace.php

Message cité 1 fois
Message édité par Marty_McFly le 18-07-2008 à 15:14:44
Reply

Marsh Posté le 18-07-2008 à 15:15:15    


 
" le petit padawan a plein de questions "  devient "lepetitpadawanapleindequestions"


---------------

Reply

Marsh Posté le 18-07-2008 à 15:16:02    

Merci marty et flo,
 
est-ce que cela est possible au passage:
 
if(empty(trim($_POST['nom']))){
  echo "<p class=\"red\">Veuillez indiquer votre Nom</p>";
  $erreur= 1;
}

Reply

Marsh Posté le 18-07-2008 à 15:16:02   

Reply

Marsh Posté le 18-07-2008 à 15:19:32    

Essaie, tu verras bien :p
 
A premiere vue, y'a pas de raisons que ça marche pas

Reply

Marsh Posté le 18-07-2008 à 15:21:42    

et pourtant... cela ne marche pas... si je pose des questions ce n'est pas pour spamer c'est pour avoir de l'aide.


Message édité par Profil supprimé le 18-07-2008 à 15:22:06
Reply

Marsh Posté le 18-07-2008 à 15:23:38    

dis plutôt ce qui ne marche pas, sinon on sort nos boules... (de cristal :o )
 
essaie ceci :

Code :
  1. $nom = (isset($_POST['nom'])) ? trim($_POST['nom']) : '';
  2. if ($nom == '')
  3. {
  4.   echo '<p class="red">Veuillez indiquer votre Nom</p>';
  5.   $erreur= 1;
  6. }


Message édité par NewsletTux le 18-07-2008 à 15:25:01

---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 18-07-2008 à 15:25:11    

le code au dessu renvoie cela:
Fatal error: Can't use function return value in write context

Reply

Marsh Posté le 18-07-2008 à 15:27:27    

ok j'essaye

Reply

Marsh Posté le 18-07-2008 à 15:32:00    

cela fonctionne merci, mais ne supprime pas mes espaces.
mon code:
 
  $nom = (isset($_POST['nom'])) ? trim($_POST['nom']) : '';
   if ($nom == '')
  {
  echo '<p class="red">Veuillez indiquer votre Nom</p>';
  $erreur= 1;
  }
  else{
   $nom=$_POST['nom'];
   echo "Votre nom: ".$nom."<br>";
  }
 
quand j'ecrit "a                    dfdf" cela me sort une variable avec espace:
a dfdf

Reply

Marsh Posté le 18-07-2008 à 15:35:13    

attends, tu veux quoi exactement? supprimer tous les espaces de la chaine de caractères, ou bien supprimer les espaces à gauche et a droite?
 
"   Mais ou et donc or ni car  " doit donner "Maisouetdoncornicar" ou "Mais ou et donc or ni car" ?

Reply

Marsh Posté le 18-07-2008 à 15:39:45    

je veux "Maisouetdoncornicar"

Reply

Marsh Posté le 18-07-2008 à 15:55:00    

dans ce cas là

Code :
  1. $nom = (isset($_POST['nom'])) ? str_replace(" ", "", $_POST['nom']) : '';
  2. if (empty($nom) ) {
  3.    echo '<p class="red">Veuillez indiquer votre Nom</p>';
  4.    $erreur= 1;
  5. }

Reply

Marsh Posté le 18-07-2008 à 15:58:30    

peux tu s'il te plais me commenter un peu le code ? je n'ai pas l'habitude des commandes raccourcit comme le "?" ou le ":"...

Reply

Marsh Posté le 18-07-2008 à 16:00:38    

pas de probleme:
 
en gros, la syntaxe c'est
 
$nom = (condition) ? (resultat si condition=true) : (resultat si condition = false);

Reply

Marsh Posté le 18-07-2008 à 16:02:25    

haaa, vraiment sympa, je connaissans pas.  
Merci pour votre aide, je vais appliquer tout cela.

Reply

Marsh Posté le 18-07-2008 à 16:09:31    

je vais être chiant mais cela ne fonctionne pas.
ca me renvoie:
Votre nom: jean duppont
 
c'est bon j'ai pigé pourquoi


Message édité par Profil supprimé le 18-07-2008 à 16:10:39
Reply

Marsh Posté le 18-07-2008 à 16:12:40    

C'était quoi le probleme?

Reply

Marsh Posté le 18-07-2008 à 16:43:22    

une erreur de manip je pense, tout fonctionne bien, j'aime beaucoup cette manière de coder une condition sur une seule ligne, très rapide et pratique

Reply

Marsh Posté le 18-07-2008 à 16:47:20    

if(empty($tel) OR !is_numeric($tel) OR (($tel>=0100000000) AND ($tel<=99999999999))){
 
Ca fais trop pour une seule commande ?
 
Me manque plus que ça et j'ai fini, en faite je peux le faire sur deux conditions, mais j'aimerais economiser le code qu'il soit moin "lourd"...


Message édité par Profil supprimé le 18-07-2008 à 16:58:57
Reply

Marsh Posté le 18-07-2008 à 16:59:47    

non, ça fait pas trop, mais perso, je trouve ça assez moche :(

Reply

Marsh Posté le 18-07-2008 à 17:02:59    

Tu a une autre maniere de proceder ?
 
j'ai trouvé cette solution:
$tel = (($_POST['tel']>=0100000000) AND ($_POST['tel']<=99999999999)) ? str_replace(" ", "", $_POST['tel']) : '';
if(empty($tel) OR !is_numeric($tel)){
echo "<p class=\"red\">Veuillez indiquer un numero de telephone valide</p>";
$erreur= 1;
}
 
je pense pouvoir retirer la codition is_numeric, ainsi que le str_replace


Message édité par Profil supprimé le 18-07-2008 à 17:04:13
Reply

Marsh Posté le 18-07-2008 à 17:07:31    

$tel = (($_POST['tel']>=0100000000) AND ($_POST['tel']<=99999999999)) ? $_POST['tel'] : '';
if(empty($tel)){
echo "<p class=\"red\">Veuillez indiquer un numero de telephone valide</p>";
$erreur= 1;
}
 
Voila qui marche !
 
Bon chers programmeurs, vous m'avez été d'un recourt instantané (comme les royco) je vous remercie donc pour tout ce temps que vous m'avez économisé.
Un grand merci à vous donc et un petit clin d'œil à marty McFly, héro de mon film préféré.
 
@bientôt pour de nouvelles aventures Phpesques.

Reply

Marsh Posté le 18-07-2008 à 17:10:57    

a ta place, je mettrais plutot une expression régulière ( http://toutjavascript.com/savoir/savoir22.php3 pour le principe, google pour voir ce que ça donne en php [flemme de chercher inside] )
 
ce qui donnerait, au final
 
$tel = ( isset( $_POST['tel'] ) ) ? $_POST['tel'] : '';
 
if ( !ereg_match("^0[1-9]{1}[0-9]{8}$",$tel) ) {
  echo "<p class=\"red\">Veuillez indiquer un numero de telephone valide</p>";
  $erreur= 1;
}


Message édité par Marty_McFly le 18-07-2008 à 17:13:59
Reply

Marsh Posté le 18-07-2008 à 17:19:02    

Ca marche pas, j'ai la flemme de chercher je fatigue un peu, on remet ca demain après que j'ai cherché, vais pas vous laisser tout faire à ma place non plus, c'est pas correcte.
 
Thx

Reply

Marsh Posté le 18-07-2008 à 17:27:28    

ok, en tout cas j'ai trouvé mon erreur:
je suis distrait, c'est tout
remplace ereg_match( par ereg( et ça va rouler tout seul
 
Résultat:

Code :
  1. $tel = ( isset( $_POST['tel'] ) ) ? $_POST['tel'] : '';
  2. if ( !ereg("^0[1-9]{1}[0-9]{8}$",$tel) ) {
  3.   echo "<p class=\"red\">Veuillez indiquer un numero de telephone valide</p>";
  4.   $erreur= 1;
  5. }

Reply

Marsh Posté le 18-07-2008 à 17:35:55    

Tu gère !
 
Voila qui est parfait.
 
Que c'est bon l'entraide !
 
Thanx à bientôt.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed