Recuperer les parametres d'une fonction

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 : Recuperer les parametres d'une fonction

Re: Recuperer les parametres d'une fonction

par rimie1 » 25 avr. 2011, 07:29

rebonjour,

apres de nombreuses essais, je suis arrivee a recuperer les valeurs de la fonction, mais ne s'affichent pas au formulaire:
<?php

class Formulaire {
	
	private $options = array();
	
	public final function addInput($type, $name='', $value='', $options){ // j'ai precise options pour le reste des valeurs
	
		$this->options = array('id'=>$id, 'class'=>$class);
		$this->options = $options;
				
				
				
	public final function generateForm()
		{
		echo 'this option: '.var_dump($this->options).'<br>';
		
			foreach($this->options as $k => $v)
				{
				
					echo "<font color='red'>$k=>$v</font><br>";
				} // end foreach
		}// end generateForm



}// end class

$f = new Formulaire('monForm1', '', '', 'ici je vais mettre enctype');

$f->addInput('text', 'nomText', 'valTxt', array('id' => 'MyText2', 'class' => 'maClass')); // text
?>
le resultat html de l'input text:
<input type="text" name="nomText" value="valTxt"   m/>

Re: Recuperer les parametres d'une fonction

par rimie1 » 25 avr. 2011, 04:55

merci AB, Ryle et mecanique, je vais les prendre en consideration, j'aimerais ajouter une option:
public final function addInput($type, $name='', $value='', $options){ // j'ai precise options pour le reste des valeurs

$this->options [] = array('id'=>$id, 'class'=>$class);

foreach($this->options as $k => $v)
		{
echo 'this option: '.var_dump($this->options).'<br>';
		}

}

$f->addInput('text', 'nomText', 'valTxt', array('id' => 'MyText2', 'class' => 'maClass')); // 
alors j'ai ajoute options pour id et class, afin de les utiliser comme cas optionnel, parce que non pas tous les inputs portent un id ou une class, le resultat de var_dump donne: array(1) { [0]=> array(2) { ["id"]=> NULL ["class"]=> NULL } }, les valeurs sont NULL, alors qu'elles ont deja des valeurs MyText2 et maClass, je pense qu'il y a un bug

merci

Re: Recuperer les parametres d'une fonction

par mecanique » 24 avr. 2011, 19:08

essayer de regarder ces deux vidéos ils sont très utile pour les fonctions

http://course-education.blogspot.com/20 ... n-php.html
http://course-education.blogspot.com/20 ... php-2.html

Re: Recuperer les parametres d'une fonction

par Ryle » 24 avr. 2011, 11:25

Le message d'AB t'indique de faire attention avec l'utilisation de strpos, dans la mesure où celui-ci va retourner FALSE (que php interprète de la même manière que la valeur 0) lorsque la chaine n'est pas trouvée, mais va également te retourner 0 (un vrai cette fois) lorsque la chaine est trouvée à la position 0.

Pour différencier les deux on utiliser l'opérateur === ou !== (au lieu de == et !=), qui va non seulement vérifier la valeur (0 dans les deux cas), mais également le type (booléen pour false, et entier pour 0). On va ainsi pouvoir distinguer le 0 du FALSE :)

Quant à ta deuxième question, les crochets après une variable (lorsque cette variable est un tableau) permettent d'ajouter un élément à la suite dans le tableau. C'est une syntaxe équivalente à la fonction array_push()

Dans ton cas, $this->fields est un tableau, dans lequel tu rajoutes un élément, cet élément étant lui même un tableau ( array(...))

Re: Recuperer les parametres d'une fonction

par rimie1 » 24 avr. 2011, 04:42

ce signe [] signifie quoi exactement dans:
        $this -> fields[] = array(
           'type' => $type,
           'name' => $name,
           'value' => $value,
           'size' => $size,
           'maxlength' => $maxlength,
           'checked' => $checked,
           'class' => $class
        );

Re: Recuperer les parametres d'une fonction

par rimie1 » 24 avr. 2011, 03:27

rebonjour,

j'ai realise que les valeurs (value) portees a mon formulaire sont les meme:
<form name="nomPass" method="" action="" ici je vais mettre enctype>
<input type="file" name="" />
<input type="password" name="" value="valPass" size="" maxlength="" id="" class="" />
<input type="text" name="" value="valPass" size="" maxlength="" id="" class="" />
et le code:
<?php
class Formulaire {
// Toutes les propriétés du formulaire
	private $form = array();
    private $method; // POST et GET
	private $action;
	private $name;
    private $value;
    private $type = array(); // text, password, button, submit, radio, checkbox
    private $id;
    private $class;
    private $size;
    private $maxlength;
    private $cols;
    private $rows;
    private $enctype;
	private $typeLoop;
	

######################################## Form Start #############################
	public final function __construct($name, $method='', $action='', $enctype='') { //name est obligatoire
		$this->name = $name;
		$this->method = $method;
		$this->action = $action;
		$this->enctype = $enctype;
	
	} // end __construct function
######################################## Form End #############################	

######################################## Inputs Start #############################	
	public final function addInput($type, $name='', $value='', $size='', $maxlength='', $checked=''){ // type est obligatoire

		$this->type = $type;
		$this->name = $name;
		$this->value = $value;
		$this->size = $size;
		$this->maxlength = $maxlength;
		$this->checked = $checked;	
		
		$this->type = array('file', 'password', 'text');

        
	}// end addInput function
####################################### Inputs End #############################
	
######################################## Generate Form Start #############################

	public final function generateForm()
		{
		
		echo 'enctype'.$this->enctype.'<br>';
		
		// l'entete du formulaire	
		if($this->enctype)
		{
			//echo $enctype;
			$form = '<form name="'.$this->name.'" method="'.$this->method.'" action="'.$this->action.'" '.$this->enctype.'>';
		}
		else
		{
			$form = '<form name="'.$this->name.'" method="'.$this->method.'" action="'.$this->action.'">';
		}
	
	
	
	foreach($this->type as $typeLoop)
	{		
		// les inputs	
		switch($typeLoop)
	{
		
		case 'text':
		$form .= '<input type="'.$typeLoop.'" name="'.$name.'" value="'.$this->value.'" size="'.$size.'" maxlength="'		.$maxlength.'" id="'.$id.'" class="'.$class.'" />';
		break;
		
		case 'password':
		$form .= '<input type="'.$typeLoop.'" name="'.$name.'" value="'.$this->value.'" size="'.$size.'" maxlength="'		.$maxlength.'" id="'.$id.'" class="'.$class.'" />';
		break;
		
		case 'hidden':
		$form .= '<input type="'.$typeLoop.'" name="'.$name.'" value="'.$value.'" />';
		break;
		
		case 'file':
		$form .= '<input type="'.$typeLoop.'" name="'.$name.'" />';
  		break;
		
		// par defaut un text
		default:
		$form .= '<input type="text" name="'.$name.'" value="'.$value.'" size="'.$size.'" maxlength="'.$maxlength.'" id="'.$id.'" class="'.$class.'" />';	
		
		} // end switch
	
	
	} // end foreach
	return $form;
	
	}// end function generateForm
	
	
######################################## Generate Form End #############################
} // end class
        
$f = new Formulaire('monForm1', '', '', 'ici je vais mettre enctype');

$f->addInput('text', 'nomText', 'valTxt'); // text
$f->addInput('file', 'nomFile', 'valFile'); // file upload
$f->addInput('password', 'nomPass', 'valPass'); // password


echo $f->generateForm();

