Insert dans une base sql avec un formulaire php

Eléphanteau du PHP | 19 Messages

16 déc. 2014, 17:06

Bonjour,

Je souhaite insérer des variables dans une base sql mais rien ne s'inscrit, l'id s'incrémente mais les autres cases sont vides (à part la date...)

Voici mon fichier Preview.php :
<?php

error_reporting(0);
$_SESSION['nom'] = $_POST['nom'];
$_SESSION['adresse'] = $_POST['adresse'];
$_SESSION['cp'] = $_POST['cp'];
$_SESSION['localite'] = $_POST['localite'];
$_SESSION['no'] = $_POST['no'];
$_SESSION['tel'] = $_POST['tel'];
$_SESSION['mail'] = $_POST['mail'];
$_SESSION['inscription'] = $_POST['inscription'];
$_SESSION['choix1'] = $_POST['choix1'];
$_SESSION['choix2'] = $_POST['choix2'];
//$_SESSION['choix3'] = $_POST['choix3'];
$_SESSION['radio1'] = $_POST['radio1'];
//$_SESSION['radio2'] = $_POST['radio2'];
$_SESSION['radio3'] = $_POST['radio3'];

//Récupérer variable pour prévisualiser :



if($_POST["post"]=="Previsualiser"){

    $verif='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,5}$#';  
	$nom=preg_replace('#(<|>)#', '-', $_SESSION['nom']);  
    $nom=str_replace('"', "'",$nom);  
    $nom=str_replace('&', 'et',$nom);
    $adresse=preg_replace('#(<|>)#', '-', $_SESSION['adresse']);  
    $adresse=str_replace('"', "'",$adresse);  
    $adresse=str_replace('&', 'et',$adresse);
	$cp=preg_replace('#(<|>)#', '-', $_SESSION['cp']);  
    $cp=str_replace('"', "'",$cp);  
    $cp=str_replace('&', 'et',$cp);
    $localite=preg_replace('#(<|>)#', '-', $_SESSION['localite']);  
    $localite=str_replace('"', "'",$localite);  
    $localite=str_replace('&', 'et',$localite);
    $no=preg_replace('#(<|>)#', '-', $_SESSION['no']);  
    $no=str_replace('"', "'",$no);  
    $no=str_replace('&', 'et',$no); 
    $tel=preg_replace('#(<|>)#', '-', $_SESSION['tel']);  
    $tel=str_replace('"', "'",$tel);  
    $tel=str_replace('&', 'et',$tel);
    $mail=preg_replace('#(<|>)#', '-', $_SESSION['mail']);  
    $mail=str_replace('"', "'",$mail);  
    $mail=str_replace('&', 'et',$mail);
    $mail=stripslashes(htmlentities($_SESSION['mail']));
	$nom=stripslashes(htmlspecialchars($nom));
    $adresse=stripslashes(htmlspecialchars($adresse));
    $cp=stripslashes(htmlspecialchars($cp)); 
    $localite=stripslashes(htmlspecialchars($localite));
    $no=stripslashes(htmlspecialchars($no)); 
	$tel=stripslashes(htmlspecialchars($tel)); 
    $envoi=htmlentities($_SESSION['envoi']);  
    $previsualiser=htmlentities($_SESSION['previsualiser']);  
	$nom=trim($nom);
    $mail=trim($mail);  
    $adresse=trim($adresse);
    $cp=trim($cp); 
    $localite=trim($localite);  	
    $tel=trim($tel); 
    $no=trim($no); 


	echo'<h2>Vos coordonnées personnelles :<br/></h2>
	     <h3>Dr '.$_SESSION['nom'].'<br/>
         '.$_SESSION['adresse'].'&nbsp;&nbsp;&nbsp;'.$_SESSION['cp'].'&nbsp;'.$_SESSION['localite'].'<br/>
	     Numéro d\'ordre : '.$_SESSION['no'].'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</strong>Téléphone :'.$_SESSION['tel'].'<br/>
         Email : '.$_SESSION['mail'].'<br/></h3>';
		 
echo '<br />';
	if ($_SESSION['inscription']=="Oui"){
		$somme5=22;
    echo '<h2>Vous avez choisis de vous inscrire à la Liègeoise et payez donc 22€ de cotisation</h3><br/>';}
	else {
		$somme5=0;
	echo '<h2>Vous vous êtes déjà inscrits à la Liègeoise</h3>';}
echo '<h2>Vous avez choisi les activités suivantes :</h2>';	
echo '<h3><u>Jeudi 5 Juin 2014 :</u><i>"1.Bien vacciner? Bien protéger? Sans danger?" par le Professeur Laurent Gillet de la Faculté de Médecine Vétérinaire de Liège .</i></h3>';
	if ($_POST['choix1']=="Cf seule"){
		$somme1=20;
		echo '<h3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Je participe uniquement à la conférence, j\'ajoute 20€ à ma somme totale</h3><br/>';}
		elseif ($_POST['choix1']=="Cf + R"){
		$somme1=20;
		echo '<h3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Je participe uniquement à la conférence, j\'ajoute 20€ à ma somme totale)</h3><br/>';}
		else {
		echo '<h3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Je ne participe pas à cette conférence</h3><br/>';
		$somme1=0;}
		
echo '<h3><u>Jeudi 11 décembre 2014 : </u><i>"Les anesthésies qui font peur..." par le Dr Dr Charlotte Sandersen de la Faculté Vétérinaire de Liège.</i></h3>';
	if ($_POST['choix2']=="Cf seule"){
		$somme2=20;
		echo '<h3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Je participe uniquement à la conférence, j\'ajoute 20€ à ma somme totale</h3><br/>';}
		elseif ($_POST['choix2']=="Cf + R"){
		$somme2=20;
		echo '<h3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Je participe à la conférence et au repas, j\'ajoute 20€ à ma somme totale </h3><br/>';}
		else {
		echo '<h3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Je ne participe pas à cette conférence</h3><br/>';
		$somme2=0;}
		
echo '<h3><u>Samedi 14 Juin 2014 :</u><i>"L\'œil à portée de main :  Ateliers pratiques en ophtalmologie vétérinaire, examen clinique et chirurgies courantes."  par le Dr Anne-Marie Verbruggen</i></h3> ';
	if ($_POST['radio1']=="Oui"){
		$somme3=0;
		echo '<h3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Je m\'inscris à la journée conférence via le site formavet si possible ou je contacte le webmaster.</h3><br/>';}
		else {
		echo '<h3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Je ne participe pas à cette conférence</h3><br/>';
		$somme3=0;}

		
	if ($_POST['radio3']=="Oui"){
    echo '<h3>Je m\'inscris aux tables rondes, je serai recontacté(e) à ce sujet</h3><br/>';}
	else {
	echo '<h3>Je ne m\'inscris pas aux tables rondes</h3>';}
	
$sommetotale=$somme1+$somme2+$somme3+$somme4+$somme5;

  

	echo '<h3><font color=#009>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Je verse donc '.$sommetotale.'€ sur le compte de la Liégeoise BE90143060598732.</font></h3>';}

echo'
<form name="inscriptions" method="post" action="Validation.php" enctype="multipart/form-data"> 
<input type="submit" name="valider" value="Valider" />
</form>'; 
$_SESSION['sommetotale'] = $sommetotale;
echo $sql;
?>
Lui me donne bien toutes les variables mais au moment de valider pour insérer, c'est vide dans ma bdd...

Fichier Validation.php
<?php
 
 
$nom=$_SESSION['nom'];
$adresse=$_SESSION['adresse'];
$cp=$_SESSION['cp'];
$localite=$_SESSION['localite'];
$no=$_SESSION['no'];
$tel=$_SESSION['tel'];
$mail=$_SESSION['mail'];
$inscription=$_SESSION['inscription'];
$choix1=$_SESSION['choix1'];
$choix2=$_SESSION['choix2'];
//$choix3=$_SESSION['choix3'];
$radio1=$_SESSION['radio1'];
//$radio2=$_SESSION['radio2'];
$radio3=$_SESSION['radio3'];
$sommetotale=$_SESSION['sommetotale'];
 
include("fonctions.php");
 
if (isset($_POST['valider'])){
     
     
 date() de PHP
$today=date("y,m,d");
 
connectlaliegeoconf();
 
mysql_query("SET NAMES UTF8");
                     
$sql = 'INSERT INTO Inscriptions VALUES("","'.$nom.'","'.$adresse.'","'.$cp.'","'.$localite.'","'.$no.'","'.$tel.'","'.$mail.'","'.$inscription.'","'.$choix1.'","'.$choix2.'","'.$radio1.'","'.$radio2.'","'.$radio3.'","'.$today.'","'.$sommetotale.'")';
                     
 
mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
                     
 
mysql_close();
 
echo '<h3>Votre inscription a bien été prise en compte</h3><p>Vous allez recevoir un mail récapitulatif, si ce n\'est pas le cas, n\'hésitez pas à laisser un message dans la rubrique contact.</p><p><a href="index.php">Retour à la page d\'accueil</a></p>';
$objet='Inscriptions';
echo $sql;
$headers='De: Dr '.$nom."\r\n".'Adresse : '.$adresse."\r\n".'CP : '.$cp."\r\n".'Localite : '.$localite."\r\n".'Numéro d\'ordre : '.$no."\r\n".'Tel : '.$tel."\r\n".'Email : '.$mail."\r\n".'Inscription : '.$inscription."\r\n".'Soirée Conférence 1 : '.$choix1."\r\n".'Soirée Conférence 2 : '.$choix2."\r\n".$choix3."\r\n".'Journée Conférence 1: '.$radio1."\r\n".'Table de discussion : '.$radio3."\r\n".'Somme à payer : '.$sommetotale."\r\n"; 
mail($destinataire,$objet,$headers);
?>
<?php
ini_set('SMTP','smtp.live.com');
ini_set('sendmail_from', '$mail');
//Ecrivez votre adresse e-mail entre les guillemets 
$destinataires=$mail; 
$objets='Inscriptions aux conférences de la Liègeoise ASBL';
$header='Dr '.$nom."\r\n".'Adresse : '.$adresse.' '.$cp.' '.$localite."\r\n".'Numéro d\'ordre : '.$no."\r\n".'Tel : '.$tel."\r\n".'Email : '.$mail."\r\n\r\n".'Vous avez choisis de vous inscrire aux conférences suivantes :'."\r\n\r\n".'Soirée Conférence 1 : '.$choix1."\r\n".'Soirée Conférence 2 : '.$choix2."\r\n".'Journée Conférence 1: '.$radio1."\r\n".'Table de discussion : '.$radio3."\r\n".'Somme à payer : '.$sommetotale.'€ sur le compte de la Liégeoise '; 
mail($destinataires,$objets,$header);
}
?>
MErci à vous car je planche dessus depuis qq semaines, mais je ne travaille pas du tout dans ce domaine donc j'ai du mal à trouver du temps pour régler ce pb.

bonne journée!

Eléphant du PHP | 63 Messages

16 déc. 2014, 19:29

Fichier Validation.php
$sql = 'INSERT INTO Inscriptions VALUES("","'.$nom.'","'.$adresse.'","'.$cp.'","'.$localite.'","'.$no.'","'.$tel.'","'.$mail.'","'.$inscription.'","'.$choix1.'","'.$choix2.'","'.$radio1.'","'.$radio2.'","'.$radio3.'","'.$today.'","'.$sommetotale.'")';
un var_dump($sql); après cette ligne pourrait aider à comprendre. L'absence des champs pourrait être la source du problème. dans le style
$sql = 'INSERT INTO Inscriptions (id, nom, adresse,...) VALUES ("","'.$nom.'","'.$adresse.'",...)';

Eléphanteau du PHP | 19 Messages

18 déc. 2014, 17:51

Voilà ce que me met un var_dump($sql) :

string(88) "INSERT INTO Inscriptions VALUES("","","","","","","","","","","","","","","14,12,18","")"

MErci àvous

Eléphant du PHP | 63 Messages

18 déc. 2014, 20:13

Salut

J'imagine qu'un var_dump($_SESSION); indiquera que $_SESSION est vide. Il faut démarrer la session avec start_session(); au tout début de chacun des scripts utilisant $_SESSION.

Bonne chance

Eléphanteau du PHP | 19 Messages

19 déc. 2014, 17:34

J'ai un session_start(); dans les 2 fichiers au début du php....

Eléphant du PHP | 63 Messages

19 déc. 2014, 19:35

Bonjour

Je ne vois pas de session_start() dans les scripts postés ici. Si var_dump($_SESSION); au même endroit que le var_dump($sql); retourne un $_SESSION vide, alors tu as un problème de session. Tu peux te passer de session en poursuivant en POST avec tes champs en type hidden à la fin de "Preview.php"
<form name="inscriptions" method="post" action="Validation.php"> 
  <input type="submit" name="valider" value="Valider" />
  
  <input type="hidden" name="nom" value="<?php echo $nom; ?>" />
  <input type="hidden" name="adresse" value="<?php echo $adresse; ?>" />
  <input type="hidden" name="cp" value="<?php echo $cp; ?>" />
  <input type="hidden" name="localite" value="<?php echo $localite; ?>" />
  <input type="hidden" name="no" value="<?php echo $no; ?>" />
  <!-- ainsi que les autres champs à la suite -->
  
  <input type="hidden" name="sommetotale" value="<?php echo $sommetotale; ?>" />
</form>';
Et dans "Validation.php" tu peux récupérer tes informations avec $_POST et non plus avec $_SESSION.