01net    Web


Actuellement en ligne : 246 Utilisateurs dont 10 dans Programmation et développement >S'inscrire      >S'identifier      >Recherche      >Aide  
modéré par A.Ouloube, Beno@  
01net > Forum de 01net > Programmation et développement > PHP
> construction et traitement de formulaire [resolu]
Auteur
Message
 
<     1       >
kesaro
  
   
      ?   @     Posté le 08/05/2007 11:03:59  
Voter pour ce message
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<--
Minus-et-Cortex
  
   
      ?   @     Posté le 08/05/2007 13:17:35  
Voter pour ce message
Salut!

1 -
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>";
if ($field != "renseignements")
echo "<input type='text' name='$field' size='65'
maxlength='255' >";
else
echo "<textarea></textarea>";
echo "</td>
</tr>";
}
echo "<tr>
<td colspan='2' style='text-align: center'>
<input type='submit'
value='Envoyer le formulaire'>";
echo "</td></tr></table>
</form>";

2 - Pour ce qui est du mail, il faut vérifier que tu puisses bien en envoyer (certains hébergeurs empêchent l'utilisation de la fonction mail) et que les quelques variables de configuration liées à cette fonction sont bien positionnées. Tu peux trouver une aide sur mail ici.

@+
-------
Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet.
Gustave Parking
kesaro
  
   
      ?   @     Posté le 08/05/2007 13:39:37  
Voter pour ce message
Génial :youpi: ,

Cela fonctionne bien.
Ca me posé un gros problème de taille dans la base.
je devais déclarer tous mes champs en "varchar" "255" caractères, c'est pas top...
pour ce qui est du mail,mon hébergeur ne pose pas de problème, c'est un local.
Il a un serveur sous "Phédora", "Apache" et "php5" et une des dernière version de "Mysql".
Mon souci est plutôt que je ne sais pas trop où je dois insérer cette fonction dans ma page de traitement et dans quelle variable je peux récupérer mes données, puisque je travaille à partir d'un tableau.
Je regarde la page que tu m'as indiqué et je fais des tests.

Merci encore pour ton aide
<     1       >

01net > Forum de 01net > Programmation et développement > PHP
> construction et traitement de formulaire [resolu]

Aller à :

Page générée en : 0.094s - X2board 2.2

Nous contacter | Charte de confiance | Voir notice légale

Tous droits réservés © 1999 - 2008 Groupe Tests - 01net.


Sites du réseau 01net Network : 01net - 01men - Rmc.fr - Bfmtv.fr - Radiobfm.com - TousLesPodcasts - Micro Achat

Widget
Info, Sport et bien plus encore. Tout RMC.fr en un clic sur votre bureau. Téléchargez!
Jeux
Nouveauté :
Serez-vous capable de vous occuper de tous ces adorables bébés ?