8797 sujets

Développement web côté serveur, CMS

Pages :
(reprise du message précédent)

Tiens voilà un exemple d'utilisation de empty pour vérifier que tous les champs sont remplis. Je t'ai fait un squelette, t'as plus qu'a rajouter ton code d'envoi du formulaire au bon endroit :


$champs_obligatoires = Array('nom', 'email', 'nation', 'prenom', 'telephone', 'adresse', 'profession');

/**
 * Vérifie si les champs obligatoires ne sont pas vides.
 * 
 * @param array $array Tableau contenant les noms de champs à vérifier
 * @return boolean
 */
function verif_champs_obligatoires($array) {
  foreach ($array as $nom) {
   if (empty($_POST[$nom])) {
     return false;
   }
  }
  return true;
}

/**
 * Si le formulaire à été envoyé 
 */
if (!empty($_POST)) {
  if (verif_champs_obligatoires($champs_obligatoires) === true) {
   // ici on envoi le mail 
  } else {
   // un des champs n'a pas été rempli, on stocke l'erreur pour l'afficher dans le formulaire.
   $error = 'Merci de remplir tous les champs';
  }
}
Je te remercie énormément pour ton aide.
Je regarde dès demain matin et je reviens te donner des nouvelles.

Encore merci, très bonne fin de journée
Bonjour à tous Smiley cligne

Je te remercie encore pour ton aide jb_gfx, je suis persuadé que ton code est le mieux adapté à mes besoins. Je l'ai implémenté de cette façon :


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/plain; charset=UTF-8" />
</head>
<?PHP
if (get_magic_quotes_gpc())
{
    $nom = stripslashes($_POST['nom']); 
    $email = stripslashes($_POST['email']);
    $nation = stripslashes($_POST['nation']); 
    $prenom = stripslashes($_POST['prenom']); 
    $telephone = stripslashes($_POST['telephone']); 
    $adresse = stripslashes($_POST['adresse']);
    $profession = stripslashes($_POST['profession']); 
    $statut = stripslashes($_POST['statut']); 
    $interet = stripslashes($_POST['interet']);
    $message = stripslashes($_POST['message']);  
} 
else
{  
    extract($_POST,EXTR_OVERWRITE); 
    
$to = 'chezmoi@monsite.com';

// Subject
$subject = 'Demande informations concernant monsite.com';
/////voici la version Mine 
$headers = "MIME-Version: 1.0\r\n"; 

$headers .='Content-Type: text/plain; charset="utf-8"'." ";
$headers .='Content-Transfer-Encoding: 8bit'; 
/* Construction du message */
$msg  = 'Bonjour,'."\r\n\r\n";
$msg .= 'Ce mail a été envoyé depuis le site monsite.com par '.$nom.' '.$prenom."\r\n\r\n";
$msg .= 'Voici le message qui vous est adressé:'."\r\n";
$msg .= '***************************'."\r\n";
$msg .= 'Le nom est :'.$nom."\r\n\r\n";
$msg .= 'Le prénom est :'.$prenom."\r\n\r\n";
$msg .= 'La nationalité est :'.$nation."\r\n\r\n";
$msg .= 'Le numéro de téléphone est :'.$telephone."\r\n\r\n";
$msg .= 'L adresse email est :'.$email."\r\n\r\n";
$msg .= 'L adresse de domiciliation est :'.$adresse."\r\n\r\n";
$msg .= 'Sa profession est :'.$profession."\r\n\r\n";
$msg .= 'Son statut est :'.$statut."\r\n\r\n";
$msg .= 'Son intérêt est :'.$interet."\r\n\r\n";
$msg .= 'Son message est :'.$message."\r\n\r\n";
$msg .= '***************************'."\r\n\r\n";
 

$headers = 'From: '.$nom.' '.$prenom.' <'.$expediteur.'>'."\r\n\r\n";

function verif_champs_obligatoires($array) {
  foreach ($array as $nom) {
   if (empty($_POST[$nom])) {
     return false;
   }
  }
  return true;
}
if (!empty($_POST)) {
  if (verif_champs_obligatoires($champs_obligatoires) === true) {
  mail($to, $subject, utf8_decode($msg), utf8_decode ($headers));
  } else {
   // un des champs n'a pas été rempli, on stocke l'erreur pour l'afficher dans le formulaire.
   $error = 'Merci de remplir tous les champs';
  }
}

// la fonction de redirection ------------
function redir($url){
echo "<script language=\"javascript\">";
echo "window.location='$url';";
echo "</script>";
}
// Utiliser la redirection ---------------
redir("http://www.monsite.com"); 
}?> 
</html>


