PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 Re : Forum Général PHP » formulaire html : alimenter une base et recevoir un mail en retour » 21-08-2012 17:03:13

Je me mets une reponse a moi-meme parce que je ne sais pas si mon post est au bon endroit ou bien va etre deplace par les moderateurs
j'ai omis de dire les url de ce que j'ai dejà trouve

Poster une demande d'aide : mode d'emploi
c'est là :
forum.phpdebutant.org/viewtopic.php?id=3012

"Passage de variables d'un formulaire à l'autre"
c'est là :
http://forum.phpdebutant.org/viewtopic.php?id=852

apprendre le php
c'est là :
http://www.creation-du-web.com/honolulu … -php4.html

rendre un champ obligatoire
c'est là :
http://forum.phpdebutant.org/viewtopic.php?id=17331

transmettre des donnees avec les formulaires
c'est là :
http://www.siteduzero.com/tutoriel-3-14 … aires.html

etc etc ...

#2 Forum Général PHP » formulaire html : alimenter une base et recevoir un mail en retour » 21-08-2012 17:03:13

jnspev
Réponses : 1

formulaire html : alimenter une base et recevoir un mail en retour
Voilà ! tout est dit !
[[[je poste ici car je n'ai pas trouve d'autre formulaire de depot de ma demande que ici. Mes excuses si ce n'est pas le bon endroit !]]]

Voici ma question :


Sujet : form, action, base, table, mail ... ça ne marche pas !

// Bonjour

je me suis mise au PHP et SQL - et je suis totalement autodidacte - parce que j'ai besoin de realiser une page html de formulaires : textarea, checkbox, radio, annuler/valider, et besoin d'utiliser ensuite les valeurs qui seront entrées par les utilisateurs dans les formulaires. Et j'ai continué parce que cela m'interesse.
J'ai un serveur virtuel Simple Hosting chez GANDI. Apache 2.4.1 (Unix), PHP 5.3.10-2, et PhpMyAdmin3.5.2.1, sur lequel j'ai cree une base de données, BASEXXX et une table, TABLEXXX.
J'ai cree la base avec la fonction proposée par PhpMyAdmin, mais j'ai ecrit moi-meme la requete pour creer la table, juste du 1er coup (du moins le serveur l'a acceptee sans aucun message d'erreur), meme si j'ai quelques doutes sur les attributs que j'ai donnés aux colonnes (attention ! ce n'est pas la meme chose que les attributs donnes aux champs ! hou la la !)... On verra à l'usage !

Voilà ma question :
J'ai besoin de :
1°) Récuperer les valeurs deposées par les utilisateurs dans les formulaires.
2°) Les inserer et les stocker dans la table de la base de données.
3°) Afficher au visiteur, apres qu'il ait envoyé ses données, un ecran qui les lui rappelle et le remercie.
4°) Lui envoyer un email pour lui dire la même chose.
5°) M'envoyer un email à moi-meme pour que je sois prevenue du passage sur le site de l'utilisateur et pour que je recupere les données qu'il a laissées afin de les traiter.

J'ai beaucoup, beaucoup travaillé, depuis je n'ose dire, plusieurs mois, car je suis partie de zero, plusieurs cahiers, papier crayon, face à l'ecran bien sur, sur les forum (le votre !), les tutos, etc ..., mais je n'y arrive pas. Et c'est la premiere fois que je vais sur un forum.

J'utilise notepad++.
J'ai établi le script que je vous envoie.
Il ne marche pas (points 1°, 2°, et 3°).
(je n'ai pas encore cherche à faire fonctionner les points ci-dessus 4° et 5° - envoi des emails - puisque la table n'est pas alimentée et est vide)
Avec ce script, j'obtient tout simplement une page blanche, totalement vide, et si je regarde sur le serveur, le serveur n'a aucune trace de mon passage.

1.Pourtant 1, je pense que cote serveur sur la base de données, c'est clean.
2.Pourtant 2, le script marche quand je ne mets que le seul script de connexion à la base. A moins que ce ne soit seulement un retour de "echo" qui se contente de m'afficher que je suis connectee alors que je ne le suis pas ?
Comment savoir : Je pense que c'est cela, parce que je n'ai pas de message d'erreur, et si j'etais passee par la base sur le serveur, j'aurais un message d'erreur, et le serveur en aurait trace.
3.Le fait que la page d'apres traitement php s'affiche me dit sans doute que l'adresse que j'ai mise pour le fichier de traitement php est bonne : <form action="../php/test.php" method="post">

Pour trouver le probleme, je me suis donc concentree sur la connexion (CONNECT), la selection (SELECT), et l'insertion (INSERT). ET j'ai cru qu'en etant methodique, j'allais y arriver.
Mais je n'ai pas reussi à trouver l'(es) erreur(s), ou ce qui manque.

Pouvez-vous m'aider, me donner une piste, ou carrement me dire la solution, car je suis epuisee maintenant et en plus cela m'aiderait de trouver vite !
Je vous remercie !

A part cela, j'ai aussi deux autres preoccupations :

1 ere question : je ne voudrais pas que le visiteur soit obligé de remplir tous les champs du formulaire. Je l'ai fait comme  ça parce que je n'ai trouve que des scripts avec champs obligatoires expliques dans les tutos, mais je voudrais que certains champs soient obligatoires et d'autres pas : est-ce que je peux supprimer les isset et les empty des champs que le visiteur peut ne pas compléter. Je suppose que oui, mais j'hesite.

2 eme question : Il y aura trois types d'utilisateurs : A,B, et C.
En fait, je voudrais que "action" (dans <form action="../php/test.php" method="post">) dans la page de formulaire ( qui est aussi ma page d'accueil index.html), ait une condition qui dispatche les utilisateurs vers 3 pages differentes , tout en conservant les données dejà entrees par l'utilisateur.
Trois pages spécifique a chaque categorie d'utilisateurs: indexA.html, indexB.html, et indexC.html, qui auraient chacune, a leur tour, une "action" (dans leur propre  code <form action="../php/test.php" method="post"> ), et que l'utilisateur validerait.
En fait l'ideal, ce serait que l'utilisateur ne s'aperçoive pas qu'il a change de page, de index. html vers indexA.html (s'il est utilisateur A par exemple).
Donc cette deuxieme question, c'est :<form action="../php/test.php" method="post">)
- Comment ajouter une condition à trois choix( j'insiste : trois ! : A,B, et C),
à l'instruction action ="../php/test.php" dans <form action="../php/test.php" method="post">)
- Comment conserver les données dejà entrées dans les formulaires de la page par l'utilisateur.

Ensuite, évidemment, il y aura le retour depuis le serveur des infos par email à l'utilisateur, et à moi.

Qu'en pensez-vous ?
Cela est-il possible ?
Vais-je y arriver ?

Mes explications sont elles utilisables !
Hum ! Hum !

Merci a tous !
a bientot
jnspev



//code sur la page index.html

<form action="../php/test.php" method="post">

// demande
<textarea type="VARCHAR"  name="demande" cols="52" rows="6">demande</textarea>

// accord
<input name="accord" value="OUI" type="CHECKBOX"> OUI</font>
<input name="accord" value="NON" type="CHECKBOX"> NON</font>

// etat civil
<input size="40" name="nom" type="VARCHAR">nom
<input size="40" name="prenom" type="VARCHAR">prenom

// code
<input name="code_A" value="20" type="radio">A
<input name="code_B" value="50" type="radio">B
<input name="code_C" value="100" type="radio">C

duree
<input name="duree" value="10" type="radio">10
<input name="duree" value="20" type="radio">20
<input name="duree" value="50" type="radio">50
<input name="duree" value="100" type="radio">100

event
<input name="event" value="OUI" type="CHECKBOX">OUI
<input name="event" value="NON" type="CHECKBOX">NON

validation
<input  type="submit" value="VALIDER">
<input  type="reset" value="ANNULER">

code sur la page test.php :

<?php
// On commence par récupérer les champs
if(isset($_POST['creation_date']))      $creation_date=$_POST['creation_date'];
else      $creation_date="";

if(isset($_POST['date']))      $date=$_POST['date'];
else      $date="";

if(isset($_POST['update_date']))      $update_date=$_POST['update_date'];
else      $update_date="";

if(isset($_POST['demande']))      $demande=$_POST['demande'];
else      $demande="";

if(isset($_POST['accord']))      $accord=$_POST['accord'];
else      $accord="";

if(isset($_POST['nom']))      $nom=$_POST['nom'];
else      $nom="";

if(isset($_POST['prenom']))      $prenom=$_POST['prenom'];
else      $prenom="";

if(isset($_POST['code_A']))      $code_A=$_POST['code_A'];
else      $code_A="";

if(isset($_POST['code_B']))      $code_B=$_POST['code_B'];
else      $code_B="";

if(isset($_POST['code_C']))      $code_C=$_POST['code_C'];
else      $code_C="";


if(isset($_POST['adresse']))      $adresse=$_POST['adresse'];
else      $adresse="";

if(isset($_POST['codepostal']))      $codepostal=$_POST['codepostal'];
else      $codepostal="";

if(isset($_POST['ville']))      $ville=$_POST['ville'];
else      $ville="";

if(isset($_POST['telephone']))      $telephone=$_POST['telephone'];
else      $telephone="";

if(isset($_POST['telephone_p']))      $telephone_p=$_POST['telephone_p'];
else      $telephone_p="";

if(isset($_POST['email']))      $email=$_POST['email'];
else      $email="";

if(isset($_POST['siret']))      $siret=$_POST['siret'];
else      $siret="";

if(isset($_POST['duree']))      $duree=$_POST['duree'];
else      $duree="";

if(isset($_POST['event']))      $event=$_POST['event'];
else      event="";



// On vérifie si les champs sont vides
if(empty($creation_date) OR empty($date) OR empty($update_date) OR empty($demande) OR empty($accord) OR empty($nom) OR empty($prenom) OR empty($adresse) OR empty($codepostal) OR empty($ville) OR empty($telephone) OR empty($telephone_P) OR empty($email) OR empty($siret) OR empty($duree) OR empty($event) OR empty($code_A) OR empty($code_B)) OR empty($code_C);
    {
    echo '<font color="red">Vous devez remplir tous les champs !</font>';
    }

// Aucun champ n'est vide, on peut enregistrer dans la table

else     
    {
   
// connexion à la base
$link = mysql_connect('localhost','root','password');
if (!$link) {
    die('Could not connect to MySQL: ' . mysql_error());
}
echo 'vous etes connecte'; mysql_close($link);

// sélection de la base 
mysql_select_db('bazeu',$db)  or die('Erreur de selection '.mysql_error());
   

// on écrit la requête sql
$sql = "INSERT INTO tableue_tbl(id, creation_date, date, update_date, nom, prenom, adresse, codepostal, ville, telephone, telephone_p, email, siret, demande, accord, duree, event, code_A, code_B, code_C, VALUES('','$creation_date','$date','$update_date','$nom','$prenom','$adresse','$codepostal','$ville','$telephone','$telephone_p','$email','$siret','$demande','$accord','$duree','$event','$code_A','$code_B','$code_C')";
   
// on insère les informations du formulaire dans la table
    mysql_query($sql);
    die('Erreur SQL !'.$sql.'<br>'.mysql_error());

    // on affiche le résultats pour le visiteur
    echo 'Vous avez depose cette demande : <br>htmlspecialchars($_POST['demande'])';

    mysql_close();  // on ferme la connexion
    }
?>

Pied de page des forums

Propulsé par FluxBB