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 :

pb suppression accents


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 192
    Par défaut pb suppression accents
    Bonjour,

    j'ai un probleme pour la suppression des accents. lorsque j'utilise la fonction
    removeDiacritics avec mes deux variables $adresse_mess_emp e $login_emp les accents sont toujours présents a l'afichage, mais lorsque je rentre une chaine de caractère du style "éééé" cela marche.
    cela doit surement venir du fait que mes 2 varialbes ne sont pas reconnus en tant que chaine de caractère.
    merci pour votre aide
    voicis le 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
    16
    17
    18
     
    //fonction de suppréssion des accents, pour générer adresse mail et login
    function removeDiacritics($str)
    {
       return strtr($str,
       'àâäåãáÂÄÀÅÃÁæÆçÇéèêëÉÊËÈïîìíÏÎÌÍñÑöôóòõÓÔÖÒÕšùûüúÜÛÙÚýÿž',
       'aaaaaaaaaaaaaacceeeeeeeeiiiiiiiinnoooooooooosuuuuuuuuyyz');
    }
     
    // mise en forme  pour login et aadresse de messagerie
     
    $adresse_mess_emp = (str_replace(" ", "",strtolower($prenom_emp))).".".(str_replace(" ", "",strtolower($nom_emp)))."@xxxxx.com";
    $login_emp = strtolower(substr($prenom_emp, 0, 1).(str_replace(" ", "",$nom_emp)));
     
     
    //suppréssion des accents du login et de l'adresse de messagerie
    echo $adresse_mess_emp = removeDiacritics($adresse_mess_emp);
    echo $login_emp = removeDiacritics($login_emp);

  2. #2
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    Et comme ca cela donne quoi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    //suppréssion des accents du login et de l'adresse de messagerie
    $adresse_mess_emp = removeDiacritics($adresse_mess_emp);
    $login_emp = removeDiacritics($login_emp);
     
    echo $adresse_mess_emp;
    echo $login_emp;
    les instructions sont évalués de gauche à droite
    et de haut en bas

    Donc quand tu affichais la valeur, la focntion n'avait pas encore retourné son résultat.

    Pierre

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 192
    Par défaut
    même pb

  4. #4
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    mince je pensais tenir le bon bout. Et en plus ce que je t'ai dit n'est pas tout à fait vrai, c'est meme carrement faux. Donc autant pour moi.

  5. #5
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    Par contre je viens de tester tout ton script et il fonctionne bien.

    Donc a mon avis le problème provient de l'alimentation des variables $nom_emp et $prenom_emp

    je me suis contenté de rajouter ceci pour le test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $prenom_emp = 'frédéric';
    $nom_emp = 'Ébagé';

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 192
    Par défaut
    oups, pardon
    oui moi aussi ca marche comme cela. le pb doit venir des str_lower str replace etc... ce que je voudrais c'est transformer mes varialbles en tant que string car la elle ne doivent pas etre reconnus en tant que tel, mais je ne vois pas comment faire

  7. #7
    Membre émérite Avatar de Hervé Saladin
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Décembre 2004
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 647
    Par défaut
    il n'y a pour ainsi dire pas de typage des variables en php, donc ça ne vient probablment pas de là

  8. #8
    Membre émérite Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Par défaut
    En préfixant tes variable avec (string)$var, mais je doute que cela ait une incidence.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 192
    Par défaut
    non effectivement ca ne change rien

  10. #10
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    Je ne vois pas le problème... Si l'extrait de code que tu as fourni fonctionne, le souci se trouve probablement en amont, comme cela a déjà été suggéré.

    Tes variables sont nécessairement reconnues en tant que string si tu les indiques comme paramètre de strtolower() donc nous aurons besoin de davantage de précisions pour être en mesure de t'aider convenablement.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 192
    Par défaut
    je vous passe le code complet de la page., c'est une page de confirmation cad que précédement une personne a rentré des infos, en validant elle attérit sur cette page qui demande si le sinfos sont correctes et genère en même temps une adresse mail et un login en fonction du nom et prénom fournis

    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
    135
     
    <?PHP
    session_start();
    //VERIFICATION DES IDENTIFIANTS UTILISATEUR
    if(!isset($_SESSION['login_util']) OR !isset($_SESSION['mdp_util']))
    {
    	header('Location: echec_ident2.php');
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
       <head>
     
           <title>Gestion du parc informatique </title>
           <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
           <link rel="stylesheet" media="screen" type="text/css" title="format" href="styles/format.css" />
       </head>
    <?
    //CONNEXION A LA BDD
    $connexion = mysql_connect("localhost", $_SESSION['login_util'], $_SESSION['mdp_util']);
    mysql_select_db("keinfor");
     
    if($connexion == false)
     
        {
            ?><H3 ALIGN="center"><?exit("ERREUR DE CONNEXION A LA BASE");?></H3><?
        }
     
     
     
    // PAGE DE CONFIRMATION  AVANT INSERTION DANS LA BASE
    // AVEC CERTAINS CHAMPS PRE REMPLIS
     
    $mat_emp = htmlentities ($_POST['mat_emp']);
    $nom_emp = htmlentities ($_POST['nom_emp']);
    $prenom_emp = htmlentities ($_POST['prenom_emp']);
    $mdp_session_emp = htmlentities ($_POST['mdp_session_emp']);
    $mdp_crypto_emp = htmlentities ($_POST['mdp_crypto_emp']);
    $mdp_mess_emp = htmlentities ($_POST['mdp_mess_emp']);
    $mdp_bios_emp = htmlentities ($_POST['mdp_bios_emp']);
     
     
    Function removeaccents($string) 
    {  
     $string= strtr($string,  
    "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ", 
    "aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn");    
    return $string;  
    }
     
    // génération login et adresse messagerie
    $adresse_mess_emp = (str_replace(" ", "",strtolower($prenom_emp))).".".(str_replace(" ", "",strtolower($nom_emp)))."@kea-partners.com";
    $login_emp = strtolower(substr($prenom_emp, 0, 1).(str_replace(" ", "",$nom_emp)));
     
    //suppréssion des accents
    $adresse_mess_emp = removeaccents($adresse_mess_emp); 
    $login_emp = removeaccents($login_emp) ;
     
     
    	//recupération du  matricule employé pour verif doublon dans la table
    	$tmp = mysql_query("SELECT mat_emp FROM employe WHERE mat_emp = '$mat_emp'");
    	$verif_emp = mysql_fetch_array($tmp);
     
    	// Vérification de non doublon dans la table
     
    	if ($verif_emp['mat_emp'] == $mat_emp )
    	{
     
    	?><H3 ALIGN="center"><?exit("LE MATRICULE EXISTE DEJA DANS LA BASE");?></H3><?
     
    	}
    	else
    	{
     
    	//affichage de la page pour confirmation
    ?>
    	<script language="JavaScript" src="veriform.js"></script>
    		<BODY>
    		<div style="width:600px;margin-left:100px;">
    		<fieldset>
    			<legend><b>Confirez-vous ces informations ?</b></legend> <!-- Titre du fieldset -->
     
    		<?
    			// si les opération d'insertions se sont bienp passées, affichage récapitulatif
     
    		?>
    				<table border=0 align="center">
    				<form name="ajout" enctype="multipart/form-data" action="insertion_crea_emp.php" method="post">
     
    				<INPUT TYPE=HIDDEN NAME="type_ins" value="emp">
    					<tr>
    						<td class="field">Matricule:</td>
    						<td class="value"><input type="texte" name="mat_emp" maxlength="6" size="7" value="<? echo $mat_emp; ?>"></td>
    					</tr>
    					<tr>
    						<td class="field">Nom :</td>
    						<td class="value"><input type="texte" name="nom_emp" value="<? echo $nom_emp; ?>">
    					</tr>
    					<tr>
    						<td class="field"> Prénom:</td>
    						<td class="value"><input type="texte" name="prenom_emp" value="<? echo $prenom_emp; ?>">
    					</tr>
    					<tr>
    						<td class="field">Login:</td>
    						<td class="calcule"><input type="texte" name="login_emp" value="<? echo $login_emp; ?>">
    					</tr>
    					<tr>
    						<td class="field">Mot de passe session :</td>
    						<td class="value"><input type="texte" name="mdp_session_emp" value="<? echo $mdp_session_emp; ?>">
    					</tr>
    					<tr>
    						<td class="field">Adresse de messagerie:</td>
    						<td class="calcule"><input type="texte" name="adresse_mess_emp" value="<? echo $adresse_mess_emp; ?>">
    					</tr>
    					<tr>
    						<td class="field">Mot de passe d adresse de messagerie :</td>
    						<td class="value"><input type="texte" name="mdp_mess_emp" value="<? echo $mdp_mess_emp; ?>">
    					</tr>
    					<tr>
    						<td class="field">Mot de passe Bios:</td>
    						<td class="value"><input type="texte" name="mdp_bios_emp" value="<? echo $mdp_bios_emp; ?>">
    					</tr>
    					<tr>
    						<td class="field">Mot de passe CRYPTO:</td>
    						<td class="value"><input type="texte" name="mdp_crypto_emp" value="<? echo $mdp_crypto_emp; ?>">
    					</tr>
    				</table>
     
    	</fieldset>
    	</div>
    	<h2><INPUT type="button" value="Confirmer" onclick="javascript:confirmutil();"></h2>
    	</body>
    </html>
    <?
    	}

  12. #12
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Alors, plusieurs remarques avant de commencer...

    Ajoute un appel à exit; après l'appel à header(), sans quoi tu auras certainement des soucis (notamment, tu enverras des données alors que tu auras demandé au navigateur d'aller sur une autre page : il pourrait mal comprendre).

    Ta fonction removeaccents() est incomplète. Certes, elle enlève les accents mais, de mon point de vue, quitte à effectuer un traitement d'épuration, autant aller jusqu'au bout et supprimer tous les caractères qui ne correspondent pas à une liste précise que tu attends.
    L'appel à strtr() est sympatique pour te permettre de remplacer des caractères par des équivalents autorisés (ne pas les supprimer complètement) mais je pense que tu devrais le compléter avec preg_replace().

    Après avoir jeté un oeil à ton code (testé en local après adaptation), je ne pige pas trop pourquoi cela ne fonctionne pas...
    Comme solution, je te propose une adaptation de la fonction que j'utilise dans mon URL Rewriting :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function clean($string){
    	$string = html_entity_decode($string);
     
    	$search	= 'çñÄÂÀÁäâàáËÊÈÉéèëêÏÎÌÍïîìíÖÔÒÓöôòóÜÛÙÚüûùúµ';
    	$replace	= 'cnaaaaaaaeeeeeeeeeiiiiiiiioooooooouuuuuuuuu';
    	$string = strtr(trim(strtolower($string)), $search, $replace);
    	$string = preg_replace('/[^a-z0-9.@-]/', '', $string);
     
    	return $string;
    }

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 192
    Par défaut
    éffectivement, merci pour le conseil sur l'éxit
    Et puis merci également pour ta fonction, ça marche nikel.

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

Discussions similaires

  1. [Toutes versions] suppression accents chaines de caractères
    Par issoram dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 09/12/2023, 15h16
  2. Suppression d'accents en UTF-8
    Par navis84 dans le forum Langage
    Réponses: 17
    Dernier message: 22/05/2023, 23h36
  3. suppression des accents dans un fichier sous csh
    Par zpipol dans le forum Shell et commandes GNU
    Réponses: 0
    Dernier message: 29/10/2008, 23h58
  4. Suppression des Accents
    Par Tanelorn dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 03/12/2007, 02h01
  5. Suppression des accents et mise en Majuscules
    Par mlzim dans le forum Contribuez
    Réponses: 4
    Dernier message: 07/11/2007, 13h07

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