comment utilisé les fonctions Isset et Empty ?

ViPHP
ViPHP | 1996 Messages

09 mars 2007, 09:17

Salut AB,

Tu écris
...

SVP ARRETEZ d'employer le terme "vide" pour définir empty.
Je ne suis pas d'accord avec toi car ta variable peut être définie en méthode POST ou GET mais être vide. Pour moi une variable "vide" c'est comme un pointeur C++ mais où aucune valeur n'est inscrite dedans.

Bon je ne suis pas un super professionnel en PHP mais cela m'est déjà arrivé au début de tester la variable POST ou GET qu'avec ISSET et elle était "vide", sans rien dedans. (ou si tu veux égale à $variable = '')
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphanteau du PHP | 34 Messages

09 mars 2007, 10:09

Merci AB je vais bosser sur sa. Donc si j ai bien comprit la fonction Verif va controler tout. Mais pour réaliser ma fonction Verif je doit inclure tous mes champs à controler ou j applique à chaque champs la fonction Verif comme j avai fait opparavent

Mammouth du PHP | 991 Messages

09 mars 2007, 10:48

il faut que utilise la fonction verif pour chaque champs ^^
DevOps, Symfony4, Hoa

ViPHP
ViPHP | 1996 Messages

09 mars 2007, 14:39

oui là c'est obligatoire utilise la fonction foreach() si tu veux tester toutes les données postées :
foreach ($_POST as $cle => $valeur) {
    verif ($différentes_variables);
    }
Attention toutes les valeurs postées seront testées... Donc un peu de tri est peut être préférable.
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

ViPHP
AB
ViPHP | 5818 Messages

10 mars 2007, 17:59

oui là c'est obligatoire utilise la fonction foreach() si tu veux tester toutes les données postées :
foreach ($_POST as $cle => $valeur) {
    verif ($différentes_variables);
    }
