Aller au contenu

Modification d'une page php


Sujets conseillés

Posté (modifié)

Bonjour,

Je suis plus que débutante en php et il m'a fallu plus d'une semaine (et l'aide d'un ami qui m'a corrigé certaines erreurs) pour arriver à écrire une page php qui fonctionne et récupère les données d'un formulaire (avec certains champs obligatoires et d'autres facultatifs) et les faire s'insérer dans ma BDD...

Evidemment, ce script renvoie un message après la validation du formulaire : soit il indique les champs manquants, soit il confirme que tout est OK.

Maintenant, je voudrais le modifier et faire en sorte qu'au lieu du message confirmant que tout est ok délivré par <?php echo $msg_ok;?>, je voudrais qu'un lien soit fait vers une page "merci.html" qui comporte elle-même un autre lien.

Comme j'ai voulu personnaliser la page comportant les messages "champs manquants" et "confirmation ok" avec un cadre adaptable à la hauteur du message généré qui comporte un bandeau en haut et un pied de page , j'ai créé, à part, une page "header.php' et une page "footer.php" que j'ai mis en include, et ai placé le <?php echo $msg_ok;?> dans une table avec un fond comportant les côtés droit et gauche du cadre.

Et maintenant je suis bloquée parce que je ne sais pas ce qu'il me faut faire pour que seulement lorsque le formulaire est OK, ce soit la page "merci.html" qui s'affiche et non le message généré par <?php echo $msg_ok;?>. J'ai essayé d'utiliser le "refresh" mais j'ai dû mal m'y prendre car que le formulaire soit ou non correctement complété, la page php renvoie sur la page "merci.html".

Comme je ne suis pas certaine d'être très claire dans mes explications, voici le contenu de ma page php après les "formules d'usage" : balise php et données connexion BDD (soyez indulgents avec moi sur sa rédaction, c'est mon premier "vrai" script, il fera certainement brouillon pour beaucoup d'entre vous...)

//message erreur champs obligatoires 
$msg_erreur = "Erreur. Vous n'avez pas complété tous les champs. Utilisez la fonction retour de votre navigateur pour remplir les champs omis :<br/><br/>";
$msg_ok = "Votre demande a bien été prise en compte.";
$message = $msg_erreur;
//recuperation des données table coordonnees et vérification des champs obligatoire
if (empty($_POST['nom']))
$message .= "Nom<br/>";
$entreprise=$_POST['entreprise'];
$adresse=$_POST['adresse'];
$ville=$_POST['ville'];
$tel=$_POST['tel'];
$fax=$_POST['fax'];
if (empty($_POST['email']))
$message .= "Email<br/>";
$site=$_POST['site'];
if (empty($_POST['siret']))
$message .= "Siret ou N° TVA intracommunautaire<br/>";
if (empty($_POST['profession']))
$message .= "Profession<br/>";
$skype=$_POST['skype'];
$msn=$_POST['msn'];
if (empty($_POST['produits']))
$message .= "Vous a-t-on déjà présenté, ou avez-vous déjà acheté des produits similaires à ces pots ?<br/>";
if (empty($_POST['recontact']))
$message .= "Souhaitez-vous que nous vous recontactions lors de la mise sur le marché de ces pots ?<br/>";

include ("header.php");

// si un champ est vide, on affiche le message d'erreur
if (strlen($message) > strlen($msg_erreur)) {
?>
<html>
<body>
<div align="center">
<table width="800" border="0" cellspacing="0" cellpadding="0" background="images/accueilcotes.gif">
<tr>
<td>
<div align="center">
<br/> <br/>
<?php echo $message; ?>
<br/>
</div>
</td>
</tr>
</table>
</div>
<?php
// sinon c'est ok
} else {
foreach($_POST as $index => $valeur) {
$$index = stripslashes(trim($valeur));
}

// Insertion des données dans la table coordonnees
$query = "INSERT INTO coordonnees(nom,entreprise,adresse,ville,tel,fax,email,site,siret,profession,sky
pe,msn,produits,recontact) VALUES('$nom','$entreprise','$adresse','$ville','$tel','$fax','$email','$site','$siret','$profession','$skype','$msn','$produits','$recontact')";
$result = mysql_query ($query);
if ($result) {
?>
<div align="center">
<table width="800" border="0" cellspacing="0" cellpadding="0" background="images/accueilcotes.gif">
<tr>
<td>
<div align="center">
<br/> <br/>
<?php echo $msg_ok;?>
<br/>
</div>
</td>
</tr>
</table>
</div>
</body>
</html>

<?php
} else {
echo mysql_error();
}
}
include ("footer.php");

mysql_close();
?>

Merci pour votre aide...

Modifié par patricia.b
Posté (modifié)

Salut,

je vois que personne ne t'as aidé!

Personnelement je trouve ton truc bien compliqué! (surtout si tu débute en php)

Voilà ce que je ferai:

1- 1ère page: page formulaire html (vérification des champs en javascript ou ajax mais là c'est plus dur!)

2- 2ème page php: vérification des champs, enregistrement des données et texte ou lien si tous c'est bien passé (sinon retour page formulaire)

Ca te conviendrai ?

Modifié par sparh
Posté

Bonjour,

Merci de m'avoir répondu.

Si je comprends bien ton propos, tu fais une vérification des champs dans le formulaire et à nouveau une vérification des champs dans la page php ?...

Mais ce n'est pas à ce niveau que je voudrais changer quelque chose.

Je pense m'être mal expliquée :

J'ai déjà fait :

1 - un formulaire html (sans vérification des champs) qui fonctionne très bien

2 - une page php avec vérification des champs, enregistrement des données sur BDD et 2 textes différents selon si tout est OK ou non et il fonctionne aussi sans problème : les champs sont vérifiés, les données sont bien entrées dans la BDD il y a émission de messages texte. C'est au niveau de ces messages que je voudrais agir : je souhaiterais renvoyer le visiteur vers une autre page html que le formulaire si tout est OK, mais je ne peux pas utiliser le refresh car "j'occupe" le header avec le bandeau du cadre dans lequel se trouve le message d'infirmation ou de confirmation d'enregistrement du formulaire.

Pour mieux illustrer mon propos, le mieux serait peut-être, si tu en as le temps, bien sûr, que tu ailles sur ma page de formulaire : http://tresors-de-provence.com/vipot/sondagefleurs5.html, que tu remplisses d'abord une partie des champs obligatoires, ce qui devrait te renvoyer à une page d'erreur, puis que tu complètes ensuite tous les champs obligatoires, ce qui va t'amener à la page de confirmation (actuellement générée par la page php et <?php echo $msg_ok;?>). C'est ce message que je voudrais supprimer pour le remplacer par un lien vers une page html autre que le formulaire...

Posté (modifié)

Euh,

ma réponse est très simple et peux être que ce n'est pas ça du tout mais pourquoi tu ne met pas ton lien dans $msg_ok ?

$msg_ok = "Votre demande a bien été prise en compte.<br /> <a href='http://www.lelien.fr'>Le lien</a>";

Ce qui est sur c'est que tu ne pourras pas rediriger vers une autre page, comme tu l'as dit: ton header est déjà utilisé,

ou alors en javascript...

Enfin dans tous le's cas, je trouve ton script très compliqué pour un truc très simple.

Bon courage ;)

Modifié par sparh
Posté

Bonjour,

Merci de ton aide.

Enfin dans tous le's cas, je trouve ton script très compliqué pour un truc très simple.

C'est, je crois, le défaut de tous les débutants...

J'apprends le php toute seule et peut-être que mon cerveau de quinquagénaire veut trop bien faire et surcharge inutilement...

Bonne journée.

Posté

Merci. :)

Depuis ta réponse, j'ai fait fonctionner mes petites cellules grises (comme dit Hercule Poirot) car cela m'ennuyait de ne pas avoir de retour automatique vers la page de remerciement.

J'ai modifié mon script, supprimé les includes "header" et "footer" que j'avais créées pour mettre le haut et le bas de mon cadre et ai placé le <?php echo $msg_ok;?> dans la cellule centrale d'un tableau de 3 lignes. J'ai créé des css pour placer :

- le haut du cadre avec son bandeau, dans la première ligne

- les côtés du cadre, dans la seconde ligne

- le bas du cadre dans la dernière ligne.

J'ai ainsi "libéré" le header et utilisé : header("Location:.....

...et comme cela la redirection se fait automatiquement. :thumbsup:

Bonne fin de journée.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...