boite de dialogue avec Php

Mammouth du PHP | 19672 Messages

01 mai 2005, 11:25

Personnellement, je trouve ça plus simple : Si il y a des erreurs dans le formulaire, pas besoin de retourner en arrière vers le formulaire pour la correction, on fait tout dans le même fichier et éventuellement on se dirige vers une autre page dès que la validation est satisfaisante.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ricardo
Invité n'ayant pas de compte PHPfrance

01 mai 2005, 11:42

Merci pour les infos, je vais essayer.

ricardo
Invité n'ayant pas de compte PHPfrance

04 mai 2005, 19:02

Voila le message d'erreur que j'ai :

Notice: Undefined index: nomutilisateur in d:\easyphp1-8\www\pages seules\annonceenregistrer.php on line 7

Merci

Mammouth du PHP | 19672 Messages

04 mai 2005, 19:10

Ça signifie que tu as une variable qui n'est poas initialisée:
Si c'est une variable en provenance du formulaire, tu as peut-être fait une erreur de recopie du nom du champ
$nomutilisateur = $_POST['nomutilisateur'] : vérifie bien qu'il ne manque pas une lettre ou une majuscule quelque part.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ricardo
Invité n'ayant pas de compte PHPfrance

04 mai 2005, 19:20

voila mon code :
$nomutilisateur = $_POST['nomutilisateur'];
$motpasse  = $_POST['motpasse'];
$email = $_POST['email'];

ricardo
Invité n'ayant pas de compte PHPfrance

04 mai 2005, 19:22

Voila tout le code :
<?php 
// on récupère les données POST 

$nomutilisateur = $_POST['nomutilisateur'];
$motpasse  = $_POST['motpasse'];
$email = $_POST['email'];

if ($nomutilisateur == '' || $motpasse == '' || $email == '')	
{
   // Action à adopter
?>
				<h3>Informations incomplètes</h3>
				<p>Un (ou plusieurs) champ(s) n'a(ont) pas été correctement rempli(s).</p>
        
<?php
                $message ="";
				if ($nomutilisateur == "") // Si le champ "prénom" est vide,
					{	$message.="--Vous devez entrer un nom d'utilisateur dans le champs prévu à cet effet.";	}
				if ($motpasse == "") // Si le champ "nom" est vide,
					{	$message.="--Vous devez entrer un nom d'utilisateur dans le champs prévu à cet effet.";	}
				if ($email == "") // Si le champ "téléphone" est vide,
				   { $message.="--Vous devez entrer un nom d'utilisateur dans le champs prévu à cet effet.";}}
			    else{
				mysql_query("INSERT INTO login (nomutilisateur, motpasse, email)".
                    " VALUES ('$nomutilisateur', '$motpasse', '$email') ")
					   or die("Impossible d'insérer le résultat du sondage");
}
?> 