Attention toutes les valeurs postées seront testées... Donc un peu de tri verif ($_POST["est peut être préférable.
NON cela ne fonctionnera pas dans ce cas puisque la fonction a besoin d'un deuxième argument qui indique le nom du champ qui sera affiché dans le message d'erreur si ce champ est vide.

@Aureusms,
Quand je dis "arrêtez d'employer le terme 'vide' pour définir empty()" c'est parce que ce n'est pas suffisant.
empty() va répondre vrai
- si la variable est vide ($var=''),
- également vrai si $var=0 (et dans ce cas ce n'est pas approprié de dire qu'elle est vide puisqu'elle contient 0),
- également vrai si la variable n'est pas définie (et dans ce cas ce n'est pas approprié de dire qu'elle est vide puisqu'elle n'est pas définie).

'Vide' ne correspond donc qu'à une des trois possibilités pour lesquelles empty() est vrai.

@dreamwebtechnologie,

Il te suffit de remplacer les lignes "//etc" du code précédent par les autres champs que tu veux contrôler avec la fonction vérif, sur le même modèle que les lignes déjà écrites.

Par exemple pour les champs que tu as indiqué cela donne :

code PHP
function verif ($champ,$libelle) {
if(!empty($champ) && trim($champ) != '')
 {
 $erreur_msg = '';
 }
 else
 {
 $erreur_msg = 'Vous devez remplir le champ <b>'.$libelle.'</b>!';
 isset($_POST["MM_update"])? unset($_POST["MM_update"]) : '';
 isset($_POST["MM_insert"])? unset($_POST["MM_insert"]) : '';
 }

return ($erreur_msg);
}

$message_login = verif($_POST["login"],'Login');
$message_nom = verif($_POST["nom"], 'Nom');
$message_prenom = verif($_POST["prenom"],'Prénom');
$message_pass = verif($_POST["password"],'Mot de passe');
$message_mail = verif($_POST["email"],'Email');
$message_adres = verif($_POST["adresse"],'Adresse');
//etc. 

code à inclure ou tu veux dans la partie HTML

Code : Tout sélectionner

<div id="message_erreur"> <?php if (!empty($message_login)) echo $message_login.'<br />'; if (!empty($message_pass)) echo $message_pass.'<br />'; if (!empty($message_nom)) echo $message_nom.'<br />'; if (!empty($message_prenom)) echo $message_prenom.'<br />'; if (!empty($message_mail)) echo $message_mail.'<br />'; if (!empty($message_adres)) echo $message_adres.'<br />'; //etc ?> </div>
Normalement t'as plus qu'a faire du copié coller :wink:
Note : les lignes commençant par // sont des commentaires que tu peux effacer.

ViPHP
AB
ViPHP | 5818 Messages

10 mars 2007, 19:18

Et puisque tu commences à apprendre le php, le code ci-dessus est une bonne occasion pour l'introduction aux tableaux.

Pour simplifier un peu plus tout en gardant les mêmes fonctionnalités tu pourrais faire un tableau $message :

code PHP
function verif ($champ,$libelle) {
if(!empty($champ) && trim($champ) != '')
 {
 $erreur_msg = '';
 }
 else
 {
 $erreur_msg = 'Vous devez remplir le champ <b>'.$libelle.'</b>!';
 isset($_POST["MM_update"])? unset($_POST["MM_update"]) : '';
 isset($_POST["MM_insert"])? unset($_POST["MM_insert"]) : '';
 }

return ($erreur_msg);
}

$message = array();
$message['login'] = verif($_POST["login"],'Login');
$message['nom'] = verif($_POST["nom"], 'Nom');
$message['prenom'] = verif($_POST["prenom"],'Prénom');
$message['pass'] = verif($_POST["password"],'Mot de passe');
$message['mail'] = verif($_POST["email"],'Email');
$message['adres'] = verif($_POST["adresse"],'Adresse');
//etc.

code à inclure ou tu veux dans la partie HTML (on liste les éléments du tableau)

Code : Tout sélectionner

<div id="message_erreur"> <?php foreach($message as $valeur) { if (!empty($valeur)) echo $valeur.'<br />'; } ?> </div>
L'avantage maintenant, c'est que tu n'as plus que le tableau de la partie PHP à modifier si tu veux rajouter des variables $_POST à vérifier. Par exemple pour un champ "toto" en plus à vérifier, je n'ai qu'à compléter le tableau avec :
$message['toto'] = verif($_POST["toto"],'Toto');

Bon, mais en fait je ne me sert pas de l'index des éléments du tableau donc on peut faire plus simple pour construire le tabeau :
$message = array();
$message[] = verif($_POST["login"],'Login');
$message[] = verif($_POST["nom"], 'Nom');
$message[] = verif($_POST["prenom"],'Prénom');
$message[] = verif($_POST["password"],'Mot de passe');
$message[] = verif($_POST["email"],'Email');
$message[] = verif($_POST["adresse"],'Adresse');
//etc.
(Le reste du code ne bouge pas)

Avec cette syntaxe, le tableau $message est indexé numériquement, et incrémenté automatiquement (+1) à chaque "$message[]"

ViPHP
AB
ViPHP | 5818 Messages

10 mars 2007, 20:20

NB: dans ton code initial, tu faisais <?php echo @$login_msg ?> en utilisant @ pour supprimer l'erreur quand $login_msg n'est pas défini. Il ne faut utiliser l'opérateur @ qu'en cas de nécessité absolue. Cela prend beaucoup de ressources serveur et comme dit Ajoloca, les erreurs ça se gère.
Donc il aurait fallu faire (suivant tes besoins)
<?php if(isset($login_msg)) echo $login_msg ?>
ou
<?php if(!empty($login_msg)) echo $login_msg ?>
La première ligne afficherait toutes les valeurs de $login_msg si $login_msg est définie.

La seconde ligne afficherait toutes les valeurs de $login_msg si $login_msg est définie et si $login_msg n'est pas vide et si $login_msg est différente de 0.

Si tu souhaites que la valeur 0 puisse être affichée, mais que rien ne s'affiche si $login_msg est vide, il faudrait faire en reprenant l'exemple ci-dessus :
<?php if(isset($login_msg) && $login_msg != '') echo $login_msg ?>