 ?>

Re: Recuperer les parametres d'une fonction

par rimie1 » 24 avr. 2011, 03:00

Attention, avec "strpos" il faut faire :
je n'ai pas compris votre intervention AB

Re: Recuperer les parametres d'une fonction

par AB » 22 avr. 2011, 16:52


Plus simple, tu as le strpos :
if (strpos($this ->var3, 'form')) { // blabla }
Attention, avec "strpos" il faut faire :
if (strpos($this ->var3, 'form') !== false) { // blabla }
pour différencier une expression trouvée en position 0, d'une expression non trouvée, cf manuel :wink:

Re: Recuperer les parametres d'une fonction

par rimie1 » 22 avr. 2011, 05:41

j'ai mal ferme une accolade, j'aimerais passer a une autre option, par exemple:

les champs obligatoires dans les inputs sont: type, name, value.
les champs secondaire sont: id, class, checked,...
ma fonction serait du type:
public final function addInput($type, $name='', $value='', $options=array(){ // j'ai precise options pour le reste des valeurs
comment faire afin de lister les valeurs qui peuvent etre comme options, et obtenir un affichage du type:
$f -> addInput ('text', 'nom', 'valeur', array ('id' => 'monID', 'class' => 'maClass'));
et meme si par exemple j'ai un autre input comme:
$f -> addInput ('text', 'nom', 'valeur', array ('checked' => 'checked'));
si vous avez remarque je n'ai pas cite dans le 2eme exemple ni l'id ni la class

merci

Re: Recuperer les parametres d'une fonction

par rimie1 » 22 avr. 2011, 05:01

je l'ai fait dans ma fonction addInput:

// je l'ai mis en array
private $type = array(); // text, password, button, submit, radio, checkbox

public final function addInput($type, $name='', $value='', $size='', $maxlength='', $checked=''){ // type est obligatoire

		$this->type = $type;
		$this->name = $name;
		$this->value = $value;
		$this->size = $size;
		$this->maxlength = $maxlength;
		$this->checked = $checked;	
		
// je l'ai remplis par les types des inputs
		$this->type = array('file', 'password');

// j'ai effectue le loop
foreach($this->type as $typeLoop)
	{
		echo $typeLoop.'<br>';
		// les inputs
		
		switch($typeLoop)
	{

Re: Recuperer les parametres d'une fonction

par nhachet » 21 avr. 2011, 11:49

Salut,

malheureusement ton code ne permet pas de gérer plusieurs inputs dans ton formulaire. Il faut absolument que tu passes par un tableau pour stocker tes inputs. Ce tableau sera exploité lors du generate() pour afficher la formulaire.

Re: Recuperer les parametres d'une fonction

par rimie1 » 21 avr. 2011, 04:54

rebonjour Nicolas,
je l'ai fait d'une autre facon, je n'aime pas copier/coller les codes, et je voudrais apprendre:
<?php
class Formulaire {
// Toutes les propriétés du formulaire
	private $form = array();
    private $method; // POST et GET
	private $action;
	private $name;
    private $value;
    private $type = array(); // text, password, button, submit, radio, checkbox
    private $id;
    private $class;
    private $size;
    private $maxlength;
    private $cols;
    private $rows;
    private $enctype;
	private $typeLoop;
	

######################################## Form Start #############################
	public final function __construct($name, $method='', $action='', $enctype='') { //name est obligatoire
		$this->name = $name;
		$this->method = $method;
		$this->action = $action;
		$this->enctype = $enctype;
	
	} // end __construct function
######################################## Form End #############################	

######################################## Inputs Start #############################	
	public final function addInput($type, $name='', $value='', $size='', $maxlength='', $checked=''){ // type est obligatoire

		$this->type = $type;
		$this->name = $name;
		$this->value = $value;
		$this->size = $size;
		$this->maxlength = $maxlength;
		$this->checked = $checked;	
		
		$this->type = array('file', 'password');
        
	}// end addInput function
####################################### Inputs End #############################
	
######################################## Generate Form Start #############################

	public final function generateForm()
		{
		
		echo 'enctype'.$this->enctype.'<br>';
		
		// l'entete du formulaire	
		if($this->enctype)
		{
			//echo $enctype;
			$form = '<form name="'.$this->name.'" method="'.$this->method.'" action="'.$this->action.'" '.$this->enctype.'>';
		}
		else
		{
			$form = '<form name="'.$this->name.'" method="'.$this->method.'" action="'.$this->action.'">';
		}
	
	
	
	foreach($this->type as $typeLoop)
	{
		echo $typeLoop.'<br>';
		// les inputs
		
		switch($typeLoop)
	{
		
		case 'password':
		$form .= '<input type="'.$this->type.'" name="'.$name.'" value="'.$value.'" size="'.$size.'" maxlength="'		.$maxlength.'" id="'.$id.'" class="'.$class.'" />';
		break;
		
		case 'hidden':
		$form .= '<input type="'.$this->type.'" name="'.$name.'" value="'.$value.'" />';
		break;
		
		case 'file':
		$form .= '<input type="'.$this->type.'" name="'.$name.'" />';
  		break;
		
		// par defaut un text
		default:
		$form .= '<input type="text" name="'.$name.'" value="'.$value.'" size="'.$size.'" maxlength="'.$maxlength.'" id="'.$id.'" class="'.$class.'" />';	
		
		} // end switch
	
	
	
	return $form;
	}
	}// end foreach
	
	
######################################## Generate Form End #############################
} // end class
        
$f = new Formulaire('monForm1', '', '', 'ici je vais mettre enctype');
$f->addInput('file', 'nomFile', 'valeur'); // file upload
$f->addInput('password', 'nomFile', 'valeur'); // file upload


echo $f->generateForm();

 ?>
le probleme dans mon code:
+ Il genere le formulaire avec l'input file,
+ Il met taitau type 'Array'

Code : Tout sélectionner

enctypeici je vais mettre enctype<br>file<br><form name="nomFile" method="" action="" ici je vais mettre enctype><input type="Array" name="" />

Re: Recuperer les parametres d'une fonction

par nhachet » 20 avr. 2011, 12:15

// pourquoi on les a mis dans un tableau?
public $infos = array();
public $fields = array();
Ces 2 variables sont en fait des variables d'instance de la classe Form. Cela signifie qu'elles sont propres à chaque objet Form créé (si on créé 2 Form avec $f = new Form(); $f2 = new Form();, $f et $f2 auront chacun des variables $infos et $fields indépendantes).

Le tableau $fields prend du sens car un formulaire est composé de un ou plusieurs champs. L'intérêt du tableau est de pouvoir en ajouter autant que nécessaire.
Le tableau $infos est une préférence personnelle, on aurait très bien pu écrire ceci à la place :
$this -> name = null;
$this -> method = null;
$this -> action = null;
$this -> enctype = null;
Ça rejoint le code ci-dessous :
// pourquoi on a fait $this->infos['champs'] = $champs et on n a pas fait la methode classique: $this->champs = $champs;
$this -> infos ['name'] = $name;
                $this -> infos ['method'] = $method;
                $this -> infos ['action'] = $action;
                $this -> infos ['enctype'] = $enctype;
Qui aurait pu être écrit de la sorte si on avait pas utilisé le tableau $infos mais des variables de classe différentes pour chaque info :
$this -> name = $name;
$this -> method = $method;
$this -> action = $action;
$this -> enctype = $enctype;
Enfin, le code suivant permet d'ajouter un champ dans la liste des champs de notre instance Form. Pour faire simple, on ajoute des champs à notre formulaire. Dans la suite du code on parcourt ce tableau pour générer le formulaire (voir fonction render()).
// pourquoi on les a mis dans un tableau:
$this -> fields[] = array(
           'type' => $type,
           'name' => $name,
           'value' => $value,
           'size' => $size,
           'maxlength' => $maxlength,
           'checked' => $checked,
           'class' => $class
        );
Bon courage

Re: Recuperer les parametres d'une fonction

par rimie1 » 20 avr. 2011, 04:18

est ce que vous pouvez m'expliquer ces lignes:
// pourquoi on les a mis dans un tableau?
public $infos = array();
public $fields = array();

// pourquoi on a fait $this->infos['champs'] = $champs et on n a pas fait la methode classique: $this->champs = $champs;
$this -> infos ['name'] = $name;
                $this -> infos ['method'] = $method;
                $this -> infos ['action'] = $action;
                $this -> infos ['enctype'] = $enctype;


// pourquoi on les a mis dans un tableau:
$this -> fields[] = array(
           'type' => $type,
           'name' => $name,
           'value' => $value,
           'size' => $size,
           'maxlength' => $maxlength,
           'checked' => $checked,
           'class' => $class
        );

merci

Re: Recuperer les parametres d'une fonction

par rimie1 » 19 avr. 2011, 03:21

merci Nicolas, c'est ce que je cherchais:
// Détecte si un champ INPUT type file est présent
        $fileFound = false;
        foreach ($this -> fields as $field) {
                if ($field['type'] == 'file') {
                        $fileFound = true;
                        break;
                }
        }
merci aux autres, j'ai appris aussi des trucs de leurs reponses :)

Je continuerais sur ce topic Formulaire avec OOP