Problème avec isset

Haelle -  
tmacnaire Messages postés 3 Statut Membre -
Bonjour,
je rencontre depuis un certain moment des problèmes avec la fonctions isset, en effet, lorsque je charge certaines pages après un formulaire je vérifie toujours (ou presque) que les champs ont été correctement rempli.
voici un morceau de code que j'ai fait et qui fonctionne:
include de l'en tête
// on vérifie que le champ $num_centre a été rempli sinon on y met une valeur incorrecte.
if (isset($_POST['num_centre']) )
{
$num_centre=$_POST['num_centre'];

}
else {$num_centre='-1';}

// On vérifie que le champ $limite a été rempli sinon on y met la valeur pas défaut 10.
if ( isset($_POST['limite']))
{
$limite=$_POST['limite'];
}
else {$limite='10';}

// On vérifie que le champ $semaine a été rempli sinon on y met une valeur incorrecte.
if (isset($_POST['semaine']))
{
$semaine=$_POST['semaine'];
}
else {$semaine='-1';}

// on vérifie si les infos sont cohérentes.
if ( ($semaine <= 52) && ($semaine > 0 ) && ($num_centre > 0) )
{ // le reste du code de la page } else {page d'erreur}
include du pied de page.

cependant lorsque je fais une autre page ça ne fonctionne pas, l'utilisateur est toujours dirigé vers la branche de succè qu'il ai ou non rempli le formulaire (en fait il y en a deux qui aboutissent sur la même page; voici le code du début de la page:
include en tête
$ok="non";
if ( isset($_POST['identite']) && isset($_POST['adresse']) && isset($_POST['e_mail']) )
{
$identite=$_POST['identite'];
$adresse=$_POST['adresse'];
$e_mail=$_POST['e_mail'];
$ok="oui";
}

if ( isset($_POST['nom_cl']))
{
$identite=$_POST['nom_cl'];
$ok="oui";
}

if ( strcmp($ok,"oui") == 0 )
{ //code de la page} else { code de la page d'erreur}
include pied de page

4 réponses

Haelle
 
je fais remonter le topic, j'ai besoin de comprendre pourquoi parfois les tests sur isset fonctionnent et pourquoi ils ne fonctionnent pas...
Merci
Haelle
0
rastajeff Messages postés 72 Date d'inscription   Statut Membre Dernière intervention   13
 
Déjà, tu pourrais faire un booléen pour vérifier, au lieu d'utiliser une chaine de caractères.
Genre $ok = false;

Et a tu essayé dans l'autre sens, avec un empty ?

if(empty($_POST['identite']))
{
// tu empeche le remplissage
}

et après tt tes tests

if($ok)
{
//tu envoie tes champs
}
else
{
//tu bloque l'envoie et tu affiche les erreurs
}
0
chupa23 Messages postés 152 Statut Membre 28
 
Bonjour,
isset permet de savoir si une variable existe et si celle ci est non NULLE (de mémoire). La fonction ne 'bug' pas , elle est juste mal utilisé dans certain cas. Donne un exemple où isset ne marche pas correctement , il y aura sans doute une autre façon de faire.
0
tmacnaire Messages postés 3 Statut Membre
 
Bonjour j'ai un exemple sur lequel la fonction isset ne marche pas.

le voici

if (isset($_POST['nom_enfant']) AND isset($_POST['prenom_enfant']) AND isset($_SESSION['ID']))
{
if ($_POST['nom_enfant'] != NULL AND $_POST['prenom_enfant'] != NULL ) // Si on a quelque chose à enregistrer
{
$nom_enfant = addslashes($_POST['nom_enfant']);
$prenom_enfant = addslashes($_POST['prenom_enfant']);
$jour_nai = $_POST["jour_nai"];
$mois_nai = $_POST['mois_nai'];
$an_nai = $_POST['an_nai'];
$valeur_id = $_SESSION['ID'];//on récupére l'id de la session
echo $nom_enfant;

// On vérifie si c'est une modification ou pas
if ($_POST['id_enfant'] == 0)
{
// Ce n'est pas une modification, on crée une nouvelle entrée dans la table enfant
mysql_query("INSERT INTO enfant VALUES('', '$valeur_id' , '$nom_enfant', '$prenom_enfant', '$jour_nai', '$mois_nai', '$an_nai')");
}
else
{
// On protège la variable "id_enfant" pour éviter une faille SQL
$_POST['id_enfant'] = addslashes($_POST['id_enfant']);
// C'est une modification, on fait une update
mysql_query("UPDATE enfant SET NOM_ENFANT='" . $nom_enfant . "', PRENOM_ENFANT='" . $prenom_enfant . "', JOUR_NAI_ENFAN='" . $jour_nai . "', MOIS_NAI_ENFAN='" . $mois_nai . "', AN_NAI_ENFAN='" . $an_nai . "' WHERE ID_ENFANT='" . $_POST['id_enfant'] . "'");
}
}
else
{
echo '<span class="msg_erreur">Il faut entrée le nom et le prénom de l\'enfant</span>';
}
}

je n 'arrive pas à savoir pour quoi
0