Bonjour à vous tous,
Premier problème : Dans le cadre de l'implementation d'un formulaire je souhaite utiliser les propriété de session() afin de retenir les variable rentré par mon utilisateur dans le cas où tout le formulaire n'aurait pas été rempli.
Dans le première partie de mon code je tente d'intégrer les diverses valeurs des variables à session() puis dans la deuxième je m'emploie à mettre ces fameuses variables dans les champs adaptés dans le cas ou il y aurait un oubli de la part de l'utilisateur.
Problème : après des tests grâce à des echo, il n'y a, à priori, rien de stocker dans les variables de sessions...
Deuxième problème, il se situe au niveau de mon header, je sais que l header nécessite des condition spécifique, mais je pensait que dans mon cas ça fonctionnerait. et j'ai droit à l'erreur : Warning: Cannot modify header information - headers already sent ....
Voici mon code :
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
</head>
<body>
<?php
$error = array("",0,0,0,0,0,0,0,0); //création d'un tableau qui situera les erreurs : 0 : pas d'erreurs, 1 : champ vide
$tab1 = array("surname", "name", "adress", "postcode", "city", "country", "email", "phone" ); //tableau contenant le nom des variables
$tab2 = array("First name", "Last name", "Adress", "Postcode", "City", "Country", "eMail", "Phone" ); //tableau contenant le nom des variables que l'on affichera à l'utilisateur
if(isset($_POST['ok'])) //si on clique sur le bouton submit : alors executer le code
{
for($i=0; $i<count($tab1); $i++) //boucle pour traiter les champs un à un
{
eval('$temp = $_POST["'.$tab1[$i].'"];'); //regle le prob de la variable globale
eval('$session = $_SESSION['.$tab1[$i].'];');
$session=$temp; //insertion dans la session des variables avec leur valeurs
if ($temp == "" ) //affichage des Champs non remplits
{
$error[$i+1]=1;
$error[0].=($error[0]!="" )?', '.$tab2[$i].'':'Error with : '.$tab2[$i].'';
}
}
if($error[0]=="" ) //Si tout les champs sont remplis alors on va les insérer à la database
{
$connection = mysql_connect("*", "*", "*" ) or die('Erreur de connexion '.mysql_error());
mysql_select_db ("*", $connection);
$sql = "INSERT INTO user (id_user,surname,name,adress,postcode,city,country,email,phone)
VALUES('','$_POST[surname]','$_POST[name]','$_POST[adress]','$_POST[poscode]','$_POST[city]','$_POST[country]','$_POST[email]','$_POST[phone]')";
$req = mysql_query($sql);
$sql = "SELECT id_user FROM user WHERE surname='$_POST[name]'"; //ici on récupère l'id_user afin de le transmettre à la page suivante
$req = mysql($sql);
$id = mysql_insert_id();
header('location: success.php?id='.$id); //on demande d'aller à la page suivante
}
}
?>
<form method="post" action="booking.php"> //creation du formulaire
<div id="error" style="color:red;visibility: <?php echo(($error[0]!="" )?"visible":"hidden" ); ?>">
<?php if($error[0]!="" ) echo $error[0]; ?>
</div> //ce div sert à caché le texte d'erreur, et de l'afficher qu'au refresh de la page lorsque l'on constate des champs vides
<?php
for($i=0; $i<count($tab1); $i++)
{
echo $tab2[$i];
echo " : ";
$tmp = isset($session)? $session : ''; //opérateur ternaire : si il y a eu une variable enregistré alors on va l'insérer dans $tmp sinon insérer du vide.
echo "<input type =\"text\" name=\"".$tab1[$i]."\" value=\"".$tmp."\"/>"; //affichage de l'imput avec à l'interieur ou rien, ou la variable enregistré dans la session (dépendant le l'opérateur ternaire précédent)
echo ($error[$i+1]==1)? "<font color=red>*</font>":""; //affichage d'un étoile rouge à droite du champ vide.
echo '<br/>';
}
echo "<input type=\"submit\" value=\"Send\" name=\"ok\"/>"; //bouton submit
?>
</form>
</body>
</html>
Merci de votre aide !