Insertion des infos d'un formulaire dans BD

maryg07 Messages postés 4 Statut Membre -  
Darshu Messages postés 303 Statut Membre -
Bonjour,

Merci de votre précision car je ne suis encore experte; la preuve je sollicite votre aide !
Bon voyons un peu le problème desespérant dont je ne trouve pas la raison de son état.
J'ai une base "toto", une table "infos" (biensure les noms sont fictifs).
Un membre entre dans sa zone privée et là il doit remplir divers champs qui iront dans la table "infos".
Le problème : les données ne s'enregistrent pas dans ma table !
Et je despespère grave.
J'ai due louper quelque choses mais je n'arrive plus à y voir clair.
Plusieurs yeux seront les bienvenues.
A oui, autre chose, comme on peut le voir, il y a des listes à choix, des radios et des checkbox. Impossible de comprendre comment cela fonctionne vraiment malgré les tutoriaux.
Alors si quelqu'un consciencieux peut me dire si ce que j'ai fait c'est ok à ce sujet ou carrément me refaire le script juste pour que je visualise bien la différence cela serait super top. Je sais j'en demande un peu trop mais je n'ai pas le choix pour bien comprendre mes erreurs.

MERCI pour l'explication de reprendre le script en entier pour que je vois où se situe les modifications et que je puisse faire des comparaisons conctructibles et qui me permettront d'améliorer mes connaissances.
Ci-dessous le script :

<?php
session_start();
switch($_POST['action'])
{

// INSERTION DANS LA BASE
case "inserer":

// déclaration de quelques variables
require("conf.php3");

if (!isset($_SESSION['pseudo']))
{
die('Vous n\'êtes pas autorisez à acceder à cette page.');
}
//informations s'affichant automatiquement depuis ma table membre
//de plus ses informations devront se retrouver automatiquement dans ma table infos
$sql = connect_sql(); //Connection...
$pseudo_membre = $_SESSION['pseudo'];
$requete = mysql_query("SELECT * FROM membre WHERE `pseudo`='$pseudo_membre', `mail`='$mail'");
$var = mysql_fetch_array ($requete);
$id_membre = $var['id'];
$pseudo = $var['pseudo'];
$mail = $var['mail'];

//informations demandées aux membres et qui doivent s'inscrire dans ma table infos
$sexe = $_POST['sexe'];
$telfixe = $_POST['telfixe'];
$operatfixe = $_POST['operatfixe'];
$telmobil = $_POST['telmobil'];
$operatmobil = $_POST['operatmobil'];
$revenu = $_POST['revenu'];
$impot = $_POST['impot'];
$preoccupat = $_POST['preoccupat'];
$defisc = $_POST['defisc'];
$profession = $_POST['profession'];
$situatfamill = $_POST['situatfamill'];
$nbrenfant = $_POST['nbrenfant'];
$agemin = $_POST['agemin'];
$agemax = $_POST['agemax'];
$centrinteret = $_POST['centrinteret'];
$modpaye = $_POST['modpaye'];
$cptepaypal = $_POST['cptepaypal'];
$nombanque = $_POST['nombanque'];
$cdeguichet = $_POST['cdeguichet'];
$numercpte = $_POST['numercpte'];
$numercle = $_POST['numercle'];
$acceptcondit = $_POST['acceptcondit'];
$parrain = $_POST['parrain'];

$sql = "INSERT INTO " . $table . "(sexe, telfixe, operatfixe, telmobil, operatmobil, revenu, impot, preoccupat, defisc, profession, situatfamill, nbrenfant, agemin, agemax, centrinteret, modpaye, cptepaypal, nombanque, cdeguichet, numercpte, numercle, acceptcondit, parrain)
VALUES('" . $sexe . "','" . $telfixe . "','" . $operatfixe. "','" . $telmobil. "','" . $operatmobil. "','" . $revenu. "','" . $impot. "','" . $preoccupat. "','" . $defisc. "','" . $profession. "','" . $situatfamill. "','" . $nbrenfant. "','" . $agemin. "','" . $agemax. "','" . $centrinteret. "','" . $modpaye. "','" . $cptepaypal. "','" . $nombanque. "','" . $cdeguichet. "','" . $numercpte. "','" . $numercle. "','" . $acceptcondit. "','" . $parrain . "', NOW())";
$res = mysql_query($sql);

// déconnection avec MySQL
mysql_close();

break;

// AFFICHAGE FORMULAIRE HTML
default:
?>

<div id="conteneur">

<!-- DEBUT DU HEADER -->
<div id="header">
<div id="angle"></div>

<!-- tire du site -->
<h1>www.flashmarketing.fr</h1>

<!-- slogan -->
<p>Donnez une dynamique à votre objectif</p>

<!-- publicité 468*60 px -->
<img id="pub" src="bannieres/Banniclic01.gif" alt="flashmarketing" />

<!-- logo 100*100 px -->
<img id="logo" src="kit/cochon.jpg" alt="Logo flashMarketing" />

<!-- début du menu supérieur -->
<div id="menuhaut">

<a href="index.php">Accueil</a><!-- ligne à recopier pour ajout d'un lien -->
<a href="zone2006.php">Incription</a>
<a href="zonmembers.php">Membres</a>
<a href="vipmembers.php">V.I.P.</a>
<a href="zonannonceurs.php">Annonceurs</a>
<a href="condgener110106.php">Condition Générale</a>
<a href="faq110106.php">F.A.Q.</a>
<a href="mailto:administr@flashmarketing.fr">Contact</a>
<a href="https://www.superforum.fr/search/flashmarketing.superforum.fr">Forum</a>

</div>
<!-- fin du menu supérieur -->

</div>
<!-- FIN DU HEADER -->

<!--DEBUT DU MENU LATERAL GAUCHE -->
<div id="menugauche">

<h2>Menu</h2>

<!-- début d'une rubrique -->
<h3>Informations personnelles</h3><!-- titre de la rubrique -->
<a href="donneperso.php">Données personnelles</a><!-- ligne à recopier pour ajout d'un lien -->
<a href="gainsetsatistiq.php">Gains et statistiques</a>
<a href="versmtgain.php">Versement des gains</a>
<a href="laboutique.php">La boutique</a>
<a href="tarifcampg.php">Tarifs campagnes</a>

<!-- fin de la rubrique -->

<!-- début d'une rubrique -->
<h3>Membres</h3><!-- titre de la rubrique -->

<a href="clicsremuneres.php">Clics rémunérés</a>
<a href="inscriptremuner.php">Inscriptions rémunérées</a>
<a href="recherchremunere.php">Recherches rémunérées</a>
<a href="visionneuse.php">Visionneuse</a>
<a href="achatremunere.php">Achats rémunérées</a>
<a href="sondage.php">Sondage en cours</a>
<a href="parrainn.php">Parrainage</a>
<a href="listedesjeux.php">Jeux</a>
<a href="devenvip.php">Devenir V.I.P.</a>
<a href="achatcampag.php">Acheter une campagne</a>

<!-- fin de la rubrique -->

<!-- début d'une rubrique -->
<h3>Divers</h3><!-- titre de la rubrique -->
<a href="https://www.superforum.fr/search/flashmarketing.superforum.fr">Forum</a>
<a href="mailto:administr@flashmarketing.fr">Contact</a>
<a href="deconnexion.php">Déconnexion</a>
<!-- fin de la rubrique -->

<p id="signature">By FlashMarketing.fr <a href="http://www.flashmarketing.fr">FlashMarketing.fr</a> &copy;</p>
</div>
<!-- FIN DU MENU LATERAL GAUCHE -->

<!-- DEBUT DU CORPS DE LA PAGE -->
<div id="corps">

<!-- titre de la page -->
<h1>FlashMarketing.fr</h1>
<div align="center"><H3>Formulaire d'informations</H3></div>
<div align="center"></I></U><B><font color="#3366FF">Remplissez avec soin ce formulaire d’informations.<BR><br></font>
<font color="#FF6600">Il permettra de mieux cibler les emails et les sondages proposés.</P></font>
</div><div align="center"><font size="3" color=#009966><b>Vous pourrez le modifier à tout instant.</b></font></div><DIR>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<div align="center"><input name="pseudo" type="text" disabled="true" id="pseudo" value="<? echo $pseudo; ?>"><br>
<input name="mail" type="text" disabled="true" id="mail" value="<? echo $mail; ?>">
</div></P><br>
<P>Sexe :
<select name="sexe" id="sexe">
<option value="homme">Homme</option>
<option value="femme">Femme</option>
</select><br />

</P>
<P>Téléphone fixe :

<input name="telfixe" type="text"><br>
Opérateur fixe :
<input name="operatfixe" type="text"><br>
<br>
<P>Téléphone portable :
<input name="telmobil" type="text"><br>
Opérateur mobile :
<input name="operatmobil" type="text"><br>
<br>
<br>
Revenu annuel :
<input name="revenu" type="text"> Euros.<br>
Payez-vous des impôts :
<input type="radio" name="impot" value="oui" />Oui   
<input type="radio" name="impot" value="non" />Non

<br><br>Vos préoccupations :
<select name="preoccupat">
<option value="Retraite">Retraite</option>
<option value="Prévoyance">Prévoyance</option>
<option value="Plus de revenus">Plus de revenus</option>
<option value="Transmission">Transmission</option>
<option value="Achat d'un logement">Achat d'un logement</option>
<option value="Désendettement">Désendettement</option>
<option value="Autre">Autre</option>
</select>

</P>
<P>Acceptez-vous de recevoir <b><u>gratuitement</u></b> des conseils en défiscalisation :<br>
<input type="radio" name="defisc" value="oui" />Oui   
<input type="radio" name="defisc" value="non" />Non

</P>
<P>Votre activité professionnelle
<SELECT NAME="profession">
<OPTION SELECTED="PDG_directeur">PDG- directeur</option>
<OPTION VALUE="cadre_superieur">cadre supérieur</option>
<OPTION VALUE="cadre_moyen">cadre moyen</option>
<OPTION VALUE="activite_liberale">activité libérale</option>
<OPTION VALUE="commercant_artisan">commerçant – artisan</option>
<OPTION VALUE="ouvrier_qualifie">ouvrier qualifié</option>
<OPTION VALUE="ouvrier">ouvrier</option>
<OPTION VALUE="emplier_bureau">employé de bureau</option>
<OPTION VALUE="chomage">chômage</option>
<OPTION VALUE="retraite">retraite</option>
<OPTION VALUE="handicape">handicapé</option>
<OPTION VALUE="au_foyer">au foyer</option>
<OPTION VALUE="etudiant">étudiant</option>

</SELECT>
</P>
<P>Situation de famille :<br>
<input type="radio" name="situatfamill" value="celibataire" />Célibataire   
<input type="radio" name="situatfamill" value="Pacs" />Pacs   
<input type="radio" name="situatfamill" value="Marié" />Marié   
<input type="radio" name="situatfamill" value="Veuf" />Veuf   
<input type="radio" name="situatfamill" value="Divorcé" />Divorcé

<P>Nombre d’enfants :
<SELECT NAME="nbrenfant">
<OPTION VALUE="0">0</option>
<OPTION VALUE="1">1</option>
<OPTION VALUE="2">2</option>
<OPTION VALUE="3">3</option>
<OPTION VALUE="4">4</option>
<OPTION VALUE="5">5</option>
<OPTION VALUE="6">6</option>
<OPTION VALUE="7">7</option>
<OPTION VALUE="plus">plus</option>
</SELECT>
<P>Age du plus jeune :
<input name="agemin" type="text" id="agemin"> ans<br>
Age du plus âgé :
<input name="agemax" type="text" id="agemax"> ans<br>
<br>

<div align="center"><font face="Verdana" size="2" color=#339900><b>Sélectionnez vos centres d'intérêts</b></font></div> </P>
</B></I></FONT><FONT FACE="Verdana" SIZE=2>
<input type="checkbox" name="centrinteret" value="art_culture" />Arts et culture<br />
<input type="checkbox" name="centrinteret" value="auto_moto" />Auto-Moto<br />
<input type="checkbox" name="centrinteret" value="business_finance" />Business / finance<br />
<input type="checkbox" name="centrinteret" value="informatique_ordinateur" />Informatique / ordinateur<br />
<input type="checkbox" name="centrinteret" value="referencement_recherche" />Référencement / Recherche<br />
<input type="checkbox" name="centrinteret" value="education_litterature" />Education / littérature<br />
<input type="checkbox" name="centrinteret" value="jeux_argent" />Jeux d’argent<br />
<input type="checkbox" name="centrinteret" value="jeux_pc_internet" />Jeux PC et internet<br />
<input type="checkbox" name="centrinteret" value="jeux_concours" />Jeux et concours<br />
<input type="checkbox" name="centrinteret" value="maison_deco" />Maison /décoration<br />
<input type="checkbox" name="centrinteret" value="bricolage" />Bricolage<br />
<input type="checkbox" name="centrinteret" value="nature_jardin" />Nature /Jardin<br />
<input type="checkbox" name="centrinteret" value="animaux" />Animaux<br />
<input type="checkbox" name="centrinteret" value="actualite_media" />Actualité / média<br />
<input type="checkbox" name="centrinteret" value="music_concert" />Musique / concert<br />
<input type="checkbox" name="centrinteret" value="cinema_dvd" />Cinéma / DVD<br />
<input type="checkbox" name="centrinteret" value="sortie_voyage" />Sorties / voyages<br />
<input type="checkbox" name="centrinteret" value="technologie_science" />Technologie /science<br />
<input type="checkbox" name="centrinteret" value="societe_stars" />Société / stars<br />
<input type="checkbox" name="centrinteret" value="sport" />Sports<br />
<input type="checkbox" name="centrinteret" value="sante_medecine" />Santé / médecine<br />
<input type="checkbox" name="centrinteret" value="enfant_bebe" />Enfant / bébé<br />
<input type="checkbox" name="centrinteret" value="adolescence" />Adolescence<br />
<input type="checkbox" name="centrinteret" value="rencontre_forum_tchat" />Rencontre /forum/tchat<br />
<input type="checkbox" name="centrinteret" value="credit_banque_placement" />Crédit /banque/placement<br />
<input type="checkbox" name="centrinteret" value="immobilier_investissement" />Immobilier / investissement<br />
<input type="checkbox" name="centrinteret" value="assurance" />Assurances<br />
<input type="checkbox" name="centrinteret" value="mode_accessoires" />Mode et accessoires<br />
<input type="checkbox" name="centrinteret" value="esoterisme_voyance" />Esotérisme / voyance<br />
<input type="checkbox" name="centrinteret" value="annonces" />Les annonces<br />
<input type="checkbox" name="centrinteret" value="occasions" />Les occasions<br />
<input type="checkbox" name="centrinteret" value="promo_soldes" />Les promo / les soldes<br />
<input type="checkbox" name="centrinteret" value="television" />La télévision<br />
<input type="checkbox" name="centrinteret" value="photographie" />la photographie<br />
<input type="checkbox" name="centrinteret" value="shopping" />Le shopping<br />
<input type="checkbox" name="centrinteret" value="charme_adulte" />Charme-adulte<br />
<br>
<br>
</FONT><font color=NAVY><B><FONT FACE="Arial" SIZE=2><P><div align="center">Versement de vos gains :</div> </P>
</B></FONT><FONT FACE="Verdana" SIZE=2><P>Sélectionnez votre mode de payment
<SELECT NAME="modpaye">
<OPTION VALUE="paypal">Paypal</option>
<OPTION VALUE="virement_bancaire">Virement bancaire</option>
</SELECT>
<br>
<P>Numéro du compte (ID):
<input name="idpaypal" type="text">

</P>

<B><P>OU </P></font>
</B></FONT><FONT FACE="Arial" SIZE=1><P ALIGN="CENTER"></P>

</FONT><B><FONT FACE="Arial" SIZE=2 COLOR="#008080"><u>Votre RIB</u> : <br>
Nom de votre banque :
<input name="nombanque" type="text">
<br>Code guichet :
<input name="cdeguichet" type="text">
<br>Numéro de compte :
<input name="numercpte" type="text">
<br>Numéro clé :
<input name="numercle" type="text">
<br><br>

<P></font>
<input type="checkbox" name="acceptcondit">J'accepte les </FONT><B><FONT FACE="Verdana" SIZE=1 COLOR="#808000">
<a href="condgener110106.php" target="_blank">Conditions générales</a>
</script></B></FONT><FONT FACE="Verdana" SIZE=1> </P>
<br>

<FONT SIZE=1 COLOR=NAVY><P> Votre parrain :
<input name="parrain" type="text">

<BR>
(si vous n’en avez pas, nous vous en octroierons un automatiquement)</P>

<div align="center"><br><input type="submit" name="Submit" value="Mettre à jour">
</div>
</form>

<br><br><br><br>

<?
break;
}
?>

3 réponses

Darshu Messages postés 303 Statut Membre 64
 
Salut.

Plusieurs erreurs : tu mets des echo $pseudo alors que $pseudo n'est pas forcément définit, vu que tu fais un switch ... Ensuite, l'action de ton formulaire est la page elle même. Tu ne renseignes JAMAIS la variable action, donc tu n'es jamais dans le mode "inserer". Mets tout simplement <FORM NAME="..." METHOD="POST" ACTION="?action=inserer">

Sinon ton code est valide, valable même, mais assez lourd par endroits et avec des trucs inutiles je trouve ... Une dernière chose, dans ta requête SQL tu auras certainement une erreur car tu mets une valeur de plus que ce que tu précises (tu as mis NOW() qui ne correspond à aucun champ renseigné juste avant).

Bonne continuation et bon courage en tout cas.
0
maryg07 Messages postés 4 Statut Membre 1
 
Tu va me prendre peut-être pour ignare mais e n'ai pas tout compris.
Je m'explique :
pour ceci :
echo $pseudo alors que $pseudo n'est pas forcément définit
==> comme je membre est en session, je pensais pouvoir récuperer son pseudo.
pour ceci :l'action de ton formulaire est la page elle même
==>C'est ainsi qu'est présenté un script que j'ai trouvé sur le net (un totoriaux), j'ai donc bêtement tenté de l'adapté à ce que j'ai.
Pus concernant :< FORM NAME="..." METHOD="POST" ACTION="?action=inserer">
==> Le nom (Name) doit t-il correspondre à quelque chose de précis ?
Pour le reste, se serait sympas de m'expliquer ce qui est lourd pour que je puisse corriger.
Encore merci pour cette réponse.
0
Darshu Messages postés 303 Statut Membre 64
 
Alors réponse point par point :

- si tu es dans le cas "inserer" tu définis bien pseudo, je suis d'accord. Mais le break signifie que tu ne rentres pas dans le case suivant du switch. Donc, dans tous les autres cas (c'est-à-dire par défaut pour ce qui te concerne), $pseudo n'a jamais été défini ... Par contre, ce que tu peux tout à fait faire si tu es en session, c'est lors de l'identification faire $_SESSION['pseudo'] = ta_valeur; puis dans n'importe qu'elle page où il y a session_start(), alors la variable $_SESSION['pseudo'] sera conue .... mais $pseudo lui n'a aucun sens dès lors que tu ne le définis pas dans la page qui doit l'utiliser.

- les tutoriaux sont bien, mais en voulant les adapater on fait parfois des grosses erreurs si on a pas parfaitement saisi le fonctionnement. Dans ton cas, l'action du formulaire était la page elle-même, mais sans définir de variable action ... Donc tu appellais toujours dans le même cas, d'où l'absence d'insertion des données !

- le nom NAME ne correspond à rien de précis, c'est TOI qui le fixe pour identifier ton formulaire. Quelques règles de base tout de même : même si ils sont sur des pages différentes, ne JAMAIS donner le même nom à deux formulaires différents, c'est un coup à se mélanger les pinceaux comme pas possible. Autre chose, NAME te permet de référer à ton formulaire via JavaScript avec document.nom_formulaire.nom_element.value (note que value est un exemple et peut tout aussi bien être length, size, checked ou n'importe quoi d'autre encore). Ainsi, si tu as
<FORM NAME="toto"><INPUT TYPE="Text" NAME="prenom" Value="Bidule">

pour récupérer la valeur du champ de texte dans ta page, si c'est avant d'envoyer sur submit tu peux faire document.toto.prenom.value et si c'est après, la variable $_POST['prenom'] est renseignée.

- enfin pour le code "lourd", c'est de vouloir appeller la même page. C'est tellement plus clair par la suite (si dans 3 semaines faut remodifier complètement la source par exemple) d'avoir une page formulaire.html qui a pour action la page traitement.php, cette page se chargeant de faire la mise à jour puis de rediriger vers une autre page par exemple (avec header(), include() ou un simple lien après un message de confirmation d'insertion des données ou d'erreur le cas échéant). Si tu as de nombreux formulaires, soit tu a des pages genre formulaire1.html avec traitement1.php, formulaire2.html avec traitement2.php ou alors une autre façon de faire c'est formulaireTruc.html et traitementTruc.php, formulaireBidule.html et traitementBidule.php et ainsi de suite.

Voila, j'espère avoir été assez clair et avoir pu t'aider, bon courage.
0