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 :

Addslashes sur un tableau


Sujet :

Langage PHP

  1. #1
    Débutant 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
    Points : 170
    Points
    170
    Par défaut Addslashes sur un tableau
    Bonjour,
    j'ai un p'tit souci de syntaxe quand j'insère des antislaches avant d'insérer dans ma table.
    L'insertion se fait bien mais n'est pas permanente.....

    Voici mon code:

    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
       function Addslashes(&$array) 
       {	reset($array);
    		while (list($key, $value) = each($array)) 
    		{	$value = addslashes($value) ;
    			echo "Key: $key; Value: $value<br />\n";
    		}
    		reset($array);
     
    		while (list($key, $value) = each($array)) 
    		{	//$value = addslashes($value) ;
    			echo "Key: $key; Value: $value<br />\n";
    		}
    		reset($array);
    		return($array) ;
       }
    Et le résultat à l'écran:

    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
    Key: SCREEN; Value: infonmbr
    Key: TITLE; Value: Une simple Info ne coûte rien !
    Key: SUBTITLE; Value: Les non-membres désireux de nous contacter sont priés de le faire
    Key: FORM; Value: infonmbr
    Key: MENU; Value: index
    Key: SUBMENU; Value: membre
    Key: KLIMSG; Value: Vous souhaitez avoir sur [Jecrapahute] sans être membre, c\'est possible ?
    Key: MUSTMBER; Value: 0
    
    
    Key: SCREEN; Value: infonmbr
    Key: TITLE; Value: Une simple Info ne coûte rien !
    Key: SUBTITLE; Value: Les non-membres désireux de nous contacter sont priés de le faire
    Key: FORM; Value: infonmbr
    Key: MENU; Value: index
    Key: SUBMENU; Value: membre
    Key: KLIMSG; Value: Vous souhaitez avoir sur [Jecrapahute] sans être membre, c'est possible ?
    Key: MUSTMBER; Value: 0
    On voit bien que dans la 1ère boucle, la côte est bien échappée mais pas dans la 2ième boucle.

    Un p(rir coup de main svp....
    Esteban

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ta fonction modifie $value mais pas le tableau $array.

    tu peux utiliser array_walk plutôt pour faire ça.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Débutant 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
    Points : 170
    Points
    170
    Par défaut Antislaches et walk_array
    Merci....
    J'essaye mais, voici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
       // ---------------------------------- //
       // Conditionnement en vue du stockage //
       // ---------------------------------- //
       function Addslashes($array) 
       {	array_walk($array,"addslashes") ;	
    		return($array) ;
       }
    Mais log.php râle....

    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
    [16-Jul-2010 11:46:59] PHP Warning:  addslashes() expects exactly 1 parameter, 2 given in F:\WebSites\jecrapahute\class\newScreen.php on line 308
    [16-Jul-2010 11:46:59] PHP Warning:  addslashes() expects exactly 1 parameter, 2 given in F:\WebSites\jecrapahute\class\newScreen.php on line 308
    [16-Jul-2010 11:46:59] PHP Warning:  addslashes() expects exactly 1 parameter, 2 given in F:\WebSites\jecrapahute\class\newScreen.php on line 308
    [16-Jul-2010 11:46:59] PHP Warning:  addslashes() expects exactly 1 parameter, 2 given in F:\WebSites\jecrapahute\class\newScreen.php on line 308
    [16-Jul-2010 11:46:59] PHP Warning:  addslashes() expects exactly 1 parameter, 2 given in F:\WebSites\jecrapahute\class\newScreen.php on line 308
    [16-Jul-2010 11:46:59] PHP Warning:  addslashes() expects exactly 1 parameter, 2 given in F:\WebSites\jecrapahute\class\newScreen.php on line 308
    [16-Jul-2010 11:46:59] PHP Warning:  addslashes() expects exactly 1 parameter, 2 given in F:\WebSites\jecrapahute\class\newScreen.php on line 308
    [16-Jul-2010 11:46:59] PHP Warning:  addslashes() expects exactly 1 parameter, 2 given in F:\WebSites\jecrapahute\class\newScreen.php on line 308
    [16-Jul-2010 11:46:59] PHP Warning:  ********** Insert for SCREEN[INSERT 	INTO screen	(   screen  ,  	title    	,  subtitle 	, 	form   	,    
    										menu    ,	submenu 	,  mustmber 	, klimsg 
    									)
    				 		VALUES 		(   'infonmbr' 		, 	'Une simple Info ne coûte rien !','Les non-membres désireux de nous contacter sont priés de le faire' , 
    				  						'infonmbr' 		, 	'index','membre',
    										'0'	,	'Vous souhaitez avoir sur [Jecrapahute] sans être membre, c'est possible ? '  
    									)] done ! ********** in F:\WebSites\jecrapahute\class\newScreen.php on line 290
    [16-Jul-2010 11:46:59] PHP Notice:  dbInst[Query] return wrong result ====> [INSERT 	INTO screen	(   screen  ,  	title    	,  subtitle 	, 	form   	,    
    										menu    ,	submenu 	,  mustmber 	, klimsg 
    									)
    				 		VALUES 		(   'infonmbr' 		, 	'Une simple Info ne coûte rien !','Les non-membres désireux de nous contacter sont priés de le faire' , 
    				  						'infonmbr' 		, 	'index','membre',
    										'0'	,	'Vous souhaitez avoir sur [Jecrapahute] sans être membre, c'est possible ? '  
    									)] in F:\WebSites\jecrapahute\class\newDB.php on line 170
    Qu'ai je fait ou pas fait ? En tut cas la côte n'est pas échappée.....
    Esteban

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il faut ruser un peu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function myAddslashes(&$value) {
    $value = addslashes($value);
    }
    array_walk($_POST, 'myAddslashes');
    ou alors plus direct :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function myAddslashes($tableau) {
     
    foreach ($tableau as $key=>$value) {
          $tableau[$key] = addslashes($value);
    }
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Débutant 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
    Points : 170
    Points
    170
    Par défaut Antislaches et walk_array
    Merci

    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	function IsrtScreen()
    	{	array_walk($_POST, 'myAddslashes');
    		if ($this->insert_screen($this->TBL_screen) )  
    			user_error("Insert Screen[".$this->screen."] done !", E_USER_WARNING) ;
    		else
    			throw("INSERT SCREEN ERROR: " . $this->myException->display_exception($E) . "<br/>"); 
    		return( $this->TBL_screen );
    	}
    Avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
       function Addslashes($array) 
       {	array_walk($array,"addslashes") ;	
    		return($array) ;
       }
    function myAddslashes(&$value) {
    $value = addslashes($value);
    }
    et mon mon.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
    [16-Jul-2010 12:04:51] PHP Warning:  array_walk() expects parameter 2 to be a valid callback, function 'myAddslashes' not found or invalid function name in F:\WebSites\jecrapahute\class\newScreen.php on line 265
    [16-Jul-2010 12:04:51] PHP Warning:  ********** Insert for SCREEN[INSERT 	INTO screen	(   screen  ,  	title    	,  subtitle 	, 	form   	,    
    										menu    ,	submenu 	,  mustmber 	, klimsg 
    									)
    				 		VALUES 		(   'infonmbr' 		, 	'Une simple Info ne coûte rien !','Les non-membres désireux de nous contacter sont priés de le faire' , 
    				  						'infonmbr' 		, 	'index','membre',
    										'0'	,	'Vous souhaitez avoir sur [Jecrapahute] sans être membre, c'est possible ? '  
    									)] done ! ********** in F:\WebSites\jecrapahute\class\newScreen.php on line 290
    [16-Jul-2010 12:04:51] PHP Notice:  dbInst[Query] return wrong result ====> [INSERT 	INTO screen	(   screen  ,  	title    	,  subtitle 	, 	form   	,    
    										menu    ,	submenu 	,  mustmber 	, klimsg 
    									)
    				 		VALUES 		(   'infonmbr' 		, 	'Une simple Info ne coûte rien !','Les non-membres désireux de nous contacter sont priés de le faire' , 
    				  						'infonmbr' 		, 	'index','membre',
    										'0'	,	'Vous souhaitez avoir sur [Jecrapahute] sans être membre, c'est possible ? '  
    									)] in F:\WebSites\jecrapahute\class\newDB.php on line 170
    [16-Jul-2010 12:04:51] PHP Warning:  Sql error n°[1064] - Msg[You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'est possible ? '  
    									)' at line 6] in F:\WebSites\jecrapahute\class\newDB.php on line 171
    J'ai testé le sql avec Pma, c'est ok si echappé :

    Ou me suis-je trompé ?


    Je trouve que $_post n'est pas forcémént d'actualité, donc, j'ai mis le tableau à échapper....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	function IsrtScreen()
    	{	array_walk($this->TBL_screen , 'myAddslashes');
    		if ($this->insert_screen($this->TBL_screen) )  
    			user_error("Insert Screen[".$this->screen."] done !", E_USER_WARNING) ;
    		else
    			throw("INSERT SCREEN ERROR: " . $this->myException->display_exception($E) . "<br/>"); 
    		return( $this->TBL_screen );
    	}
    Avec le même résultat......
    Esteban

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    La fonction myAddslashes n'est pas trouvé, tu n'as pas du l'écrire comme il faut dans ton script, attention en particulier si tu es dans une classe.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Débutant 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
    Points : 170
    Points
    170
    Par défaut Antislaches et walk_array
    Oui je suis dans une classe et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array_walk($this->TBL_screen , '$this->myAddslashes');
    ne change rien à rien...... décidément, ce n'est pas mon jour !
    Esteban

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    il y a des solutions proposés dans la documentation de array_walk mais utilise plutot ma deuxieme proposition.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Débutant 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
    Points : 170
    Points
    170
    Par défaut Antislaches et walk_array
    La 2 ième, laquelle de 2ième, je n'en ai vu qu'une ?
    Esteban

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Débutant 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
    Points : 170
    Points
    170
    Par défaut Antislaches et walk_array
    Ok trouvé....

    J'ai modifié mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	function IsrtScreen()
    	{	$this->myAddslashes($this->TBL_screen);
    		if ($this->insert_screen($this->TBL_screen) )  
    			user_error("Insert Screen[".$this->screen."] done !", E_USER_WARNING) ;
    		else
    			throw("INSERT SCREEN ERROR: " . $this->myException->display_exception($E) . "<br/>"); 
    		return( $this->TBL_screen );
    	}
    Avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	function myAddslashes($tableau) {
     		foreach ($tableau as $key=>$value) {
          		$tableau[$key] = addslashes($value);
    		}
    	}
    et toujours:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    [16-Jul-2010 12:50:47] PHP Warning:  ********** Insert for SCREEN[INSERT 	INTO screen	(   screen  ,  	title    	,  subtitle 	, 	form   	,    
    										menu    ,	submenu 	,  mustmber 	, klimsg 
    									)
    				 		VALUES 		(   'infonmbr' 		, 	'Une simple Info ne coûte rien !','Les non-membres désireux de nous contacter sont priés de le faire' , 
    				  						'infonmbr' 		, 	'index','membre',
    										'0'	,	'Vous souhaitez avoir sur [Jecrapahute] sans être membre, c'est possible ? '  
    									)] done ! ********** in F:\WebSites\jecrapahute\class\newScreen.php on line 290
    La quote n'est pas échappée.......... d'ou je me plante.....
    Esteban

  12. #12
    Débutant 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
    Points : 170
    Points
    170
    Par défaut Antislaches et walk_array
    Ok trouvé & solutionner....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	function IsrtScreen()
    	{	$this->TBL_screen = $this->myAddslashes($this->TBL_screen);
    		if ($this->insert_screen($this->TBL_screen) )  
    			user_error("Insert Screen[".$this->screen."] done !", E_USER_WARNING) ;
    		else
    			throw("INSERT SCREEN ERROR: " . $this->myException->display_exception($E) . "<br/>"); 
    		return( $this->TBL_screen );
    	}
    avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function myAddslashes($tableau) {
     		foreach ($tableau as $key=>$value) {
          		$tableau[$key] = addslashes($value);
    		}
    		return($tableau) ;
    	}
    A 2 détails près..... c'était ok :

    Maintenant repos et repas....

    Grand merci Sabotage.....
    Esteban

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

Discussions similaires

  1. Références et pointeurs sur un tableau
    Par smag dans le forum C++
    Réponses: 2
    Dernier message: 01/03/2005, 20h29
  2. function sur un tableau
    Par bibi2607 dans le forum ASP
    Réponses: 9
    Dernier message: 17/02/2005, 09h54
  3. Réponses: 2
    Dernier message: 08/04/2004, 16h30
  4. Comment faire un Drag&Drop sur un tableau
    Par Stef.web dans le forum Composants VCL
    Réponses: 6
    Dernier message: 11/10/2003, 13h12
  5. [VBA-E] Dim dynamique sur un tableau
    Par Vince69 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 12/12/2002, 13h32

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