redirection

Eléphant du PHP | 71 Messages

05 déc. 2005, 13:13

Bonjour

J'ai tenté une redirection apres une suppression de donnée mais cela ne marche pas...
J'ai le msg suivant que j'ai pas bien compris
Warning: Cannot modify header information - headers already sent by (output started at d:\lesitelevrai\calao\inser.php:7) in d:\lesitelevrai\calao\include\inserphp.inc.php on line 209
enfin je comprends pas pourquoi il ne peut pas modifier mes haeder information.

voila mon code


Code : Tout sélectionner

<head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <meta http-equiv="Content-Language" content="fr" /> <link rel="stylesheet" href="../nikita_style.css" type="text/css"/> <title>Paris-Appartements</title> <script type="text/javascript" src="../java.js"></script> </head> <body><?php include("include/inserphp.inc.php"); // on appelle le fichier ?>
une partie de mon .inc.php

Code : Tout sélectionner

if ($pb_Supprimer=="Supprimer"){ $readonly=""; $etat ="Delete"; $link = mysql_connect('localhost','root','pa'); if (!$link) {die('Impossible de se connecter : ' . mysql_error());} $db_selected = mysql_select_db('paweb',$link); $sql="DELETE FROM `bien` where idBien ='$idBien' " ; $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); mysql_close(); header("Location: r_s.php"); }
help please !!!!
Modifié en dernier par nath-0-0 le 08 déc. 2005, 19:23, modifié 1 fois.

Mammouth du PHP | 768 Messages

05 déc. 2005, 13:33

output started at d:\lesitelevrai\calao\inser.php:7
ouvre le fichier inser.php à la ligne 7, un affichage a été envoyé au navigateur.

rien ne doit etre envoyé au navigateur avant header()

si tu n'as pas le choix, tu peux faire une redirection javascript
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Eléphant du PHP | 383 Messages

05 déc. 2005, 13:34

sujet récurrent : les header doivent etre envoye avant tout affichage.dans ton copier coller :-) du fichier inc.php, je vois une ligne vide, en haut... essaie deja de la supprimer pour voir !!

Eléphant du PHP | 71 Messages

05 déc. 2005, 14:12

justement j'ai bien lu qu'il doit etre envoyé avant tout affichage mais affichage html.
Hors c'est bien ce que je pense avoir fait mon .inc.php est un fichier que php il s'apelle en fait inserphp.inc.php

et a la ligne 7 j'ai un

Code : Tout sélectionner

<link rel="stylesheet" href="../nikita_style.css" type="text/css"/>
Mais c'est peut etre bien cela qui suffit a le faire planter

Eléphant du PHP | 383 Messages

05 déc. 2005, 14:59

un simple retour chariot peut suffire a faire planter le schmilblick. or, sur ton extrait de ton include, je vois un retour a la ligne au debut. enfin, le mieux est que tu nous poste le code en entier, ou en tout cas tout le debut du fichier jusqu'a Header

Eléphant du PHP | 71 Messages

08 déc. 2005, 16:51

mais mon include n'est pas du code html mais php...donc le serveur ne renvoie normalement rien au navigateur!!!

Mammouth du PHP | 19672 Messages

08 déc. 2005, 18:50

On recommence :
Pour utiliser certaines fonctions comme header(), session_start() et quelques autres moins utilisées, il faut une condition préalable obligatoire: aucun contenu de quelque forme que ce soit ne doit avoir au préalable avoir été envoyé vers le navigateur. Un simple espace suffit à générer le message d'erreur mentionné.

Dans ton code, tu commences par envoyer du html, ensuite tu fais un include contenant ton instruction header(): Le html envoyé au début interdit justement l'utilisation de header().

Si tu n'as pas le choix d'envoyer le html avant, alors pour faire une redirection, il faut te tourner vers un langage client : JavaScript et window.location
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 71 Messages

08 déc. 2005, 19:22

ahhhhhhhhhhhhhh j'ai enfin compris....

Je pensais que c'etait bon tant que rien n'allait s'afficher sur le navigateur, mais cela commence bien avant.... :lol:

merci pour votre patience :wink:

Eléphant du PHP | 353 Messages

08 déc. 2005, 21:57

Même si la plupart des navigateurs le tolère la fonction header pour faire une redirection s'utiliser avec une url absolue et pas relative.

Eléphant du PHP | 71 Messages

09 déc. 2005, 13:48

ok merci pour la precision, je vais changer cela...