Pb pour afficher la page après clique du form

tic -  
 tic -
Bonjour,
jai un petit livre d'or mais ya un petit souci
enfaite quand on rempli le form et on clique sur envoyer, et ba au lieu de renvoyer sur la page livre.php,
sa affiche "Internet Explorer ne peut pas afficher cette page Web" et le blabla qui va avec !
je ne sais pas si c'est un pb avec le "header location" ou le "action" du form ...
le message est bien enregistrer dans la bdd et s'affiche bien sur la page concernée
mais après le clique sa ne renvoi pas a la page qu'il faut
je vous met le code

<form action="insert_signature.php" method="post">
<table>
<tr><td>
<span class="gras">Auteur :</span>
</td><td>
<input type="text" name="auteur" maxlength="30" size="50" value="<?php if (isset($_POST['auteur'])) echo htmlentities(trim($_POST['auteur'])); ?>">
</td></tr><tr><td>
<span class="gras">Adresse E-mail :</span>
</td><td>
<input type="text" name="email" maxlength="50" size="50" value="<?php if (isset($_POST['email'])) echo htmlentities(trim($_POST['email'])); ?>">
</td></tr><tr><td>
<span class="gras">Votre message :</span>
</td><td>
;<textarea name="message" cols="50" rows="10"><?php if (isset($_POST['message'])) echo htmlentities(trim($_POST['message'])); ?></textarea>
</td></tr><tr><td><td align="right">
<input type="submit" name="go" value="Signer">
</td></tr></table>
</form>
<?php
if (isset($erreur)) echo '<br /><br />',$erreur;
?>

<?php
if (isset($_POST['go']) && $_POST['go']=='Signer') {

if ((isset($_POST['auteur'])) && (isset($_POST['email'])) && (isset($_POST['message']))) {
// si les 3 variables ne sont pas vides, et si l'adresse E-mail est valide, alors, et seulement dans ce cas, on fera notre insertion dans la base
if ((!empty($_POST['auteur'])) && (!empty($_POST['email'])) && (!empty($_POST['message']))) {
// on verifie le format de l'adresse E-mail saisie
$test_mail = eregi ('^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)+$', $_POST['email']);
if ($test_mail) {
// on se connecte à notre base
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('test', $base);

// on prepare notre requête d'insertion des données
$sql = 'INSERT INTO livre_or VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.mysql_escape_string($_POST['email']).'", "'.date("Y-m-d H:i:s").'", "'.mysql_escape_string($_POST['message']).'")';

// on lance la requête
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

// on ferme la connexion à la base de données
mysql_close();

// on redirige le visiteur vers l'accueil du livre d'or
header('location: livredor.php');

// on termine le script courant
exit();
}
else {
$erreur = 'Votre adresse E-mail est invalide.';
}
}
else {
$erreur = 'Au moins un des champs est vide.';
}
}
else {
$erreur = 'Les variables nécessaires au script ne sont pas définies.';
}
}

8 réponses

Titial69 Messages postés 269 Statut Membre 20
 
met le header location en tout premier, la redirection se fera une fois le php terminé, mais met le sur la première ligne.

Sinon, c'est qu'il trouve pas le fichier livredor.php
0
graffx Messages postés 120 Date d'inscription   Statut Contributeur Dernière intervention   1 976
 
Fais voir le lien de ton site :)
0
tic
 
Je vois pas vraimeent où le mettre
je l'ai mis a l'endroit visible en gras mais sa ne fonctionne pas sa renvoi sur la mm page (la page actuel)
et aussi j'ai oublié de précisé avant, quand je clique sur envoyer, sa envoie "Internet Explorer ne peut pas afficher cette page Web" etc... et le lien dans la barre d'adresse est http://localhost........./insert_signature.php
sachant que sa doit renvoyé sur la page livredor.php

