Recuperer les parametres d'une fonction

rimie1
Invité n'ayant pas de compte PHPfrance

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

ViPHP
AB
ViPHP | 5818 Messages

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:

rimie1
Invité n'ayant pas de compte PHPfrance

24 avr. 2011, 03:00

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

rimie1
Invité n'ayant pas de compte PHPfrance

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();

 ?>

rimie1
Invité n'ayant pas de compte PHPfrance

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
        );

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

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(...))
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 7 Messages

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

rimie1
Invité n'ayant pas de compte PHPfrance

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

rimie1
Invité n'ayant pas de compte PHPfrance

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/>