Bonjour,

J'ai développé une classe susceptible de tenir compte d'itération (ou d'étape) dans la gestion d'un formulaire ou plutôt des validations de ce dernier.
Donc on ne passe qu'à l'étape suivante si la courante est correcte, voilà l'esprit de la classe....
Un tableau associatif est passé en entrée !
Novice en PHP, j'en fais appel à vos connaissances.
Voici la classe nommé Iter:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
//
// 	Class: Iterations
//	=================
define ("SCREEN"  , "screen" ) ;
define ("ITER"    , "iter"   ) ;

class Iter  
{   var  $step ;

	function __construct($screen,$step)
	{	$this->step = $step ;
		if (isset($_SESSION[SCREEN])) 
			if (strcmp($_SESSION[SCREEN],$screen) != 0) 
				{	$this->step = $step[0] ;
					if (isset($_SESSION[ITER]))
						unset($_SESSION[ITER]) ;  <== 17
				}
		if (isset($_SESSION[ITER]))
			$dummy = $_SESSION[ITER] ;
		else
			$_SESSION[ITER] =  $step[0] ;
	}

	function get()
	{	return( (isset($_SESSION[ITER])) ? $_SESSION[ITER] : $this->step[0]) ;  }

	function set($n)
	{	if (($n >= 0) && ($n <= count($this->step) - 1 ))
  		    $_SESSION[ITER] = $n ;
		return($_SESSION[ITER]) ; 	
	}

	function first()
	{	return($_SESSION[ITER] = 0) ; }

	function next()
	{	return($_SESSION[ITER] =  ($_SESSION[ITER] < count($this->step) - 1) ? ++$_SESSION[ITER] : count($this->step) - 1) ; }

	function prev()
	{	return($_SESSION[ITER] =  ($_SESSION[ITER] > 0) ? --$_SESSION[ITER] : 0 ) ;  }

	function last()
	{	return($_SESSION[ITER] =  count($this->step) - 1) ;  }
	
	function destroy()
	{	unset($_SESSION[ITER]) ;	}
//
// 	End of class: Iter
//	==================
}
?>
Mais en ligne 17 (en gras) j'ai le message suivant de PHP que je ne comprends pas:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
[22-Apr-2010 11:36:36] PHP Fatal error:  Cannot unset string offsets in F:\WebSites\jecrapahute\class\iter.php on line 17
Pouvez-vous m'éclairer ?

Merci d'avance

Esteban