<form action="insert_signature.php" method="post">
<table>
<tr><td>
<span class="gras">Auteur :</span>
</td><td>
<input type="text" name="auteur" maxlength="30" size="50" value="<?php if (isset($_POST['auteur'])) echo htmlentities(trim($_POST['auteur'])); ?>">
</td></tr><tr><td>
<span class="gras">Adresse E-mail :</span>
</td><td>
<input type="text" name="email" maxlength="50" size="50" value="<?php if (isset($_POST['email'])) echo htmlentities(trim($_POST['email'])); ?>">
</td></tr><tr><td>
<span class="gras">Votre message :</span>
</td><td>
;<textarea name="message" cols="50" rows="10"><?php if (isset($_POST['message'])) echo htmlentities(trim($_POST['message'])); ?></textarea>
</td></tr><tr><td><td align="right">
<input type="submit" name="go" value="Signer">
</td></tr></table>
</form>
<?php
if (isset($erreur)) echo '<br /><br />',$erreur;
?>

<?php

// on redirige le visiteur vers l'accueil du livre d'or
header('location: livredor.php');

if (isset($_POST['go']) && $_POST['go']=='Signer') {

if ((isset($_POST['auteur'])) && (isset($_POST['email'])) && (isset($_POST['message']))) {
// si les 3 variables ne sont pas vides, et si l'adresse E-mail est valide, alors, et seulement dans ce cas, on fera notre insertion dans la base
if ((!empty($_POST['auteur'])) && (!empty($_POST['email'])) && (!empty($_POST['message']))) {
// on verifie le format de l'adresse E-mail saisie
$test_mail = eregi ('^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)+$', $_POST['email']);
if ($test_mail) {
// on se connecte à notre base
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('test', $base);

// on prepare notre requête d'insertion des données
$sql = 'INSERT INTO livre_or VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.mysql_escape_string($_POST['email']).'", "'.date("Y-m-d H:i:s").'", "'.mysql_escape_string($_POST['message']).'")';

// on lance la requête
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

// on ferme la connexion à la base de données
mysql_close();

// on termine le script courant
exit();
}
else {
$erreur = 'Votre adresse E-mail est invalide.';
}
}
else {
$erreur = 'Au moins un des champs est vide.';
}
}
else {
$erreur = 'Les variables nécessaires au script ne sont pas définies.';
}
}

et pour graffx, le site jle montrerais quand il sera mis en ligne et terminé :) lolll
0
graffx Messages postés 120 Date d'inscription   Statut Contributeur Dernière intervention   1 976
 
Tes deux codes sont sur la meme pages ou le second est sur la page insert_signature.php?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tic
 
enfaite sur la page "livredor.php" il y a tt les messages
puis sur la page "insert_signature.php" il ya tt le code que j'ai posté précédemment :)
0
arthezius Messages postés 3756 Statut Membre 475
 
Donc tout le code du message n°3 est sur le même fichier php ?

Si c'est bien le cas, il faut que tu mettes le code de traitement (la deuxième partie du code du message n°3) en premier. Sinon le header(); ne sera pas pris en compte et t'affichera un message d'erreur.
0
tic
 
Slt arthezius

oui tout se passe sur la page insert_signature (il ya le form et tt le code qui va avec pour l'insertion)
et le header() je ne sais pas vraiment où le placer, je l'ai mis un peu + haut mais sa ne marche pas
après quel faudrai que je le met ?
merci
0
arthezius Messages postés 3756 Statut Membre 475
 
Pour la fonction header() c'est très simple. Ton script ne dois rien afficher à l'écran avant que la fonction ne soit déclaré. Tu peux faire des opérations dans ton script PHP mais le script ne doit rien envoyé au navigateur avant.
Donc pas de echo''; ni aucun code html avant ça.
0
tic
 
aahh c'est bon j'ai vu le pb
enfaite il ma suffit de retirer la ligne "mysql_close()", et sa fonctionne !
je ne sais pas si c'est bon d'enlever cette ligne, mais ca fontionne lol
merci a tts ;)
0