Page 1 sur 1

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

Posté : 29 mars 2006, 17:50
par strucky
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.

Posté : 29 mars 2006, 19:49
par Cyrano
Des idées à trouver ICI

Posté : 30 mars 2006, 19:04
par strucky
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 .

Posté : 30 mars 2006, 21:37
par strucky
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