Bonjour,
J'ai un formulaire entièrement en PHP qui prend des données, et par le biais d'une page de traitement les envois dans ma base mysql.
Jusque là, tout fonctionne.
Par contre si le look de mon formulaire me convient, j'ai trois problèmes :
1 - j'aimerai que la case "renseignements" soit au format "textarea" hors impossible de la dissocier des autres, puisque c'est un tableau. Je n'arrive pas à modifier la boucle d'affichage.
Voici le code du formulaire :
echo "<html>
<head><title>Formulaire destiné aux entreprises</title></head>
<body>";
$labels = array ( "prenom" => "Prénom: ",
"nom" => "Nom: ",
"mail" => "Mail: ",
"secteur" => "Secteur d'activité: ",
"ville" => "Ville: ",
"renseignements" => "Renseignements: ");
echo "<h3>Remplissez le formulaire de demande de renseignement</h3>";
echo "<form action='traitement.php' method='POST'>
<table>\n";
/* Boucle d'affichage */
foreach($labels as $field => $label)
{
echo "<tr>
<td style='text-align: right;
font-weight: bold'> $label</td>
<td><input type='text' name='$field' size='65'
maxlength='255' ></td>
</tr>";
}
echo "<tr>
<td colspan='2' style='text-align: center'>
<input type='submit'
value='Envoyer le formulaire'>";
echo "</td></tr></table>
</form>";
2 - si les données se trouvent dans ma base, j'aimerais aussi qu'elles arrivent par mail à mon adresse avec une confirmation pour l'internaute. et là même chose, je ne suis pas assez calée en php pour m'en sortir, la fonction "mail" me fait des misères.
Voici le code de la page traitement :
<?php
/* tableau de légende des champs */
$labels = array ( "prenom" => "Prénom: ",
"nom" => "Nom: ",
"mail" => "Mail: ",
"secteur" => "Secteur d'activité: ",
"ville" => "Ville: ",
"renseignements" => "Renseignements: ");
/* regarde les champs reçus */
foreach($_POST as $field => $value)
{
/* Charche les champs vides */
if( $value == "" )
{
$blank_array[] = $field;
}
/* Teste le format des champs */
elseif( ereg("(nom)",$field) )
{
if(!ereg("^[A-Za-z' -]{1,50}$",$value) )
{
$bad_format[] = $field;
}
}
elseif($field == "mail")
{
if(!ereg("^.+@.+\.fr$",$value) )
{
$bad_format[] = $field;
}
}
} // Fin de foreach sur $_POST
/* Si problème, afficher un message et revenir au formulaire */
if(@sizeof($blank_array) > 0 or @sizeof($bad_format) > 0)
{
if(@sizeof($blank_array) > 0)
{
/* Information manquante */
echo "<b>Un champ au moins est vide. Vous devez le remplir :</b><br>";
/* Liste des données manquantes*/
foreach($blank_array as $value)
{
echo " {$labels[$value]}<br>";
}
}
if(@sizeof($bad_format) > 0)
{
/* Informations incorrectes */
echo "<b>Un champ au moins contient une information incorrecte. Veuillez la corrigez:</b><br>";
/* Liste des champs incorrects */
foreach($bad_format as $value)
{
echo " {$labels[$value]}<br>";
}
}
/* réaffichage du formulaire */
echo "<p><hr />";
echo "<h3>Remplissez le formulaire de demande de renseignement</h3>";
echo "<form action='traitement.php' method='POST'>
<table>";
foreach($labels as $field => $label)
{
$good_data[$field]=strip_tags(trim($_POST[$field]));
echo "<tr>
<td style='text-align: right; font-weight: bold'>
$label</td>
<td><input type='text' name='$field' size='65'
maxlength='65' value='$good_data[$field]'></td>
</tr>";
}
echo "<tr>
<td colspan='2' style='text-align: center'>
<input type='submit' value='Envoyer le formulaire'>";
echo "</td></tr></table>
</form>";
exit();
}
else //Si les données sont OK. Se connecter à la base
{
$user="";
$host="";
$password="";
$database="";
$cxn = mysqli_connect($host,$user,$password,$database)
or die ("connexion au serveur impossible");
//Vérifier le format du champ "mail"
$fields_all = array_keys($labels);
foreach($fields_all as $field)
{
$good_data[$field] = strip_tags(trim($_POST[$field]));
}
//Inserer les données du formulaire dans la table "entreprise"
$query = "INSERT INTO entreprise (prenom,nom,mail,secteur,ville,renseignements)
VALUES ('$good_data[prenom]','$good_data[nom]','$good_data[mail]',
'$good_data[secteur]','$good_data[ville]','$good_data[renseignements]')";
//message d'erreur, si l'envoi du formulaire se passe mal
$result = mysqli_query($cxn,$query)
or die ("L'envoi du formulaire a échoué");
//Message si l'envoi du formulaire se passe bien
echo "<h4>Votre demande a bien été envoyé. Nous vous remercions.</h4>";
}
?>
</body></html>
Merci à tous et désolée pour la taille du message...
-->Message édité par kesaro le 11/05/2007 15:22:49<--
|