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
Configuration: Windows Vista
Firefox 3.0.8

4 réponses

  1. 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
  2. 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
  3. 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
  4. 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