Tom's Guide > Forum > Programmation > par quoi remplacer un header('Location:...'); qui ne marche pas ?

par quoi remplacer un header('Location:...'); qui ne marche pas ?

Forum Programmation : par quoi remplacer un header('Location:...'); qui ne marche pas ?

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

bonjour
je n'arrive pas à faire la redirection de ma page.
il me semble avoir lu que cette intruction header('Location:..') devait être utilisée dans le <head> avant tout autre action, donc ce n'est peut-être pas ce qu'il me faut.

mon prog fait la mise à jour d'une base de données, puis je voudrais qu'il sorte en étant débranché sur une page "merci.html".
quelle instruction utiliser?

voilà ce que j'ai actuellement dans mon code:

<?php
require_once('connection_base.php');

$AgePere=$_POST['AgePere'];
$AgeMere=$_POST['AgeMere'];
$PaysEnfant=$_POST['PaysEnfant'];
$PaysParents=$_POST['PaysParents'];
$AnneeAdoption=$_POST['AnneeAdoption'];

$db = $liens; // initialisé dans le connection_base.php

$sql = "INSERT INTO `adoptionmliens`.`AjoutStat`(Cle, PaysEnfant, AgePere, AgeMere, PaysParents, NbEnfant, TypeDemarche, AnneeAdoption) VALUES('','$PaysEnfant','$AgePere','$AgeMere','$PaysParents','$NbEnfant','$TypeDemarche','$AnneeAdoption')";

mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

mysql_close(); // on ferme la connexion

?>
<html>
<head>
<?php
header('Location:merci.html');
exit();
?>
</head>
<body>
</body>
</html>

j'ai essayé de mettre le header dans le 1er pavé php mais ça ne marche pas non plus.

y'a plus que ça qui me manque et j'ai fini mon module ! ça m'énerve de perdre du temps là dessus, j'ai déjà passé 2h hier soir!

est-ce que quelqu'un connait la réponse à mon problème?
merci
donia

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Pour fonctionner le header("Location:./merci.html" );
doit etre envoyer avant tout code html, qu'il soit
en "dur" ou généré par un echo

tu peux tenter ça:

<meta http-equiv='Refresh' content='0; URL=merci.html'>

ça devrai marcher


Message édité par azen29 le 27-05-2008 à 11:26:55
Répondre à azen29

En fait tu n'as pas besoin de ça,
il suffit que tu vires tout le code html
car de toute façon tu n'affiches rien testes donc comme ça:

<?php
require_once('connection_base.php');

$AgePere=$_POST['AgePere'];
$AgeMere=$_POST['AgeMere'];
$PaysEnfant=$_POST['PaysEnfant'];
$PaysParents=$_POST['PaysParents'];
$AnneeAdoption=$_POST['AnneeAdoption'];

$db = $liens; // initialisé dans le connection_base.php

$sql = "INSERT INTO `adoptionmliens`.`AjoutStat`(Cle, PaysEnfant, AgePere, AgeMere, PaysParents, NbEnfant, TypeDemarche, AnneeAdoption) VALUES('','$PaysEnfant','$AgePere','$AgeMere','$PaysParents','$NbEnfant','$TypeDemarche','$AnneeAdoption')";

mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

mysql_close(); // on ferme la connexion

header("Location:./merci.html" );

?>


Message édité par azen29 le 27-05-2008 à 11:32:37
Répondre à azen29

merci
j'ai contourné le problème en faisant un echo de ma page merci.html.
l'exemple que tu donnais permet l'éxécution du module php avant de faire le redir?
donia

Répondre à adoptioninternationale

merci azen29, je testerais ça pour mon prochain batch.
donia

Répondre à adoptioninternationale

je testerai, ça me semble quand même plus "propre" que de faire un echo d'une page html ! ;-)
donia

Répondre à adoptioninternationale

ou sinon tu passe par du java script :

 
Code :
  1. <?php
  2. print("<script language=\"javascript\" type=\"text/javascript\">window.location.replace(\"ma_page.php\" );</script>" );
  3. ?>
 

L'avantage est que tu le met où tu veux dans ta page.


Message édité par jerbe le 27-05-2008 à 12:14:01
------------------------------ Venez jouer sur mon site : http://www.gugusland.com
mes autres sites : http://jeremy1000.free.fr > http://jybforum.free.fr
Répondre à jerbe

l'inconvénient c'est que tous les internautes n'ont pas le JS d'activer sur le navigateur.

Il faut utilisé soit Header, soit META, dans ce cas là, tu es sur d'avoir un fonctionnement pour 100% de tes clients.

ton code corrigé :


<?php
require_once('connection_base.php');

$AgePere=$_POST['AgePere'];
$AgeMere=$_POST['AgeMere'];
$PaysEnfant=$_POST['PaysEnfant'];
$PaysParents=$_POST['PaysParents'];
$AnneeAdoption=$_POST['AnneeAdoption'];

$db = $liens; // initialisé dans le connection_base.php

$sql = "INSERT INTO `adoptionmliens`.`AjoutStat`(Cle, PaysEnfant, AgePere, AgeMere, PaysParents, NbEnfant, TypeDemarche, AnneeAdoption) VALUES('','$PaysEnfant','$AgePere','$AgeMere','$PaysParents','$NbEnfant','$TypeDemarche','$AnneeAdoption')";

mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

mysql_close(); // on ferme la connexion

header('Location:merci.html');
exit();
?>

tu n'était pas loin ;)

Répondre à okinou

merci okinou, j'avais testé mais en laissant les balises html, body etc. et ça ne marchait pas. faut que je teste en enlevant tout ça.
donia

Répondre à adoptioninternationale
Tom's Guide > Forum > Programmation > par quoi remplacer un header('Location:...'); qui ne marche pas ?
Aller à :

Il y a 2305 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens