Page 1 sur 2

comment utilisé les fonctions Isset et Empty ?

Posté : 07 mars 2007, 20:37
par dreamwebtechnologie
Bonjour à tous je suis débutant dans le php, je décrouve ce language au fur à mesure. Donc je vous explique mon problème j' ai un formulaire d'inscription, je voulai pourvoire faire controlé la saisie du formulaire d'inscription en php on m'a dit que je devais utilisé Empty et Isset pour voir si les champs on bien été remplie.Mais je ne sais pas comment mi prendre pour mettre sa en place auriez vous quelque exemple à me montrer merci d'avance
Voiçi mon formulaire d'inscription

Code : Tout sélectionner

<form action="<?php echo $editFormAction; ?>" method="POST" name="inscription" id="inscription"> <table width="100%" border="0"> <tr> <td><div align="right">Login:</div></td> <td><input name="login" type="text" id="login" /></td> </tr> <tr> <td><div align="right">Password:</div></td> <td><input name="password" type="password" id="password" /></td> </tr> <tr> <td><div align="right">Nom:</div></td> <td><input name="nom" type="text" id="nom" /></td> </tr> <tr> <td><div align="right">Prenom:</div></td> <td><input name="prenom" type="text" id="prenom" /></td> </tr> <tr> <td><div align="right">Email:</div></td> <td><input name="email" type="text" id="email" size="40" /></td> </tr> <tr> <td><div align="right">Votre adresse: </div></td> <td><textarea name="adresse" cols="50" rows="5" id="adresse"></textarea></td> </tr> <tr> <td></td> <td> <?php $captcha = new CaptchaImage(150,25,8,'00CCFF','000000','FF3333');?> </td> </tr> <tr> <td><div align="right">Entrer le code: </div></td> <td><input name="captcha" type="text" id="captcha" /> <?php echo @$captcha_msg ?></td> </tr> <tr> <td><input name="statut" type="hidden" id="statut" value="client" /></td> <td><input type="submit" name="Submit3" value="Envoyer" /> <input type="reset" name="Submit4" value="Effacer" /></td>

Posté : 07 mars 2007, 20:49
par polo
Bonjour,
c'est simple empty est utiliser pour savoir si une variable est vide ou pas
isset est utilisé pour savoir si une variable existe ou pas, quelque exemple
empty($var)
va être vrai si ta var est vide
!empty($var)
va être vrai si ta var n'est pas vide
isset ($var)
va être vrai si $var existe
!isset ($var)
va être vrai si $var n'existe pas

un petit tuto sur l'utilisation de isset
Clique ici

et sur empty
Clique ici

Voila :D

ok merci

Posté : 07 mars 2007, 21:35
par dreamwebtechnologie
ok merci bc mais je n'ai toujour pas comprit comment l'utilisé dans ma situation puis-je te mettre mon code en entier pour que tu puisse regarder et me guider car je t avou que je suis perdu.

Posté : 07 mars 2007, 21:45
par polo
Tu a lu les tuto que je t'ai proposé ?

enfin pas grave je recommence, avec un exemple:
$var = ""; //donc elle est vide mais elle existe donc

if(!empty($var)){
echo "ta var n'est pas vide";
}else{
echo "ta var est vide";
}
// ici !empty veut dire si $var n'est pas vide on affiche ça sinon (else) on affiche ça, donc ici sur ta page du verrais "ta var est vide"
maintenant isset:
if(isset($var)){
// donc ici si $var existe ce qui n'est pas le cas, affiche ceci
echo "cool $var existe";
}else{
//sinon, donc si elle n'existe pas ce qui le cas ici on affiche ça
echo "désolé $var n'existe pas";
}
// donc si tu à bien suivi le script affichera ici "désolé $var n'existe pas"
Voila, maintenant, le principe pour ton formulaire est dabord de tester si tout les $_POST que tu désire voir rempli tout le temps, donc obligatoires pour ton formulaire sois remplis, donc inspire toi de mes demo ci dessus, et si tu n'y arrive pas on corrigera avec toi.
Voila :D

oui merci

Posté : 07 mars 2007, 22:00
par dreamwebtechnologie
oui je voit j ai lut les tutos ne rigole pas je suis un peut blonde (lol) je suis un pur débutant j en suis désolé.
Merci pour ton aide je pensse réussir avec l explication clair que tu m'a donné sinon je pensse que tu me revéra t'embété un peut sur le post.
Encore mille merci

Posté : 07 mars 2007, 22:07
par polo
Ben de rien, on est un peut la pour ça, aider les débutant, dit toi qu'on en apprends tout le temps, et qu'on à tous un jour été débutant, alors ^^ faut pas hésiter à demander de l'aide quand on arrive pas à faire quelque chose :D

bon j ai réussi

Posté : 07 mars 2007, 23:07
par dreamwebtechnologie
Bon j ai réussi le seule Hic!! c'est quand on arrive sur la page d'inscription il affiche directement
Le 'login' est vide !
Le 'password' est vide !
Le 'nom' est vide !
Le 'prenom' est vide !
Le 'email' est vide !
Votre 'adresse' est vide !

Donc lol les gens savent déja que les champs sont vide dé le départ avant qui est remplie quoi que se soit,donc comment puis je faire pour réglé se problème de visuelle.
Merci d'avance

Posté : 08 mars 2007, 04:38
par ghalaad
==> <input type="submit" name="Submit3" value="Envoyer">

if(isset($_POST["Submit3"]) && !empty($_POST["Submit3"]))
{
... tes tests ...
}

Posté : 08 mars 2007, 07:00
par AB
Bonjour,
c'est simple empty est utiliser pour savoir si une variable est vide ou pas
isset est utilisé pour savoir si une variable existe ou pas, quelque exemple
empty($var)
va être vrai si ta var est vide
!empty($var)
va être vrai si ta var n'est pas vide
isset ($var)
va être vrai si $var existe
!isset ($var)
va être vrai si $var n'existe pas

un petit tuto sur l'utilisation de isset
Clique ici

et sur empty
Clique ici

Voila :D
ça manque un peu de précision dans les définitions
empty($var)
est vrai si $var = '' ou $var = 0 ou si $var est non définie
!empty($var)
est vrai si $var est définie et $var != '' et $var != 0
isset ($var)
est vrai si $var est définie et quelque soit sa valeur
donc vrai également si $var = '' ou $var = 0
!isset ($var)
est vrai si $var n'existe pas (la variable est non définie)

voilà

Posté : 08 mars 2007, 12:58
par dreamwebtechnologie
rebonjour a tous voilà se que j ai réussi à faire
<?php 
if(isset($_POST["login"])) {
	if(($_POST['login'])) {
		//Passed!
		$login_msg="";
	}else{
		// Not passed 8-(
		$login_msg=" Vous devez remplir le champ <b>login</b>!";
		if(isset($_POST["MM_insert"])){
	  		unset($_POST["MM_insert"]);
		}
		if(isset($_POST["MM_update"])){
			unset($_POST["MM_update"]);
		}
	}
}
?>
<?php 
if(isset($_POST["password"])) {
	if(($_POST['password'])) {
		//Passed!
		$password_msg="";
	}else{
		// Not passed 8-(
		$password_msg=" Vous devez remplir le champ <b>password</b>!";
		if(isset($_POST["MM_insert"])){
	  		unset($_POST["MM_insert"]);
		}
		if(isset($_POST["MM_update"])){
			unset($_POST["MM_update"]);
		}
	}
}
?>
<?php 
if(isset($_POST["nom"])) {
	if(($_POST['nom'])) {
		//Passed!
		$nom_msg="";
	}else{
		// Not passed 8-(
		$nom_msg=" Vous devez remplir le champ <b>nom</b>!";
		if(isset($_POST["MM_insert"])){
	  		unset($_POST["MM_insert"]);
		}
		if(isset($_POST["MM_update"])){
			unset($_POST["MM_update"]);
		}
	}
}
?>
<?php 
if(isset($_POST["prenom"])) {
	if(($_POST['prenom'])) {
		//Passed!
		$prenom_msg="";
	}else{
		// Not passed 8-(
		$prenom_msg=" Vous devez remplir le champ <b>prenom</b>!";
		if(isset($_POST["MM_insert"])){
	  		unset($_POST["MM_insert"]);
		}
		if(isset($_POST["MM_update"])){
			unset($_POST["MM_update"]);
		}
	}
}
?>
<?php 
if(isset($_POST["email"])) {
	if(($_POST['email'])) {
		//Passed!
		$email_msg="";
	}else{
		// Not passed 8-(
		$email_msg=" Vous devez remplir le champ avec un <b>email</b> valide!";
		if(isset($_POST["MM_insert"])){
	  		unset($_POST["MM_insert"]);
		}
		if(isset($_POST["MM_update"])){
			unset($_POST["MM_update"]);
		}
	}
}
?>
<?php 
if(isset($_POST["adresse"])) {
	if(($_POST['adresse'])) {
		//Passed!
		$adresse_msg="";
	}else{
		// Not passed 8-(
		$adresse_msg=" Vous devez remplir le champ <b>adresse</b>!";
		if(isset($_POST["MM_insert"])){
	  		unset($_POST["MM_insert"]);
		}
		if(isset($_POST["MM_update"])){
			unset($_POST["MM_update"]);
		}
	}
}
?>
et pour indiquer un message d'erreur
<?php echo @$login_msg ?>
Bon le code fonctionne mais je le trouve un peut trop long en plus je pensse que on peut faire mieux.