<style type="text/css">
<!--
.Style1 {
	font-size: 12px;
	color: #999999;
}
.Style4 {color: #FFFFFF}
-->
</style>
</head>

<body>
<div align="center">
  <table width="830" border="0" cellpadding="0" cellspacing="0">
    <tr>
      <td align="center" valign="top" background="../images/fondrose1.gif"><div align="center">
        <p><img src="../titres/titreannonceenreg.gif" width="600" height="100">
</p>
        <form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
          <p align="center">Nom d'utilisateur :&nbsp;            
            <input name="nomutilisateur" type="text" id="nomutilisateur" maxlength="10" value="<?php echo $nomutilisateur ?>">
          </p>
          <p>Mot de passe : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <input name="motpasse" type="text" id="motpasse" maxlength="10" value="<?php echo $motpasse ?>">
</p>
          <p>E-mail :&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;
            <input name="email" type="text" id="email" value="<?php echo $email ?>"> 
          </p>
          <p>
            <input name="enregistrer" type="submit" id="enregistrer" value="S'enregistrer">
          </p>
          <p>&nbsp;</p>
        </form>
        <p align="left">&nbsp;</p>
        <p align="left">&nbsp;</p>
        <p align="left">&nbsp;</p>
        <p align="left">&nbsp;</p>
        <p class="Style1"> Copyright &copy; CFAF 2005</p>
      </div></td>
    </tr>
  </table>
</div>
</body>
</html>

Mammouth du PHP | 19672 Messages

04 mai 2005, 19:29

OUi, forcément, lors de l'ouverture du formulaire vierge, les valeurs d'existent pas, et la variable $_POST n'a jamais été initialisée.

Il faut donc en vérifier l'état avant :
<?php
/* On vérifie si le bouton d'envoi du formulaire a été cliqué */
if($_POST['enregistrer'])
{
    // on récupère les données POST

    $nomutilisateur = $_POST['nomutilisateur'];
    $motpasse  = $_POST['motpasse'];
    $email = $_POST['email'];

    if ($nomutilisateur == '' || $motpasse == '' || $email == '')
    {
        // Action à adopter
        ?>
                <h3>Informations incomplètes</h3>
                <p>Un (ou plusieurs) champ(s) n'a(ont) pas été correctement rempli(s).</p>
        
        <?php
        $message ="";
        if ($nomutilisateur == "") // Si le champ "prénom" est vide,
        {
            $message.="--Vous devez entrer un nom d'utilisateur dans le champs prévu à cet effet.";
        }
        if ($motpasse == "") // Si le champ "nom" est vide,
        {
            $message.="--Vous devez entrer un nom d'utilisateur dans le champs prévu à cet effet.";
        }
        if ($email == "") // Si le champ "téléphone" est vide,
        {
            $message.="--Vous devez entrer un nom d'utilisateur dans le champs prévu à cet effet.";
        }
    }
    else
    {
        mysql_query("INSERT INTO login (nomutilisateur, motpasse, email)".
        " VALUES ('$nomutilisateur', '$motpasse', '$email') ")
        or die("Impossible d'insérer le résultat du sondage");
    }
?>

<style type="text/css">
<!--
.Style1 {
    font-size: 12px;
    color: #999999;
}
.Style4 {color: #FFFFFF}
-->
</style>
</head>

<body>
<div align="center">
  <table width="830" border="0" cellpadding="0" cellspacing="0">
    <tr>
      <td align="center" valign="top" background="../images/fondrose1.gif"><div align="center">
        <p><img src="../titres/titreannonceenreg.gif" width="600" height="100">
</p>
        <form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
          <p align="center">Nom d'utilisateur :&nbsp;            
            <input name="nomutilisateur" type="text" id="nomutilisateur" maxlength="10" value="<?php if(isset($_POST['utilisateur'])){echo $nomutilisateur;} ?>">
          </p>
          <p>Mot de passe : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <input name="motpasse" type="text" id="motpasse" maxlength="10" value="<?php echo $motpasse ?>">
</p>
          <p>E-mail :&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;
            <input name="email" type="text" id="email" value="<?php echo $email ?>">
          </p>
          <p>
            <input name="enregistrer" type="submit" id="enregistrer" value="S'enregistrer">
          </p>
          <p>&nbsp;</p>
        </form>
        <p align="left">&nbsp;</p>
        <p align="left">&nbsp;</p>
        <p align="left">&nbsp;</p>
        <p align="left">&nbsp;</p>
        <p class="Style1"> Copyright &copy; CFAF 2005</p>
      </div></td>
    </tr>
  </table>
</div>
</body>
</html>
<?php
}
?>
Je te laisse compléter la correction dans le formulaire, j'ai modifié une variable, fais pareil pour les autres. Et regarde bien lla différence avec ton code pour noter les changements.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ricardo
Invité n'ayant pas de compte PHPfrance

04 mai 2005, 19:44

meme pb avec mon bouton enregistrer

Mammouth du PHP | 19672 Messages

04 mai 2005, 19:47

Autant pour moi, changer la ligne par
if(isset($_POST['enregistrer'])) 
Voilà, j'ai fait ça vite sans regarder , dsésolé. Mais bon, note bien que tu aurais pu trouver aussi ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ricardo
Invité n'ayant pas de compte PHPfrance

04 mai 2005, 19:52

Maintenant j'ai plus rien qui s'affiche sur la page, plus de champs de formulaire, mon code :
<?php 
/* On vérifie si le bouton d'envoi du formulaire a été cliqué */ 
if(isset($_POST['enregistrer']))  
   { 
// on récupère les données POST 

$nomutilisateur = $_POST['nomutilisateur'];
$motpasse  = $_POST['motpasse'];
$email = $_POST['email'];

if ($nomutilisateur == '' || $motpasse == '' || $email == '')	
{
   // Action à adopter
?>
				<h3>Informations incomplètes</h3>
				<p>Un (ou plusieurs) champ(s) n'a(ont) pas été correctement rempli(s).</p>
        
<?php
                $message ="";
				if ($nomutilisateur == "") // Si le champ "prénom" est vide,
					{	$message.="--Vous devez entrer un nom d'utilisateur dans le champs prévu à cet effet.";	}
				if ($motpasse == "") // Si le champ "nom" est vide,
					{	$message.="--Vous devez entrer un nom d'utilisateur dans le champs prévu à cet effet.";	}
				if ($email == "") // Si le champ "téléphone" est vide,
				   { $message.="--Vous devez entrer un nom d'utilisateur dans le champs prévu à cet effet.";}}
			    else{
				mysql_query("INSERT INTO login (nomutilisateur, motpasse, email)".
                    " VALUES ('$nomutilisateur', '$motpasse', '$email') ")
					   or die("Impossible d'insérer le résultat du sondage");
}
?> 

<style type="text/css">
<!--
.Style1 {
	font-size: 12px;
	color: #999999;
}
.Style4 {color: #FFFFFF}
-->
</style>
</head>

<body>
<div align="center">
  <table width="830" border="0" cellpadding="0" cellspacing="0">
    <tr>
      <td align="center" valign="top" background="../images/fondrose1.gif"><div align="center">
        <p><img src="../titres/titreannonceenreg.gif" width="600" height="100">
</p>
        <form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
          <p align="center">Nom d'utilisateur :&nbsp;            
            <input name="nomutilisateur" type="text" id="nomutilisateur" maxlength="10" value="<?php if(isset($_POST['nomutilisateur'])){echo $nomutilisateur;} ?>"> 
          </p>
          <p>Mot de passe : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <input name="motpasse" type="text" id="motpasse" maxlength="10" value="<?php if(isset($_POST['motpasse'])){echo $motpasse;} ?>"> 
</p>
          <p>E-mail :&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;
            <input name="email" type="text" id="email" value="<?php if(isset($_POST['email'])){echo $email;} ?>">  
          </p>
          <p>
            <input name="enregistrer" type="submit" id="enregistrer" value="enregistrer">
          </p>
          <p>&nbsp;</p>
        </form>
        <p align="left">&nbsp;</p>
        <p align="left">&nbsp;</p>
        <p align="left">&nbsp;</p>
        <p align="left">&nbsp;</p>
        <p class="Style1"> Copyright &copy; CFAF 2005</p>
      </div></td>
    </tr>
  </table>
</div>
</body>
</html>
<?php 
} 
?> 

Mammouth du PHP | 19672 Messages

04 mai 2005, 20:03

bien, c'est un progrès : et sais-tu pourquoi ? Je te rassure, c'est normal et c'est très bon signe. Parce que j'ai mis le formulaire dans la condition if de départ: à l'ouverture, la condition n'est pas remplie et on sort du if.

Il reste à compléter ton code en ajoutant le else si on a pas cliqué : le tout donne ceci:
<html>
<head>
<title></title>
<style type="text/css">
<!--
.Style1 {
    font-size: 12px;
    color: #999999;
}
.Style4 {color: #FFFFFF}
-->
</style>
</head>

<body>
<div align="center">
<?php
/* On vérifie si le bouton d'envoi du formulaire a été cliqué */
if(isset($_POST['enregistrer']))
{
    // on récupère les données POST

    $nomutilisateur = $_POST['nomutilisateur'];
    $motpasse  = $_POST['motpasse'];
    $email = $_POST['email'];

    if ($nomutilisateur == '' || $motpasse == '' || $email == '')
    {
        // Action à adopter
        ?>
                <h3>Informations incomplètes</h3>
                <p>Un (ou plusieurs) champ(s) n'a(ont) pas été correctement rempli(s).</p>
        
        <?php
        $message ="";
        if ($nomutilisateur == "") // Si le champ "prénom" est vide,
        {
            $message.="--Vous devez entrer un nom d'utilisateur dans le champs prévu à cet effet.";
        }
        if ($motpasse == "") // Si le champ "nom" est vide,
        {
            $message.="--Vous devez entrer un nom d'utilisateur dans le champs prévu à cet effet.";
        }
        if ($email == "") // Si le champ "téléphone" est vide,
        {
            $message.="--Vous devez entrer un nom d'utilisateur dans le champs prévu à cet effet.";
        }
    }
    else
    {
        mysql_query("INSERT INTO login (nomutilisateur, motpasse, email)".
        " VALUES ('$nomutilisateur', '$motpasse', '$email') ")
        or die("Impossible d'insérer le résultat du sondage");
    }
?>
  <table width="830" border="0" cellpadding="0" cellspacing="0">
    <tr>
      <td align="center" valign="top" background="../images/fondrose1.gif"><div align="center">
        <p><img src="../titres/titreannonceenreg.gif" width="600" height="100">
</p>
        <form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
          <p align="center">Nom d'utilisateur :&nbsp;            
            <input name="nomutilisateur" type="text" id="nomutilisateur" maxlength="10" value="<?php if(isset($_POST['nomutilisateur'])){echo $nomutilisateur;} ?>">
          </p>
          <p>Mot de passe : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <input name="motpasse" type="text" id="motpasse" maxlength="10" value="<?php echo $motpasse ?>">
</p>
          <p>E-mail :&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;
            <input name="email" type="text" id="email" value="<?php echo $email ?>">
          </p>
          <p>
            <input name="enregistrer" type="submit" id="enregistrer" value="S'enregistrer">
          </p>
          <p>&nbsp;</p>
        </form>
        <p align="left">&nbsp;</p>
        <p align="left">&nbsp;</p>
        <p align="left">&nbsp;</p>
        <p align="left">&nbsp;</p>
        <p class="Style1"> Copyright &copy; CFAF 2005</p>
      </div></td>
    </tr>
  </table>
<?php
}
else
{
?>
  <table width="830" border="0" cellpadding="0" cellspacing="0">
    <tr>
      <td align="center" valign="top" background="../images/fondrose1.gif"><div align="center">
        <p><img src="../titres/titreannonceenreg.gif" width="600" height="100">
</p>
        <form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
          <p align="center">Nom d'utilisateur :&nbsp;            
            <input name="nomutilisateur" type="text" id="nomutilisateur" maxlength="10" value="">
          </p>
          <p>Mot de passe : &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <input name="motpasse" type="text" id="motpasse" maxlength="10" value="">
</p>
          <p>E-mail :&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;
            <input name="email" type="text" id="email" value="">
          </p>
          <p>
            <input name="enregistrer" type="submit" id="enregistrer" value="S'enregistrer">
          </p>
          <p>&nbsp;</p>
        </form>
        <p align="left">&nbsp;</p>
        <p align="left">&nbsp;</p>
        <p align="left">&nbsp;</p>
        <p align="left">&nbsp;</p>
        <p class="Style1"> Copyright &copy; CFAF 2005</p>
      </div></td>
    </tr>
  </table>
<?php
}
?>
</div>
</body>
</html>
Comme j,aime pas écrire des doublons pour rien, j'ai un peu restructuré, tu devrais comprendre facilement. Tu vois maintenant ton formulaire deux fois : mais le second n'a plus de valeurs dans les champ : Il n'y en a pas besoin.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ricardo
Invité n'ayant pas de compte PHPfrance

04 mai 2005, 21:43

Mes messages d'erreurs ne s'affichent pas :
<?php
                $message ="";
				if ($nomutilisateur == "") // Si le champ "prénom" est vide,
					{	$message.="--Vous devez entrer un nom d'utilisateur dans le champs prévu à cet effet.";	}
				if ($motpasse == "") // Si le champ "nom" est vide,
					{	$message.="--Vous devez entrer un nom d'utilisateur dans le champs prévu à cet effet.";	}
				if ($email == "") // Si le champ "téléphone" est vide,
				   { $message.="--Vous devez entrer un nom d'utilisateur dans le champs prévu à cet effet.";}}
			    else{
				mysql_query("INSERT INTO login (nomutilisateur, motpasse, email)".
                    " VALUES ('$nomutilisateur', '$motpasse', '$email') ")
					   or die("Impossible d'insérer le résultat du sondage");
}
?> 
Comment déclarer ma variable message correctement ?

Mammouth du PHP | 19672 Messages

04 mai 2005, 21:49

Ben là, je sais pas trop, je l'ai testé cchez moi et il fonctionne très bien (sauf l'enregistrement bien sur)

Donc il y a une erreur de copie quelque part...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ricardo
Invité n'ayant pas de compte PHPfrance

04 mai 2005, 21:59

Tu as déclaré pareil ma variable message ?

Mammouth du PHP | 19672 Messages

04 mai 2005, 22:02

j'ai enregistré exactement le script que je t'ai mis plus haut, à la virgule près.
Je n'ai pas l'image du haut et la connexion à MySQL ne se fait pas, ce qui est normal, mais le script fonctionne, si clique sur le bouton sans rien mettre, j'ai les messages.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: