[PHP]Formulaire d'inscription

Voila pour que les gens s’inscrive à un évènement sur le site que je crée, je creer une page spécial : inscription.php

cette page sera ouverte en pop up, il y a un formulaire comme ceci :

<form action="merci.html" method="post">
<p><br /><br />
Nom:<input type="text" name="nom" /> <br />
Prenom:<input type="text" name="prenom" /> <br />
Age:<input type="text" name="age" /> <br />
Promo:<input type="text" name="promo" /><br />
Etablissement:<input type="text" name="ecole" /><br />
<input type="submit" value="Valider" /><br />
</form>

merci.html > Page ou il y a une petite phrase de remerciement pour s’etre inscrit.

Ensuite je procede à une verification d’existance des variable comme ceci :

<?php 
	if(isset($_POST['nom']) 
	AND isset($_POST['prenom'])  . . . etc 

Puis je verifie ces meme variable avec if($variable!=NULL) pour éviter d’ecrire “rien” dans la bdd.

Quand tous les test sont OK , je me connecte a la base et j’enregistre les informations receuilli :

mysql_connect("localhost", "******", "*****"); 

mysql_select_db("slatergautest_db"); /
  	
$nom = htmlentities($_POST['nom']); // Avec cette fonction > on enregistre pas de code html ( evite de se faire hacked . . .) 
$prenom = htmlentities($_POST['prenom']);
$age = htmlentities($_POST['age']);
$promo = htmlentities($_POST['promo']);
$ecole = htmlentities($_POST['ecole']);
//On enregistre les données
mysql_query("INSERT INTO inscription VALUES('', '$nom', '$prenom','$age,'$promo','$ecole') ");
//on quite mysql
mysql_close();


Mais ca ne marche pas ( quand je vais dans ma base de donné, rien ne s’est inscris) pourquoi ? je pense que même si j’ai les bonne insctruction , je dois pas les executer au bon moment ou peut etre que ce n’est pas comme ca qu’on s’y prend avec un formulaire.
Merci de m’éclairer sur mon probleme !! :jap:

Un conseil, test ta requette dans mysql directement
puis ton test !=NULL, je ne suis pas sur que sa soit bon. Je crois qu’on fait ça en js en php traditionnellement c’est :

if(empty($_POST['valeur']))
{
// traitement
}

Il manque les parenthèses di if

if(isset($_POST['nom'])
AND isset($_POST['prenom']) 

null marche aussi en php.

Sinon :

mysql_query(“INSERT INTO inscription VALUES(’’, '”
. mysql_real_escape_string($nom) . "’, ‘$prenom’,’$age,’$promo’,’$ecole’) ");

(etc, j’ai la flemme de le faire sur tous les champs).

Faut faire ca pour chaque variable ? ? ( avec les points avt / apres > concaténation c’est ca ? )

Dans le principe , la démarche que je fais est censé marcher donc ?

Comment on fait pour que dans un formulaire on puisse récupéré du text et des chiffre ( en même temps ) par exemple "1A"

Quelles option faut il choisir dans la BDD pour que ca marche ?
Est ce que dans un switch on peut avoir :

case 1A
mysql . . . etc

case 1A ca passe ?

et si tu faisais <form action=“submit.php”>
et tu fais tes vérifs et enregistrements dans ce submit.php
il ne te reste plus qu’a faire a la fin de ce fichier sois une redirection sois un affichage pour ton merci :wink:

Finalement j’ai fai le formulaire sur inscription.php , et l’enregistrement sur merci.php ( plus logique , vu que j’envoi le formulaire sur merci.php )

Par contre, dans mon formulaire, pour choisir la valeur d’une variable $promo , j’ai fais une liste déroulante comme ceci :


Prenom :  <input type="text" name="prenom" /><br />
. . . 
<select name="choix">
    <option value="1">1A</option>
	<option value="2">2A</option>
    <option value="3">3A</option>
    <option value="4">4A</option>
	<option value="5">5A</option>
	<option value="6">Ancien Eleve</option>

Ensuite , sur merci.php , la ou j’enregistre les information sur la base de donné, j’ai fais un switch pour savoir quoi enregistrer, mais il ne marche pas, il n’y a pas d’erreur MAIS quand je vais dans la base de donné , j’ai tjs la valeur “1” inscrite dans le champ promo . .
Mon code n’est surement pas bon, c’est le suivant :

$choix =$_POST['choix'];
  Switch($choix)
  	{
  	case 1:
  	mysql_query("INSERT INTO inscript VALUES('', '$nom', '$prenom','1','$ecole')");
  	break;
  	case 2:
  	mysql_query("INSERT INTO inscript VALUES('', '$nom', '$prenom','2','$ecole')");
  	break;
  	case 3:
  	mysql_query("INSERT INTO inscript VALUES('', '$nom', '$prenom','3','$ecole')");
  	break;
  	case 4:
  	mysql_query("INSERT INTO inscript VALUES('', '$nom', '$prenom','4','$ecole')");
  	break;
  	case 5:
  	mysql_query("INSERT INTO inscript VALUES('', '$nom', '$prenom','5','$ecole')");
  	break;
  	case 6:
  	mysql_query("INSERT INTO inscript VALUES('', '$nom', '$prenom','Ancien Eleve','$ecole')");
  	break

Voila

mysql_query(“INSERT INTO inscript VALUES(’’, ‘$nom’, ‘$prenom’,‘1’,’$ecole’)”);

devrait plutôt être écrit
mysql_query(“INSERT INTO inscript(nom,prenom,ecole) VALUES(’’, ‘$nom’, ‘$prenom’,‘1’,’$ecole’)”);

les 1ères parenthèses indiquent les champs de la table à renseigner, les 2èmes parenthèses les valeurs.

pour la vérification des formulaires j’utilise la suite Zapatec
simple et efficace.
http://www.zapatec.com/website/main/products/forms/demo.jsp

Et surtout c’est faux :

mysql_query(“INSERT INTO inscript(nom,prenom,ecole) VALUES(’’, ‘$nom’, ‘$prenom’,‘1’,’$ecole’)”);

Tout à fait : il faut le faire, sinon tu risque des injections SQL. Sinon, tu peux utiliser sprintf comme solution d’appoint :

$query = sprintf('INSERT INTO inscript (nom, prenom, choix, ecole) VALUES(\'%s\', \'%s\', %d, \'%s\')', mysql_real_escape_string($nom), mysql_real_escape_string($prenom), 4, mysql_real_escape_string($ecole));