IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Class et syntaxe & errmsg incompris ! [PHP 5.3]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Par défaut Class et syntaxe & errmsg incompris !
    J'ai un souci, ne sachant pas trouver une erreur, j'ai crée une classe Stack pour essayer d'isoler le problème.
    Pour l'instant, je n'ai fait que le reporter... le parent a la classe Stack comme enfant, j'ai du redéfinir 2 méthodes, je ne pensais pas devoir le faire à cause de l'héritage... mais je peux me tromper de sens....
    J'ai 2 problèmes avec cette classe:

    1) PHP me donne un msg d'erreur que je ne peux comprendre, j'ai fait toutes les vérifs possibles et même changer le nom de la variable, rien n'y a fait.

    2) Dans l'itération de mon code qui m'occupe, je stacke 2 messages... et bien j'en ai qu'un seul que je ne peux afficher car une méthode me dit que je n'ai pas de msg empilé....

    Voici le code de la classe:

    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
    		class Stack Extends CheckForm
    		{	protected $stackMsg = array(), $cntStack = 0 ;
    				
    			function __construct()
    			{	$this->emptyStack() ;  	}
    			
    			function __destruct()
    			{}
    			
    			function stackMessage($msg)
    			{	
    //   			print("Stacking[".$msg."]") ;
    			
    				$this->stackMsg[] = $msg . "<br>\n" ; 
    				$this->cntStack++ ; 
    				
    				print_r($this->stackMsg); 
    			}
    			
    			function getStackError()
    			{	$str = "" ; 
    //				print("getStackError[".$this->getStackCntError()."]") ;
    Ligne 463 ==>	for ($i = 0 ; $i < $this->cntStack ; $i++)
    					$str .= $this->stackMsg[$i] ;
    				return($str) ; 
    			}
    			
    			function getStackCntError()
    			{	return($this->cntStack) ; 	}
    			
    			function emptyStack()
    			{	$this->cntStack = 0 ;
    				$this->stackMsg = array() ;	 
    			}
    		}
    L'erreur PHP est la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [25-May-2010 20:47:27] PHP Notice:  Undefined property: Checkform::$stackCnt in F:\WebSites\test\checkform.php on line 463
    [25-May-2010 20:48:09] PHP Notice:  TEXT Validating FILLED[xs ffffffffffffffffffffffffsssss] in F:\WebSites\test\checkform.php on line 384
    [25-May-2010 20:48:09] PHP Notice:  Undefined property: Checkform::$cntStack in F:\WebSites\test\checkform.php on line 463
    Le msg Checkform::$cntStack semble vouloir dire que la propriété $cntStack appartient à le classe Parent et non à la classe Stack... mais alors je ne comprends pas pkoi PHP ne donne pas le même msg pour chaque occurence de cette propriété!

    L'affichage du stack est ici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Array ( [0] => Le champ[prenom] doit avoir une longueur comprise entre 3 et 30
    ) Array ( [0] => Le champ[nom] doit avoir une longueur comprise entre 3 et 30
    )
    En gras, l'indice du stack qui est incrémenté mais où; quand, comment ?

    J'accède 2X au stack et au même indice alors que celui-ci est incrémenté.

    A la sortie de ma forme, je veux afficher mon stack, dans ma classe parent, j'ai du redéfinir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    //          ==================================	
    //          All Error Stacking functions			
    //          ==================================	
    			function stackMessage($msg)
    			{	Stack::stackMessage($msg) ; }
     
    			function getStackError()
    			{	return(Stack::getStackError() ) ; }
    Et rien à la sortie... bon je laisse cela pour mes rêves de nuit....

    Bonne chance et merci aux lecteurs....

  2. #2
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Bonsoir,

    quetion bete mais à tout hasard n'essaies tu pas d'accéder à la méthode getStackError() avant d'initialiser/incrémenter ta propriété cntStack ?

    Quelle est l'imbrication de tes méthodes entre elles ?

  3. #3
    Membre éclairé Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Par défaut Class etc....
    Bsoir,

    Je ne peux répondre que rapidement à tes questions maintenant:

    Dans la classe Parent (donc CheckForm ) j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //          ==================================	
    //          All Error Stacking functions			
    //          ==================================	
    			public function stackMessage($msg)
    			{	Stack::stackMessage($msg) ; }
     
    			public function getStackError()
    			{	return(Stack::getStackError() ) ; }
    Ceci c'est l'héritage tel que je le pensais mais je me suis trompé de sens.... enfant => parent ou l'inverse.....

    Mais autrement non ....

    Que veux tu dire par imbrication de mes méthodes ou plutôt précise ta question car je pense que si j'ai pu isoler dans une classe toutes ces méthodes, c'est bien parce que elles portent sur le même object sans autre interaction....

    @demain

  4. #4
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Non je voulais juste dire que peut etre (sait on jamais) tu accèdes à la propriété cntStack via la méthode getStackError() SANS avoir au préalable lancé emptyStack() ou stackMessage() qui initialise ta propriété d'où ton erreur car bien sur il ne s'agit pas de faire un

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    protected $cntStack = 0 ;

    pour que cette propriété soit appliquée à ton objet mais je dois rien t'apprendre là

    @+

  5. #5
    Membre éclairé Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Par défaut Erreur de classe ????
    Madfrix,


    Tu n'as sous les yeux qu'une partie du code que je veux bien t'envoyer....*

    Donc j'ai un formulaire HTML avec l'event submit intercepté via $_POST
    A ce moment, j'instancie la classe CheckForm et toute sa peuplade d'enfants dont Stack, MAIS PAS LES CLASSES CORRESPONDANT à un type de donnée!
    Le proprieté emptyStack n'est appelée que dans le constructeur de Stack
    Hier soir, j'ai encore travailllé un peu et ajouté PRIVATE/PUBLIC/PROTECTED aux méthodes de Stack mais rien n'y fit.....

    Tu as la nouvelle mouture ci-dessus avec un peu + de CheckForm....
    J'y ai ajouté un interface auquel cette peuplade de classe (une par type de donnée ou contrôle de champ) et allégé un peu mon code, c'était ma question de la semaine dernière.

    Je ne savais pas qu'on pouvait étendre une classe et initialiser un interface en même temps....


    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    		
    //	========================================================================================================================================================== //
    		class Stack Extends CheckForm
    		{	private $stackMsg = array(), $cntStack = 0 ;
    					
    			function __construct()
    			{	$this->emptyStack() ;  	}
    				
    			function __destruct()
    			{}
    				
    			public function stackMessage($msg)
    			{	$this->stackMsg[] = $msg . "<br>\n" ; 
    				$this->cntStack++ ; 
    // 				print("Stacking[".$msg."] - cntStack[".$this->cntStack."]") ;
    //				print_r($this->stackMsg); 
    			}
    				
    			public function getStackError()
    			{	$str = "" ; 
    //				print("getStackError[".$this->cntStack."]") ;
    				for ($i = 0 ; $i < $this->cntStack ; $i++)
    					$str .= $this->stackMsg[$i] ;
    				return($str) ; 
    			}
    				
    			private function emptyStack()
    			{	$this->cntStack = 0 ;
    				$this->stackMsg = array() ;	 
    			}
    		}
    //	========================================================================================================================================================== //
    //		MAIN CLASS:   =========>>>>>>  CheckForm	
    //	========================================================================================================================================================== //
        	class Checkform
    		{	private $form, $cntField, $cntFilled, $valid, $message ;
    	
    			private $errMsg = array( 	VIDE  => "Prêt à recevoir l'encodade de votre formulaire"     ,
     										KO    => "Veuillez corriger les fautes/complètez votre formulaire"   ,
    										OK    => "Parfait, pas(plus) d'erreur(s) dans ce formulaire"   
    					 			   ) ;
    //
    //
    //	
    			function __construct($form)
    			{	# On calcule le nombre d'entrée du tableau
        			$this->form  	  = $form ;
    				$this->cntField   = count($this->form);
    				$this->formValid  = false ;
    
    //
    //              Error Handler
    //				=============				
    				try {
    					$this->Validate() ;
    				}	catch (Exception $E)
    					{	$this->exception_handler($E) ; }
    #
    #				Choix du message en fonction du nbre de champ remplit OUI || NON
    #					
    				if ($this->cntFilled == 0)
    					$msg = VIDE ;
    				elseif ($this->cntFilled < $this->cntField)
    					$msg = KO ;
    				else
    					$msg = OK ;
    //				print($this->cntFilled . "/" . $this->cntField) ;
    				$this->setMessage($msg) ;
    			}
    			
    			private function getCountFields()
    			{ 	return($this->cntField) ;	}
    			
    //          ==================================	
    //          All Error Stacking functions			
    //          ==================================	
    LES 2 SEULES METHODES DE STACK QUE J'AI DU DEFINIR DANS CHECKFORM			public function stackMessage($msg)
    			{	Stack::stackMessage($msg) ; }
    			
    			public function getStackError()
    			{	return(Stack::getStackError() ) ; }
    //          ==================================	
    //          All Screen message area routines			
    //          ==================================
    POUR L'ECRAN HTML	
    			public function setMessage($msg)
    			{	$this->message = $msg ;      }   
    
    			public function getMessage()
    			{	return($this->errMsg[$this->message]) ;  	}
    //          ==================================	
    			public function isFormValid()
    			{	return($this->formValid) ; }
    
    			protected function chkRange($value,$min,$max)
    			{	$len = strlen($value) ;
    //				print("ChkRange[".$value."][".$len."][".$min."][".$max."]") ;
    				return( $len >= $min && $len <= $max) ;  
    			}
    			
    			private function Validate()
    			{	$this->cntFilled = 0 ;
    			
    				for($i = 0 ; $i < $this->getCountFields() ; $i++) 
    Validator = Interface ==>{	if ($this->form[$i] instanceof Validator)
    						if ($this->form[$i]->Filled() )
    							{	$this->cntFilled++ ;
    								$this->form[$i]->Validate() ;
    							}
    				}
    			}
    //
    //          Error Handler Processing
    //			========================	
    			function exception_handler($E)
    			{	$T = $E->getTrace() ; 
    			//	======================================================================
    				print("FORM Validator error diagnostic" .  "<br>\n") ;
    				print("=======================" .  "<br>\n") ;
     				print("Message: " . $E->getMessage() . " - File: " . $E->getFile() . " - Line: " . $E->getLine() . "<br>\n") ;
    				print("<br>\n") ;
    				print("Trace: " . "<br>\n") ;
    				print("------ " . "<br>\n") ;
    				print( "   => File               : " . $T[0]["file"]     . "<br>\n") ;
    				print( "   => calling instruction: " . $T[0]["line"]     . "<br>\n") ;
     				print( "   => error class        : " . $T[0]["class"]    . "<br>\n") ;
    				print( "   => error function     : " . $T[0]["function"] . "<br>\n") ;
    				//	======================================================================
    				user_error("Connexion error in File: (" . $E->getFile() . ") - line: (" . $E->getLine() . ")" , E_USER_WARNING) ;  
       			}
    //	
    //      End of class CheckForm
    //		======================		
    		}

    Les 2 autres méthodes dans CheckForm sont pour l"affichage du formulaire.

    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    //	========================================================================================================================================================== //
    //			
    //	========================================================================================================================================================== //
    //INSTANCIATION des CONTROLES
    	$prenom 	= new Text   	( 	"prenom"	,  	MUST , 	A€ , 	WARN 	,  3, 30   						) ;
    	$nom    	= new Text 		( 	"nom"		,   MUST , 	A€ , 	WARN 	,  3, 30 						) ;
    	$email  	= new Email 	(	"email"		, 	MUST , 			WARN 	,  3, 30 						) ;
    	$cemail  	= new Email 	(	"cemail"	, 	MUST , 			WARN 	,  3, 30 						) ;
    	$phone 		= new Phone  	(   "phone"		, 	MUST , 			WARN	, 10, 10 						) ;   
    	$pass 		= new Password  (	"pass" 		, 	MUST , 	ANUM , 	WARN 	,  6 , 8 						) ;    	
    	$cpass 		= new Password  (   "cpass" 	, 	MUST , 	ANUM , 	WARN 	,  6 , 8 						) ;
    /*
    	$type 	    = new DontSel   (   "type"  	,  	MUST , 	 	 	WARN 	,   $type 						) ;
    	$area  		= new Textarea  (   "area" 		,	MUST , ANUM€ , 	WARN 	, 10, 500 						) ;
    	
    	$little		= new Little   	(   "little" 	,	MUST ,      	WARN 	, 10    						) ;
    	$great  	= new Greater 	(   "greater"	, 	MUST ,   	 	WARN 	, 500 							) ;
    	$reg		= new RegExp 	(   "regexp" 	,	MUST ,   	 	WARN 	, "" 							) ;
    	$dontsel   	= new DontSel 	(   "dontsel" 	,	MUST ,   	 	WARN 	, 0 							) ;
    	$samepass   = new EqualPass (   "equalpass" ,	MUST ,   	 	WARN 	, $pass  , $cpass 		 		) ;	
    	$samemail   = new EqualMail (   "equalmail" ,	MUST ,   	 	WARN 	, $email , $cemail 		 		) ;
    	$function   = new Funct     (   "function " ,	MUST ,   	 	WARN 	, $address , "msgT" , "msgF" 	) ;
    */				
    
    	$form = array   (   $prenom 	,
    						$nom    	,	
    						$email  	,
    						$cemail 	, 	
    						$phone 		,	
    						$pass 		,	
    						$cpass 		
    					);
    						
    /*						$prenom 	,
    						$nom    	,	
    						$email  	,
    						$cemail 	, 	
    						$phone 		,	
    						$pass 		,	
    						$cpass 		
    						,	
    						$type 		,    
    						$area  		,	
    						$little		,	
    						$great  	,	
    						$reg		,	
    						$dontsel	,   	
    						$samepass 	,  
    						$samemail 	,
    					    $function 
    */
    					
    INSTANCIATION de CHECKFORM.... APRES !!!!	
    
    $cf = new checkform($form);
    			
       	if (isset($_POST['chkform']))
    		{	if ($cf->isFormValid())
    				{	# Formulaire valide
        				# Instruction ...
        			}
        		else 
    				{	# Sinon ...
        		 		# Instruction ...
    				}
        	}
        ?>
    Et mon formulaire (où je ne mets que ls 2 parties ayant du PHP ....)

    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
    <form action="<?php $_SERVER['PHP_SELF']; ?>" method="post" name="formtest">
    <table width="615" border="0">
      <tr>
        <td>&nbsp;</td>
        <td colspan="6"><div align="center" class="style1">Validation de votre formulaire </div></td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td colspan="8"><hr /></td>
      </tr>
      <tr>
        <td height="104">&nbsp;</td>
        <td colspan="6" align="center">
            <textarea name="textarea2" cols="70" rows="5"><?php echo $cf->getStackError()?></textarea>
         </td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td colspan="8"><hr /></td>
      </tr>
      <tr>
        <td width="60">Prenom</td>
        <td colspan="3"><input type="text" name="prenom" maxlength="32" value="<?php if (isset($_POST['prenom'])) echo $_POST['prenom'] ?>"/></td>
        <td width="127">Nom</td>
        <td width="163"><input type="text" name="nom"   maxlength="32" value="<?php if (isset($_POST['nom'])) echo $_POST['nom'] ?>" /></td>
        <td width="54">&nbsp;</td>
        <td width="61">&nbsp;</td>
      </tr>
      <tr>
        <td>Email</td>
    
    ....
    .....
    ...
      </tr>
      <tr>
        <td><input type="reset"  name="effacer"   value="Effacer"/></td>
        <td colspan="6"><input type="text"   size=60 name="message"   value="<?php if (isset($cf)) echo $cf->getMessage() ?>" /></td>
        <td><input type="submit" name="chkform"   value="Envoyer"/></td>
      </tr>
    </table>
    Voilà, tu en sais presque autant que moi sur ce travail mais bien plus que moi en PHP.... je reste un novice tu sais....

    Comme tu voix, j'ai encore du boulot..... mais je me pose une question, j'instancie (dans la chronologie) les enfants avant de leur donner un parent.... normal ?

    @+

  6. #6
    Membre éclairé Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Par défaut Class et syntaxe & errmsg incompris !
    Cela se complique, je veux comprendre mais j'arrête tant que....
    J'ai rajouté une méthode Message simple, on ne peut + con... et j'ai le même type de msg qu'hier....
    Voici la classe:


    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
    //	========================================================================================================================================================== //
    //		MESSAGE	
    //	========================================================================================================================================================== //
    		class Message Extends CheckForm
    		{	private $msg, $errMsg = array( 	VIDE  => "Prêt à recevoir l'encodade de votre formulaire"     ,
     											KO    => "Veuillez corriger les fautes/complètez votre formulaire"   ,
    											OK    => "Parfait, pas(plus) d'erreur(s) dans ce formulaire"   
    					 			   		 ) ;
    		
    			function __construct()
    			{	}
    				
    			function __destruct()
    			{	}
    				
    			protected function setMessage($cntFilled,$cntField) 
    			{	if ($cntFilled == 0)
    					$this->msg = VIDE ;
    				elseif ($cntFilled < $cntField)
    					$this->msg = KO ;
    				elseif ($cntFilled == $cntField)
    					$this->msg = OK ;
    				else
    					throw new Exception("Count [field filled] greater than [total count form fields] !") ;
    //				print($this->cntFilled . "/" . $this->cntField) ;
    			}
    
    			public function getMessage()
    Ligne 508 ==>	{	return( $this->errMsg[$this->msg] ) ;  }   
    		}
    Et voici les 2 msgs d'erreur, celui d'hier et le nouveau...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [26-May-2010 10:02:10] PHP Notice:  Undefined property: Checkform::$cntStack in F:\WebSites\test\checkform.php on line 470
    [26-May-2010 10:02:10] PHP Notice:  Undefined property: Checkform::$errMsg in F:\WebSites\test\checkform.php on line 508
    Qui m'expliquera ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 14
    Dernier message: 04/12/2005, 09h08
  2. [deb.]Probleme de syntax decl de pl class
    Par Marc_3 dans le forum C++
    Réponses: 11
    Dernier message: 01/12/2005, 13h23
  3. Réponses: 13
    Dernier message: 15/11/2005, 16h47
  4. syntaxe css lien sur classe
    Par mussara dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 03/08/2005, 10h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo