Problème de vérification de code postal

Eléphant du PHP | 61 Messages

24 janv. 2007, 12:38

Bonjour à tous !
Je suis actuellement en train de réaliser dans la partie membre de mon site une page ou celui-ci pourra modifier ses informations.
Le problème est au niveau de la mise a jour de sont code postal.
Voilà le code
		//Code postal
		if ( !empty($_POST['code_postal']) && $_POST['code_postal']!= $res['code_postal'] ){
			if (is_int($_POST['code_postal'])){
			mysql_query('UPDATE membre_profils SET code_postal=\''.$_POST['code_postal'].'\' WHERE idmembre=\''.$_SESSION['idmembre'].'\'') or die(mysql_error());}
			else {
			$erreur_cp= '<span class=\'erreur\'> Invalide</span>';}
			}	
$res['code_postal'] est le résultat de la BDD.
Ainsi voilà ce que je souhait:
_ le code postal n'est pas obligatoire (peut etre vide)
_ si des caractère sont rentrer ils doivent obligatoirememnt etre des chiffres.
Mon problème avec ce code c'est qu'il m'affiche toujours l'erreur : $erreur_cp

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

24 janv. 2007, 12:49

Affiche la valeur de $_POST['code_postal'] pour vérifier que tu récupères bien le résultat attendu (genre s'il n'y a pas d'espaces au début ou à la fin qu'il faudrait passer par trim() par exemple)
echo "*".$_POST['code_postal']."*";
Tu peux aussi vérifier le résultat de la fonction :
echo "*".is_int($_POST['code_postal'])."*";
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 61 Messages

24 janv. 2007, 12:52

Non aucun espace je l'avait vérifier avant mais j'ai ressayer avec ta méthode et aucun espace :-(

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

24 janv. 2007, 13:03

C'est quoi la valeur de ton code postal ?

Et si tu colles un intval() avant de tester le is_int() ?
c'est peut être un problème de typage (encore que is_int() ne devrait pas en tenir compte.)
echo is_int($_POST['code_postal']). ' / '.is_int(intval($_POST['code_postal']));
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 61 Messages

24 janv. 2007, 13:29

Arf j'ai un réelle problème voilà ce que ta ligne de code affiche : ainsi la fonction is_int($_POST['code_postal']) n'affiche rien pourtant c'est bien des chiffre que je rentre

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

24 janv. 2007, 14:13

Ok, donc en fait, c'est que is_int() accorde une importance au type de données. En fait, toutes les données que tu trouves dans $_POST (ou get) sont de type String (chaine de caractère). Du coup is_int() te retourne faux, car même si cette chaine ne contient que des chiffres, il ne s'agit pas pour lui d'un nombre.
Note : Pour tester si une variable est un nombre ou une chaîne numérique (comme les entrées de formulaire, qui sont toujours des chaînes), vous devez utiliser la fonction is_numeric().
Par contre is_numeric retournera vrai si la chaine comporte un point (décimal) ou un signe moins. Il serait donc peut être plus interessant dans ton cas d'utiliser ctype_digit() qui test chaque caractère :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 61 Messages

24 janv. 2007, 14:40

C'est trop cool merci sa marche enfin !
Merci merci !
Sauf comment un débutant pouvait trouver la réponse...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

24 janv. 2007, 16:17

Modération :
analfabete, puisque ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 693 Messages

24 janv. 2007, 16:30

En demandant à d'autres plus confirmés, d'ou l'interet de ce forum :wink: