Générer une variable automatiquement du nom d'un $_POST

Petit nouveau ! | 3 Messages

29 mars 2006, 17:50

Bonjour,

J'ai fais une petite fonction qui dois me vérifier si les champs d'un formulaire sont correctement remplis.

On va dire que ça fonctionne correctement.
Mais je souhaiterais ajouter quelquechose à cette fonction, dans ma variable $erreur, si donc une ou plusieurs erreurs sont présente dans mon formulaire elle me retourne un array contenent les clefs des champs 8)

Ce que je souhaiterais, c'est qu'elle me génère une variable (vide ou pleine, peu importe) du name de de l'input de mon formulaire.

Comme par exemple avec un $_POST['mail'], si une erreur était détecté dans ce champ, une variable $mail serait insérée dans mon array $erreur.

Pour l'instant ma petite fonction pas encore au top, mais qui fonctionne.
function verif_champ($submit, $value_submit, $champ)
{
    if(isset($submit) && $_POST[$submit] == $value_submit)
    {
        $erreurs = array();
        foreach($champ as $clef => $valeur)
        {
            $valeur = $_POST[$valeur];
            if( !isset($valeur) || empty($valeur) )
            {
                // ICI au lieu de mettre la clef dans l'array $erreur
                // Je souhaiterais générer une variable ayant pour nom la valeur de $_POST
                $erreurs[] .= $clef;
            }
        }
        if(!empty($erreurs))
        {
            return $erreurs;
        }
        $array_post = array();    
        foreach($champ as $clef => $valeur)
        {
              $valeur = $_POST[$valeur];
              if( !get_magic_quotes_gpc && !is_numeric($valeur) )
              {
                  $valeur = addslashes($valeur);
              }
              if( !is_numeric($valeur) )
              {
                  $valeur = mysql_real_escape_string($valeur);
              }
              $array_post[] .= $valeur;
        }
        return $array_post;
    }
}
Donc est-ce possible de faire ce que je désire ?

Merci.

Mammouth du PHP | 19672 Messages

29 mars 2006, 19:49

Des idées à trouver ICI
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 3 Messages

30 mars 2006, 19:04

Merci,

Mais j'ai pas trouvé ce qui pourrait m'orienter vers une soultion à ce que je désire faire dans ta page.

En tout cas très bien fait et structuré ton code, pas comme le mien.

J'en déduis que c'est pas possible, tant pis...

Je vais essayer de procéder autrement .

Petit nouveau ! | 3 Messages

30 mars 2006, 21:37

J'ai enfin réussi à faire quelquechose de correct, enfin à mes yeux.

Je n'ai plus qu'à détecter avec une autre fonction, si le name du champ est présent dans l'array, et ce sera bon.

Le résultat :
function verif_champ($submit, $value_submit, $champ, $message_erreur)
{
    if(isset($submit) && $_POST[$submit] == $value_submit)
    {
        $erreurs = array();
        $num_erreur = array();
        $i = 1;
        foreach($champ as $clef => $valeur)
        {
            $valeur_post = $_POST[$valeur];
            if( !isset($valeur_post) || empty($valeur_post) )
            {
                $num_erreur[] .= $i;
                $erreurs[] .= $valeur;
                $i++;
            }
        }
        $erreurs = array_combine($erreurs, $num_erreur);
        //$nbre_erreurs = max(array_values($result));
        if(!empty($erreurs))
        {
            echo $message_erreur;
            return $erreurs;
        }
        unset($message_erreur);
        $array_post = array();    
        foreach($champ as $clef => $valeur)
        {
              $valeur = $_POST[$valeur];
              if( !get_magic_quotes_gpc && !is_numeric($valeur) )
              {
                  $valeur = addslashes($valeur);
              }
              if( !is_numeric($valeur) )
              {
                  $valeur = mysql_real_escape_string($valeur);
              }
              $array_post[] .= $valeur;
        }
        return $array_post;
    }
}
Il est certain qu'il y a un moyen de simplifier tout ça, m'enfin tant que ça fonctionne, je suis content :D