Saut de ligne dans un formulaire

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 : Saut de ligne dans un formulaire

Re: Saut de ligne dans un formulaire

par rimie » 19 mai 2011, 20:35

enfinnnnnnnnnnnnnnnn RESOLUUUUUUUUUUUUUUUUUUUUUUUUUUUUU:

il me reste celui la: php-debutant/verifier-les-clefs-premier ... 58634.html

Merci xTG

			function createForm()
			{
				
			$creerForm = '';
			foreach($this->FormField as $k=>$v)
			{
				$creerForm .= $v;
			}
			
			if(preg_match('/type="file"/', $creerForm))
						{
							echo 'file exists<br>';
							
							$form = '<form name="'.$this->name.'" method="'.$this->method.'" action="'.$this->action.'" enctype="'.$this->enctype.'" enccccccccccc>';				
						}
						else
						{
							echo 'file do not exists<br>';
							
							$form = '<form name="'.$this->name.'" method="'.$this->method.'" action="'.$this->action.'" nooooooooooo>';
						}
				
						
				echo $form;
				echo $creerForm;
			

Re: Saut de ligne dans un formulaire

par rimie1 » 19 mai 2011, 17:06

le voila:
public final function __construct($name, $method='', $action='', $enctype='') 
			{
//codes
				
				$this->FormField[] = array( 'type' => "form", 'name' => $name, 'method' => $method, 'action' => $action);
			}

function createForm()
			{
			if(preg_match('/type="file"/', $this->FormField[$k]))
						{
							$form = '<form name="'.$this->name.'" method="'.$this->method.'" action="'.$this->action.'" enctype="'.$this->enctype.'">';				
						}
						else
						{
							$form = '<form name="'.$this->name.'" method="'.$this->method.'" action="'.$this->action.'">';
						}
						
				echo $form;
				
			foreach($this->FormField as $k=>$v)
			{
				
				echo $v;
			}
si j'ai bien compris, mais ca donne un doublon de la tag form

Re: Saut de ligne dans un formulaire

par xTG » 19 mai 2011, 13:33

Il n'y a qu'à prendre ton __construct() il fait ceci :
$this->FormField[] = '<form name="'.$this->name.'" method="'.$this->method.'" action="'.$this->action.'">';
Là tu formattes déjà alors que tu ne devrais que stocker des informations.
A savoir plutôt ainsi :
$this->FormField[] = array( 'type' => "form", 'name' => $name, 'method' => $method, 'action' => $action);
Et ainsi tu ne créerais la chaine que dans la fonction createForm().

Re: Saut de ligne dans un formulaire

par rimie1 » 19 mai 2011, 13:25

Ton gros souci en fait c'est que tu créés des Strings avec tes méthodes add alors qu'il faudrait créer une structure qui sera ensuite mise en forme dans le createForm().
est ce que vous pouvez me donner un exemple.
Pour ton problème faudrait parcourir une fois le tableau pour placer le enctype et ensuite parcourir une seconde fois le tableau pour générer les champs.
cela veut dire que je fois avoir le code en doublon:
foreach($this->FormField as $k=>$v)
					{
// place le enctype
}

foreach($this->FormField as $k=>$v)
					{
// generer les champs
}

Re: Saut de ligne dans un formulaire

par xTG » 19 mai 2011, 13:10

Ton gros souci en fait c'est que tu créés des Strings avec tes méthodes add alors qu'il faudrait créer une structure qui sera ensuite mise en forme dans le createForm().
Mais bon...
Pour ton problème faudrait parcourir une fois le tableau pour placer le enctype et ensuite parcourir une seconde fois le tableau pour générer les champs.

Re: Saut de ligne dans un formulaire

par rimie1 » 19 mai 2011, 12:27

quelque chose du genre:
function createForm()
			{
			
				foreach($this->FormField as $k=>$v)
					{
						if(preg_match('/type="file"/', $this->FormField[$k]))
						{
							$form = '<form name="'.$this->name.'" method="'.$this->method.'" action="'.$this->action.'" enctype="'.$this->enctype.'">';
						}
						else
						{
							$form = '<form name="'.$this->name.'" method="'.$this->method.'" action="'.$this->action.'">';
						}
						
						echo $form;
						echo $v;
					}
		
			}   
puisque je fais foreach ca se repond en toute verification du champs, comment puis je l'afficher une seule fois.

merci xTG

Re: Saut de ligne dans un formulaire

par xTG » 18 mai 2011, 08:04

Ta balise form est déjà formée lors de la construction de ton objet, mais tu sais que c'est la première a être formée.
Elle est donc toujours à l'index 0 de ton tableau.

Tu peux donc dans ta fonction de création du formulaire passer en revue les champs et aller modifier le contenu du premier index de ton tableau en fonction si tu trouves une balise d'upload.

Re: Saut de ligne dans un formulaire

par rimie1 » 17 mai 2011, 20:36

Quel problème ? Celui de l'enctype ? Comme je te l'ai dit il suffit de faire un simple test pour savoir quoi mettre...
j'ai 3 fonctions: une pour la tag form, l'autre pour les inputs, et la 3eme pour generer le formulaire:
<?php
// 1ere de la tag form
public final function __construct($name, $method='', $action='', $enctype='')
$this->FormField[] = '<form name="'.$this->name.'" method="'.$this->method.'" action="'.$this->action.'">';

// 2eme: inputs
public final function addInput($type, $name='', $value='')

//3eme creation du formulaire
function createForm()
			{
							
				foreach($this->FormField as $k=>$v)
					{
					echo $v;
					}
			}   

?>
si un champs input de type file existe, on doit avoir la tag form avec enctype:
$this->FormField[] = '<form name="'.$this->name.'" method="'.$this->method.'" action="'.$this->action.'" enctype="'.$this->enctype.'">';
sinon:
$this->FormField[] = '<form name="'.$this->name.'" method="'.$this->method.'" action="'.$this->action.'">';

Re: Saut de ligne dans un formulaire

par xTG » 17 mai 2011, 08:07

Quel problème ? Celui de l'enctype ? Comme je te l'ai dit il suffit de faire un simple test pour savoir quoi mettre...

Re: Saut de ligne dans un formulaire

par rimie1 » 16 mai 2011, 23:55

y a t il quelqu'un qui a rencontre ce genre de problemes?

Re: Saut de ligne dans un formulaire

par rimie1 » 14 mai 2011, 09:30

Tu as une variable $Formulaire->enctype donc il suffit de la modifier avec la fonction addInput() lorsque tu ajoutes un input file.
oui c'est vrai, l'idee est de changer la tag form pour que ce soit:

avec file:
                                $this->FormField[] = '<form name="'.$this->name.'" method="'.$this->method.'" action="'.$this->action.'" enctype="'.$this->enctype.'">';
sans file:
                                $this->FormField[] = '<form name="'.$this->name.'" method="'.$this->method.'" action="'.$this->action.'">';
enctype ne serait pas dans la tag form

Re: Saut de ligne dans un formulaire

par xTG » 13 mai 2011, 08:04

Tu as une variable $Formulaire->enctype donc il suffit de la modifier avec la fonction addInput() lorsque tu ajoutes un input file.

Re: Saut de ligne dans un formulaire

par rimie1 » 13 mai 2011, 01:16

voila, le saut de ligne c'est fait, ca marche comme je le veux:
<?php
class Formulaire {
    // Toutes les propriétés du formulaire
    
######################################## Form Start ###############################
		public final function __construct($name, $method='', $action='', $enctype='') 
			{
				$this->name 	= $name;
				$this->method 	= $method;
				$this->action 	= $action;
				$this->enctype 	= $enctype;			
				
				$this->FormField[] = '<form name="'.$this->name.'" method="'.$this->method.'" action="'.$this->action.'" enctype="'.$this->enctype.'">';
				
				
			}
		
######################################## Inputs Start #############################	
		public final function addInput($type, $name='', $value='')
			{
				$this->type		= $type;
				$this->name  	= $name;
				$this->value 	= $value;
				
				Switch($this->type)
				{
					case 'text':
					$this->FormField[] .= '<input type="'.$this->type.'" value="'.$this->value.'">';
					break;
					
					case 'password':
					$this->FormField[] .= '<input type="'.$this->type.'" value="valPass">';
					break;
					
					
					case 'file':
					$this->FormField[] .= '<input type="'.$this->type.'">';
					break;
				
			} // EnD Switch
			} // EnD Function



			public final function addTextarea($name)
				{
					$this->FormField[] .= '<textarea name="'.$name.'" cols="20" rows="5">okokok</textarea>';	
				}
				
				
				
	
######################################## Seperation Start #############################
	// separation des champs
	public function Separation()
    {
       $this->FormField[] .= "<br />";
    }
######################################## Seperation End #############################
    
######################################## Inputs Start #############################
			
			function createForm()
			{
							
				foreach($this->FormField as $k=>$v)
					{
					echo $v;
					}
			}   
	
} // EnD class

$frm = new Formulaire('formName', 'met', 'act', 'enc');
$frm->addInput('text', 'nom1', 'valeur1');
$frm->addInput('text', 'nom2', 'valeur2');
$frm->Separation();
$frm->addInput('file', 'nom2', 'valeur2');
$frm->Separation();
$frm->addTextarea('', '', '');
$frm->Separation();
$frm->addInput('text', 'nom3', 'valeur3');
echo $frm->createForm();

?>
le seul soucis c'est de verifier si un input de type file existe pour que la form comporte l'attribut enctype, sinon on ne l'ajoute pas.

Re: Saut de ligne dans un formulaire

par xTG » 12 mai 2011, 08:10

Beh dans ce cas si tu veux varier autant pourquoi ne pas les implémenter comme tu le fais pour les inputs ? Ce sont des "fields" du formulaire.
Concernant la class ce n'est qu'une option d'un field, donc facile à implémenter.

Re: Saut de ligne dans un formulaire

par rimie1 » 12 mai 2011, 04:09

Puisque je te dis que la structure nous importe peu... On se fiche du contenu de l'array, ce qu'on veut c'est l'index du dernier élément.
Relis mon code à tête reposée car visiblement tu n'as rien compris de ce que je t'ai proposé.
je sais qu'il est mal structure, c'est pour cela on ne recupere pas l'index, je cherche a avoir un formulaire, que je peux:

+ Ajouter des champs comme je veux et la quantite que je veux,
+ Les alimenter comme je veux, pas obligatoirement qu'il portent tous des id, class,...
+ Structurer le formulaire comme je veyx.

par exemple:
<form name='nomForm' method='POST' action='' enctype=''>
Label1: <input type='text' name='a1' class="c1"><br>
Label2: <input type='text' name='a2' value='valeur2'><span></span>
Label3: <input type='password' name='p1'><br>
Label4: <input type='file' name='f1'><br>
voila, des champs avec BR, des champs avec SPAN, des champs comportants des CLASS,...

je peux jouer comme je veux avec le formulaire

Merci