8791 sujets

Développement web côté serveur, CMS

Bonjour,

J'ai créé un formulaire qui écrit dans une bdd et qui fait appel à un autre fichier php. Tout fonctionne mais je voudrais que la phrase de confirmation s'affiche sous le formulaire et non dans une autre fenêtre.
Merci pour votre aide
Voici le code de mon form et de mon fichier action :

FORMULAIRE

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>sans titre 1</title>
</head>

<body>
<form method="post" action="ecriture_location.php" >

<p>
<input type="radio" name="ville" value="Saint-Aygulf" /> Saint-Aygulf
<input type="radio" name="ville" value="Saint-Raphael" /> Saint-Raphael
<input type="radio" name="ville" value="Cannes" /> Cannes
</p>
<p>
Dates<br />
<select name="dates">
<option value="du 02 au 09 juillet">du 02 au 09 juillet</option>
<option value="du 09 au 16 juillet" selected="selected">du 09 au 16 juillet</option>
<option value="du 16 au 23 juillet">du 16 au 23 juillet</option>
</select>
</p>
<p>
Prix :<br />
<input type="text" name="prix" value="" />

<p>
Quel type de location recherchez vous ?<br />
<input type="checkbox" name="type" value="studio" /> Studio
<input type="checkbox" name="type" value="2 pièces" /> 2 pièces
</p>
<p>
<input type="submit" value="Envoyer" />
<input type="reset" value="Annuler" />
</p>
</form>
</body>

</html>

FICHIER ACTION :

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

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

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

try//connexion à la base
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=location', 'root', '', $pdo_options);

// On ajoute une entrée dans la table jeux_video
$req = $bdd->prepare('INSERT INTO studio(ville, dates, prix) VALUES(:ville, :dates, Smiley langue rix)');
$req->execute(array(
'ville' => $ville,
'dates' => $dates,
'prix' => $prix
));

echo 'La période de location est bien ajoutée dans la table !';//affichage du résultat
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
Bonjour,

Si tu veux rester sur la même fenêtre, tu devras passer par AJAX afin d'exécuter une requête HTTP qui appellera ta page action.php.

Toutefois, certaines personnes désactivent JavaScript sur leur navigateur, par conséquent, l'utilisation d'AJAX est impossible dans ce cas là.

Que faire ?

Selon moi, il faut donc effectuer deux actions différentes.

Pour ceux qui auront JavaScript désactivé sur leur navigateur, ta page d'action sera celle appelante. Tu récupères les valeurs contenues dans ton formulaire puis tu affiches ton message sous le formulaire en conséquences (éventuellement en remplissant le formulaire avec les valeurs envoyées si jamais il y avait un problème, que l'utilisateur n'ait pas à tout retaper).

Pour ceux qui auront JavaScript d'activé, tu interceptes le clic, bloque l'appel de la requête HTTP, en créé une nouvelle appelée avec AJAX qui appellera le fichier php que tu nous as montré et affichera son contenu sous le formulaire =°

Je penses que tu sauras faire la première partie, si jamais tu as besoin d'explications pour AJAX, tu peux demander =° (Je n'ai pas de lien sous la main, mais quelqu'un aura bien quelque chose à proposer =° Au pire, on s'arrangera...)
Bonjour,

Pourquoi ne pas inclure ton fichier php dans la page contenant ton formulaire ?

Tu pourras ainsi tester la soumission du formulaire avec la fonction isset() comme tu l'as déjà fait, et afficher le message sous ton formulaire.

Tu peux également utiliser une variable comme témoin d'erreur en lui donnant false comme valeur en cas d'erreur.

Par exemple, sous ton formulaire :

<?php 
if ($temoin == true) 
{
echo 'La période de location est bien ajoutée dans la table !';
}
?>



J'espère que ça te donne une petite idée de ce que tu peux faire.

Bonne journée Smiley smile