Posté : 08 mars 2007, 13:31
par Aureusms
Pourquoi ne fais tu pas une fonction car c'est toujours la même syntaxe que tu demande. Du Style :
function verif ($champ) {
if(isset($champ)) {
    if(($champ)) { // à mon avis cette ligne est inutile car tu peux l'interpréter autrement
        //Passed!
        $login_msg="";
    }
    else{
        // Not passed 8-(
        $login_msg=" Vous devez remplir le champ <b>login</b>!";
        if(isset($_POST["MM_insert"]))  unset($_POST["MM_insert"]);
        if(isset($_POST["MM_update"])) unset($_POST["MM_update"]);
        
    }
}
return ($login_msg);
}

 
Pour interroger la fonction :
$message_a_afficher = verif ($_POST["login"]);
ou
$message_a_afficher = verif ($_POST["prenom"]);
A propos sais tu que tu peux mettre de multiple conditions dans la fonction if() ? Ainsi la fonction verif deviendrait :

function verif ($champ) {
if(isset($champ) && !empty($champ)) { // qui veut dire si existe et non vide
  
  $login_msg="";
  }
  else{ // qui veut dire si existe pas ou si vide
        
  $login_msg=" Vous devez remplir le champ <b>login</b>!";
  if(isset($_POST["MM_insert"]))  unset($_POST["MM_insert"]);
  if(isset($_POST["MM_update"])) unset($_POST["MM_update"]);
        
    }
}
return ($login_msg);
}
A mon avis ça peux marcher comme cela ! essaye et dis nous çà.

ok

Posté : 08 mars 2007, 15:30
par dreamwebtechnologie
Ok je vais bosser sur la function merci pour cette exemple

Posté : 08 mars 2007, 16:23
par AB
...
function verif ($champ) {
if(isset($champ) && !empty($champ)) { // qui veut dire si existe et non vide
  
  $login_msg="";
  }
  else{ // qui veut dire si existe pas ou si vide
        
  $login_msg=" Vous devez remplir le champ <b>login</b>!";
  if(isset($_POST["MM_insert"]))  unset($_POST["MM_insert"]);
  if(isset($_POST["MM_update"])) unset($_POST["MM_update"]);
}
return ($login_msg);
}
A mon avis ça peux marcher comme cela ! essaye et dis nous çà.
Très bonne idée de faire une fonction mais pour préciser un peu, dans
if(isset($champ) && !empty($champ))
la condition isset($champ) est redondante. Si !empty($champ) est vérifié, alors isset($champ) le sera nécécessairement puisque
if(!empty($champ)) {..}
//est équivalent à 
if(isset($champ) && $champ != '' && $champ != 0) {..}
SVP ARRETEZ d'employer le terme "vide" pour définir empty. Ce n'est pas rigoureux et n'aide pas les débutants. $var = 0 est une variable définie et non vide, elle contient 0.

Et puis ta fonction va toujours retourner 'Vous devez remplir le champ <b>login</b>!' ce qui ne sera pas approprié dans tous les cas. Il faut passer un deuxième paramètre dans ta fonction.

Ce qui donne (en employant les opérateurs ternaires pour le fun, et en vérifiant que le visiteur n'envoie pas juste un espace vide par mégarde) :
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);
}
et donc pour la vérification
$message_login = verif ($_POST["login"],'Login');
$message_prenom = verif ($_POST["prenom"],'Prénom');
//etc.
et pour l'affichage des messages dans le code html

Code : Tout sélectionner

<div id="message_erreur"> <?php if (!empty($message_login)) echo $message_login.'<br />'; if (!empty($message_prenom)) echo $message_prenom.'<br />'; //etc ?> </div>
On pourrait aussi passer par un tableau mais bon ...

?

Posté : 08 mars 2007, 16:58
par dreamwebtechnologie
les opérateurs ternaires
c est koi :?:

Posté : 08 mars 2007, 19:06
par AB
Bonjour,

Dans mon code précédent c'est simplement par exemple
isset($_POST["MM_update"])? unset($_POST["MM_update"]) : ''; 
qui se traduit par

si $_POST["MM_update"] est défini, on l'efface sinon on ne fait rien.

on l'utilise souvent pour faire des vérification et attribuer des valeurs par défaut ex :
$a = (isset($_POST['a']) && is_numéric($_POST['a']))? $_POST['a'] : 1 ;
qui veut dire
$a = $_POST['a'] si $_POST['a'] est défini et est numérique sinon $a = 1

On appelle ça ternaire car il y a toujours trois éléments :
- Une condition qui se termine par un ?
- Après le ? , ce que l'on fait si la condition est remplie
- Après le : , ce que l'on fait si la condition n'est pas remplie.

on peux faire l'équivalent avec if et else, mais cette syntaxe est plus rapide à l'exécution et facile à employer pour des conditions simples.