Bonjour à tous.
Un numéro de téléphone correctement écrit et bien présenté fait partie de ces petites choses qui agrémentent la vie lorsqu'on se retrouve sur un formulaire de saisie. Il existe par contre de multiples formats.
J'ai commencé une routine pour mes principaux pays clients. Comment l'améliorer pour la rendre plus rapide à écrire, et plus rapide à s'afficher ? On constate en effet de nombreuses répétitions au niveau logique.
Merci pour votre aide.
Modifié par Pyanepsion (02 Jul 2012 - 08:40)
Un numéro de téléphone correctement écrit et bien présenté fait partie de ces petites choses qui agrémentent la vie lorsqu'on se retrouve sur un formulaire de saisie. Il existe par contre de multiples formats.
J'ai commencé une routine pour mes principaux pays clients. Comment l'améliorer pour la rendre plus rapide à écrire, et plus rapide à s'afficher ? On constate en effet de nombreuses répétitions au niveau logique.
Merci pour votre aide.
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8" />
<title></title>
<meta name="description" content="" />
<meta name="keywords" lang="fr" content="" />
<meta name="robots" content="noindex, follow" />
</head>
<body>
<?
$envoi = htmlentities($_SERVER['PHP_SELF']);
$form = <<<EOF
<form action="$envoi" method="post" name="commande">
<fieldset>
<legend>Numéro de téléphone</legend>
<p title="Sélectionnez votre pays.">
<label for="pays" title="Sélectionnez votre pays.">Pays :</label>
<select name="pays" id="pays" title="Sélectionnez votre pays." class="rouge">
<option value="Inconnu">Sélectionner un pays</option>
<option value="Belgique">Belgique</option>
<option value="Canada">Canada</option>
<option value="France">France</option>
<option value="Suisse">Suisse</option>
</select>
</p>
<p title="Indiquez votre numéro de téléphone.">
<label for="fixe">Téléphone fixe :</label>
<input type="tel" name="fixe" value="" placeholder="Champ obligatoire" id="fixe" required="required" />
</p>
<p>
<input type="submit" name="envoyer" id="envoyer" value="Valider" />
</p>
</fieldset>
</form>
EOF;
$test=null;
if (!isset($_POST['envoyer'])):
echo $form;
else:
if (!empty($_POST['fixe'])):
$item=trim(strip_tags(stripslashes($_POST['fixe'])));
if (!empty($_POST['pays'])): // supression des "-", ".", " ", et "(0))"
$item = str_replace('-', '', $item);
$item = str_replace('.', '', $item);
$item = str_replace(' ', '', $item);
$item = str_replace('(0)', '', $item);
if ($_POST['pays']=="Belgique"): // supression de l'indicatif'
$item = str_replace('+32', '0', $item);
$item = str_replace('32+', '0', $item);
if(strlen($item) == 9): // test de conformité de longueur et mise au format
$item = '+32 '.substr($item,1,2).' '.substr($item,3,2).' '.substr($item,5,2).' '.substr($item,7,2);
else: // longueur incorrecte, on arrête tout
$erreur[]='Téléphone fixe erroné';
$test+=1;
endif;
endif;
if ($_POST['pays']=="Canada"):
$item = str_replace('+1', '0', $item);
$item = str_replace('1+', '0', $item);
if(strlen($item) == 10):
$item = '+1 '.substr($item,0,3).' '.substr($item,3,4).'-'.substr($item,7,4);
else:
$erreur[]='Téléphone fixe erroné';
$test+=1;
endif;
endif;
if ($_POST['pays']=="France"):
$item = str_replace('+33', '0', $item);
$item = str_replace('33+', '0', $item);
if(strlen($item) == 10):
$item = substr($item,0,2).' '.substr($item,2,2).' '.substr($item,4,2).' '.substr($item,6,2).' '.substr($item,8,2);
else:
$erreur[]='Téléphone fixe erroné';
$test+=1;
endif;
endif;
if ($_POST['pays']=="Suisse"):
$item = str_replace('+41', '0', $item);
$item = str_replace('41+', '0', $item);
if(strlen($item) == 10):
$item = '+41 '.substr($item,1,2).' '.substr($item,3,3).' '.substr($item,6,2).' '.substr($item,8,2);
else:
$erreur[]='Téléphone fixe erroné';
$test+=1;
endif;
endif;
endif;
$form=str_replace('name="fixe" value=""','name="fixe" value="'.$item.'"',$form);
endif;
endif;
if ($test<>0):
// Affichage des rubriques manquante
if($test==1):
echo '<p>Il reste '.$test.' rubrique à traiter : ';
else:
echo '<p>Il reste '.$test.' rubriques à traiter : ';
endif;
// Affichage d'un message général
foreach($erreur as $element)
{
echo $element.' ; ';
}
echo ' etc.</p>';
// Réaffichage du formulaire pour correction
echo $form;
else:
if($_POST['fixe']<>''):
?>
<p>Téléphone fixe : <? echo $_POST['fixe'];?></p>
<?
endif;
// Réaffichage du formulaire pour correction
echo $form;
endif;
?>
</body>
</html>
Modifié par Pyanepsion (02 Jul 2012 - 08:40)