8768 sujets

Développement web côté serveur, CMS

Bonjour,

J'ai un formulaire de contact, il fonctionne très bien sauf que j'ai le n° de téléphone sous la forme :
0144556677et je voudrai sous la forme 01.44.55.66.77

Avez vous une solution à mon problème ?

Merci d'avance.
Modifié par Tintin75 (18 Aug 2016 - 18:19)
Hello

euh.. pourquoi n'utilises tu pas wordwrap ?

Sinon tu peux forcer un formatage dès le début dans ton formulaire avec les required HTML5 et un pattern ...
J'ai essayé avec wordwrap, mais je n'y arrive pas. Ca serait l'idéal, vue que ça fonctionne très bien sur mon autre site.

Je bloque ici :

$fields = array('name' => 'Nom', 'surname' => 'Prénom', 'phone' => 'Téléphone', 'email' => 'Email', 'message' => 'Message'); 


Sur l'autre site, j'utilise la commande :

$Phone = wordwrap($Phone, 2, '.', true); 


Car j'ai la variable $Phone, mais dans mon cas c'est différent. C'est un mode que j'aime pas trop mais, j'ai pas trouvé mieux pour ce site.
Modifié par Tintin75 (18 Aug 2016 - 17:18)
euh excuse moi hein Smiley smile masi je vois aps le rapport entre un array fields et ta variable ??

ton $Phone tu e reçois par le POST je suppose donc qu'est ce qui t'empèche de la modifier ???

l'array il doit être pou rl'afichage dans ton message, traité par autre chose... Smiley biggol
Euh, le $Phone est bien envoyé via Post via un champ du formulaire.

Je vais revoir ma copie, et je reviens vers toi.

Merci.
Tu as pas un exemple en html5 ?

Car dans mon code, je ne m'en sort pas, c'est l'usine à gaz.

Merci encore pour ta patience. Smiley smile
Modifié par Tintin75 (18 Aug 2016 - 18:19)
et pour ton code :


foreach ($_POST as $key => $value) {

        if (isset($fields[$key])) {
            if($key == "phone") {$value= wordwrap($value, 2, '.', true);}
            $emailHtml  .= "<u>$fields[$key]</u> : $value" . "<br><br>";
			}
    }


euh je vois pas en quoi c'est une usine à gaz Smiley eek c'est du code très courant....
Ca marche tu est un dieu du code Smiley merci

Je vais étudier ton code pour apprendre maintenant.

Encore merci pour ton aide. Smiley smile
Modifié par Tintin75 (18 Aug 2016 - 18:02)
pchlj a écrit :
et pour ton code :

foreach ($_POST as $key =&gt; $value) {

        if (isset($fields[$key])) {
            if($key == "phone") {$value= wordwrap($value, 2, '.', true);}
            $emailHtml  .= "&lt;u&gt;$fields[$key]&lt;/u&gt; : $value" . "&lt;br&gt;&lt;br&gt;";
			}
    }

Je ne suis pas un spécialiste PHP mais il me semble que le code ci-dessus devrait être complété avec une fonction trim() au cas où :
- le masque de saisie (pattern) fourni pour le champ de formulaire ne serait pas pris en compte par le navigateur web
- l'utilisateur aurait eu la malencontreuse idée d'ajouter des espaces avant et/ou après la valeur saisie (ils sont tellement taquins, les bougres...).
Histoire de me "faire la main" et voir si je fantasmais, j'ai donc testé ce petit bout de code :
$value = ' 0987653329   ';
echo 'Value [' . wordwrap($value,2,'.',true) . '] - ';
echo 'Value [' . wordwrap(trim($value),2,'.',true) . ']';

Voici le résultat obtenu en test sur Sybox ;
Value [ 0.98.76.53.32.9 . ] - Value [09.87.65.33.29]

En Java, j'ai pris l'habitude de systématiquement appliquer un trim() à toute chaîne de caractères, vu le nombre de fois où j'ai entendu quelqu'un se plaindre qu'une comparaison de valeur attendue à "" rendait un résultat faux.
Le problème avec les caractères " ", c'est qu'on ne les voit pas et pourtant ils comptent (M. Lapalisse dans toute sa splendeur).
Pour être complet, un test devrait s'assurer que la valeur reçue ne comporte que des chiffres (application du pattern côté serveur en sus de celui initialement fourni au formulaire)...
Modifié par sepecat (18 Aug 2016 - 22:22)
Bonjour Sepecat,

Merci pour ton code, je vais l'appliquer et l'étudier.

Merci encore et bon week-end.

Smiley smile