Je dois avouer que j'ai un peu honte de ma nulitude Smiley bawling
Apparemment l'envoie de mail est bien traité, j'ai bien la redirection vers la home-page mais je ne constate ni vérification ni envoie du message.

J'ai essayé en supprimant la redirection vers la home-page dans ce cas le traitement reste bloqué sur mail.php.

Si vous avez une petite piste de recherche, je vous en remercie d'avance.

Très bonne journée à tous Smiley lol
Au vue de mon précédent poste, je risque de passer pour un crétin fini :
Dans le précédent poste il manque la ligne :
$champs_obligatoires = Array('nom', 'email', 'nation', 'prenom', 'telephone', 'adresse', 'profession');


Je vous assure que la ligne est bien présente dans le fichier mail.php sur le serveur

$champs_obligatoires = Array('nom', 'email', 'nation', 'prenom', 'telephone', 'adresse', 'profession');

function verif_champs_obligatoires($array) {
  foreach ($array as $nom) {
   if (empty($_POST[$nom])) {
     return false;
   }
  }
  return true;
}
if (!empty($_POST)) {
  if (verif_champs_obligatoires($champs_obligatoires) === true) {
  mail($to, $subject, utf8_decode($msg), utf8_decode ($headers));
  } else {
   // un des champs n'a pas été rempli, on stocke l'erreur pour l'afficher dans le formulaire.
   $error = 'Merci de remplir tous les champs';
  }
}


Désolé l'erreur c'est glissée au moment ou j'ai fait le message sur le forum Smiley biggol
Modifié par paikan (27 Jun 2012 - 15:15)
slt, il me semble que tu es pratiquement satisfais. mais je peux toucher du bois. Tu peux au aussi ecrire un script permettant de vérifier si les champs obligatoires sont remplis. Pour cela, il faudra un id spécifique pour tout tes champs obligatoires.
tu peux exploiter mes codes pout t'édifier.
J'ai un formulaire:
<form action="ScriptJava.php" id="monform">
<label>Titre du film</label>
<input type="text" name="titre" id="id_Titre" /><br/>
<label>Année</label>
<input type="text" name="annee" id="idAnnee" maxlength="4" /
<br/>
<label>Genre</label>
<select name="genre[]"multiple="yes" size="3" id="idGenre"
<option value="policier">POLICIER</option>
<option value="sf">SCIENCE FICTION</option>
<option value="culte">CULTE</option>
</select><br/>
<label>Description</label>
<textarea name="description" id="idDescript"></textarea><br/
<label>Film en couleur</label>
<input type="radio" name="couleur" value="1"
id="idCoulOui" /> oui <input
type="radio" name="couleur" value="0"id="idCoulNon" /> non <br/>
<label>Pays</label>
<select name="pays" id="idPays">
<option value=""></option>
<option value="fr">FRANCE</option>
<option value="us">USA</option>
<option value="gb">ANGLETERRE</option>
</select><br/>
<label>Sous titre</label>
<input type="checkbox" name="soustitre[]" value="fr"
id="idStFr" /> français <input
type="checkbox" name="soustitre[]" value="gb"
id="idStGb" /> anglais <input
type="checkbox" name="soustitre[]" value="es"
id="idStEs" /> espagnol <br/>
<br/>
<input type="button" value="valider" onClick="verif()" />
</form>

là je t'ai passer un exemple de formulaire. ensuite, tu peux insérer un code script sur la même page, juste après </head>, avant <body>
Voici le code script:

<script type="text/javascript">
function verif()
{
var err = "";
if (document.getElementById('id_Titre').value=='')
err = err+"- titre\n";
if (document.getElementById('idAnnee').value=='')
err = err+"- année\n";
if (document.getElementById('idGenre').selectedIndex==-1)
err = err+"- genre\n";
if (document.getElementById('idDescript').value=='')
err = err+"- description\n";
if (document.getElementById('idCoulOui').checked==false &&
document.getElementById('idCoulNon').checked==false)
err = err+"- couleur\n";
if (document.getElementById('idPays').selectedIndex==0)
err = err+"- pays\n";
if (document.getElementById('idStFr').checked==false &&
document.getElementById('idStGb').checked==false &&
document.getElementById('idStEs').checked==false)
err = err+"- sous titre\n";
if (err!="") {
alert("Formulaire incomplet :\n"+err);
}
else if (confirm("Transmettre le formulaire ?")) {
document.getElementById('monform').submit();
}
}
</script>

ce code marche bien. tu peux l'exploiter. il t'affiche le message "Formulaire incomplet" si les champs ne sont pas remplis. dans le cas contraire, il te demande juste si tu veux transmettre le formulaire.
Pages :