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

PHP & Base de données Discussion :

Caractères spéciaux et addslashes..


Sujet :

PHP & Base de données

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 Caractères spéciaux et addslashes..
    Bonjour à tous,

    J'ai une table que je mets à jour avec un tableau associatif qui contient le nom et la valeur de chaque champ.
    Avant mise à jour, je souhaite passer une fonction pour l'habillage des champs et ternir compte des caractères spéciaux en utilisant addslashes....
    Voici le code utilisé... le tableau en question s'appelle $TBL_screen mais est déjà passé comme paramètre....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function AddSlashes(&$TBL)
    {	foreach($TBL as $key => $val)
      	{	user_error("AddSlashes Val -> " . $key . " => " . $val , E_USER_NOTICE) ;
    		$val = addslashes($val) ;
    		user_error("AddSlashes Val -> " . $key . " => " . $val , E_USER_NOTICE) ;
    	}
    }
    Ici je passe par référence alors que je croyais qu'en PHP5, c'était tjs par référence.....

    Dans le log PHP, voici les différences... (En gras)

    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
    [03-May-2010 17:00:08] PHP Notice:  AddSlashes Val -> screen => contact in F:\WebSites\jecrapahute\class\screen.php on line 140
    [03-May-2010 17:00:08] PHP Notice:  AddSlashes Val -> screen => contact in F:\WebSites\jecrapahute\class\screen.php on line 142
    [03-May-2010 17:00:08] PHP Notice:  AddSlashes Val -> title => Vous souhaitez prendre contact avec l'un d'entre nous ? in F:\WebSites\jecrapahute\class\screen.php on line 140
    [03-May-2010 17:00:08] PHP Notice:  AddSlashes Val -> title => Vous souhaitez prendre contact avec l\'un d\'entre nous ? in F:\WebSites\jecrapahute\class\screen.php on line 142
    [03-May-2010 17:00:08] PHP Notice:  AddSlashes Val -> subtitle => Facile, il n'y a qu'à..... ! in F:\WebSites\jecrapahute\class\screen.php on line 140
    [03-May-2010 17:00:08] PHP Notice:  AddSlashes Val -> subtitle => Facile, il n\'y a qu\'à..... ! in F:\WebSites\jecrapahute\class\screen.php on line 142
    [03-May-2010 17:00:08] PHP Notice:  AddSlashes Val -> form =>  in F:\WebSites\jecrapahute\class\screen.php on line 140
    [03-May-2010 17:00:08] PHP Notice:  AddSlashes Val -> form =>  in F:\WebSites\jecrapahute\class\screen.php on line 142
    [03-May-2010 17:00:08] PHP Notice:  AddSlashes Val -> menu => index in F:\WebSites\jecrapahute\class\screen.php on line 140
    [03-May-2010 17:00:08] PHP Notice:  AddSlashes Val -> menu => index in F:\WebSites\jecrapahute\class\screen.php on line 142
    [03-May-2010 17:00:08] PHP Notice:  AddSlashes Val -> submenu => contact in F:\WebSites\jecrapahute\class\screen.php on line 140
    [03-May-2010 17:00:08] PHP Notice:  AddSlashes Val -> submenu => contact in F:\WebSites\jecrapahute\class\screen.php on line 142
    [03-May-2010 17:00:08] PHP Notice:  AddSlashes Val -> klimsg => Vous souhaitez prendre contact avec l'un d'entre nous ? in F:\WebSites\jecrapahute\class\screen.php on line 140
    [03-May-2010 17:00:08] PHP Notice:  AddSlashes Val -> klimsg => Vous souhaitez prendre contact avec l\'un d\'entre nous ? in F:\WebSites\jecrapahute\class\screen.php on line 142
    [03-May-2010 17:00:08] PHP Notice:  AddSlashes Val -> mustmber => 0 in F:\WebSites\jecrapahute\class\screen.php on line 140
    [03-May-2010 17:00:08] PHP Notice:  AddSlashes Val -> mustmber => 0 in F:\WebSites\jecrapahute\class\screen.php on line 142
    [/CODE]

    Mais le tableau original n'est pas mis à jour.....

    Où aie-je rater une marche ? Car j'en ai raté une, c'est pour sur !

    Merci à tous.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 14
    Par défaut salut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function AddSlashes(&$TBL)
    {	foreach($TBL as $key => $val)
      	{	user_error("AddSlashes Val -> " . $key . " => " . $val , E_USER_NOTICE) ;
    		$val = addslashes($val) ;
    		user_error("AddSlashes Val -> " . $key . " => " . $val , E_USER_NOTICE) ;
    	}
    }
    Salut,
    Tu ne modifie pas ton tableau mais la variable $val.
    je ferais plus un truc du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function AddSlashes(&$TBL){	
    	$i = sizeof($TBL);
    	for($j = 0; $j < $i; $j++){
    		$TBL[$j] = addslashes($TBL[$j]);
    	}
    }
    A toi de testé !!!
    Bonne journée

  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 AddSlashes... etc....
    Merci pour ton commertaire, je vais tester...
    Mais il y a une chose que je ne comprends pas dans ton code...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function AddSlashes(&$TBL){	
    	$i = sizeof($TBL);
    	for($j = 0; $j < $i; $j++){
    		$TBL[$j] = addslashes($TBL[$j]);
    	}
    }
    Il y a peut être une raison de performance.... mais si je remplace comme ceci


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function AddSlashes(&$TBL){	
    	for($j = 0; $j < sizeof($TBL); j$++){
    		$TBL[$j] = addslashes($TBL[$j]);
    	}
    }
    Ce qui revient au même tu me diras.... et bien il semble que non...
    car j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [04-May-2010 14:11:08] PHP Notice:  Undefined offset: 18759 in F:\WebSites\jecrapahute\class\screen.php on line 93
    [04-May-2010 14:11:08] PHP Fatal error:  Maximum execution time of 30 seconds exceeded in F:\WebSites\jecrapahute\class\screen.php on line 92
    Et en faissant un print_r à la sortie; j'ai une ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [0] => [1] => [2] => [3] => [4] => [5] => [6] => [7] => )
    Que je ne comprends pas.... mais cela vient sans doute de chez moi .....

    Merci bcp....

    PS: As-tu une ficelle pour tous les caractères accentués ?
    J'ai trouvé un doc sur le site mais je ne suis pas parvenu à l'appliquer...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 14
    Par défaut
    re,
    Alors oui il y a bien une histoire de performance.
    Dans ma solution j'evalue une fois le sizeof(). alors que toi tu le réevalue a chaque boucle du for. D'ou peut etre l'erreur que tu as.

    Apres pour les accents c'est un peut plus compliqué ou pas !!
    J'ai fait une fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function SplitAccent($string){
      return str_replace(array('à','á','â','ã','ä', 'ç', 'è','é','ê','ë', 'ì','í','î','ï', 'ñ', 'ò','ó','ô','õ','ö','ù','ú','û','ü', 'ý','ÿ','À','Á','Â','Ã','Ä', 'Ç', 'È','É','Ê','Ë', 'Ì','Í','Î','Ï', 'Ñ', 'Ò','Ó','Ô','Õ','Ö','Ù','Ú','Û','Ü', 'Ý'),array('a','a','a','a','a', 'c', 'e','e','e','e', 'i','i','i','i', 'n', 'o','o','o','o','o','u','u','u','u', 'y','y','A','A','A','A','A', 'C', 'E','E','E','E', 'I','I','I','I', 'N', 'O','O','O','O','O', 'U','U','U','U', 'Y'),$string);
    }
    Voila j'espere que ca va marché !!!

Discussions similaires

  1. Réponses: 7
    Dernier message: 05/10/2006, 11h48
  2. Où trouver la liste des caractères spéciaux?
    Par gamez dans le forum Langage
    Réponses: 3
    Dernier message: 19/08/2003, 17h54
  3. Transformation XSL et caractères spéciaux
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 4
    Dernier message: 28/04/2003, 10h38
  4. [Sybase] filtre sur caractères spéciaux
    Par montelieri dans le forum Sybase
    Réponses: 4
    Dernier message: 07/04/2003, 16h49
  5. Traiter les caractères spéciaux
    Par ricola dans le forum Langage
    Réponses: 2
    Dernier message: 20/02/2003, 09h23

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