francoisch Posté 16 Juin 2008 Posté 16 Juin 2008 Bonjour Jai ce message très classique: Warning: Cannot modify header information - headers already sent by (output started ... qui me brouille lécoute. Y a-t-il un moyen de le supprimer ? autre que de ne pas faire un header("Location: http ... Par avance merci. Francois
captain_torche Posté 16 Juin 2008 Posté 16 Juin 2008 Ce message typique signifie que tu as du texte envoyé au navigateur avant une en-tête header. Vérifie que tu n'as pas d'echo avant, voire même un espace ou un retour chariot.
francoisch Posté 16 Juin 2008 Auteur Posté 16 Juin 2008 bonsoir Captain Effectivement, avant le Header, j'ai une écriture MySql et j'essaie juste après ça d'émettre un message confirmant / infirmant la bonne fin de l'opération. Pour échapper à ce que tu décris, j'ai essayé de passer par la création d'un cookie, exploité après le Header, mais même ça ne passe pas. Je n'ai pas trouvé de solution pour émettre ce message de bonne / mauvaise fin avec ce Header dans les environs. Je peux mettre mon code pour plus de clarté. Par avance merci de vos suggestions. Francois
iNCiTE Web Posté 17 Juin 2008 Posté 17 Juin 2008 Je pense qu'on est pas sensé l'enlever, mais plutôt faire en sorte qu'il ne s'affiche pas (c'est une erreur à corriger donc) Pour toi il faudrait plutôt que l'erreur soir affichée dans la page appelée par le header
francoisch Posté 17 Juin 2008 Auteur Posté 17 Juin 2008 Bonjour Voilà mon code, du moins la partie concernée : $result9 = mysql_query($requete, $connexion); if (!$result9) {die('Impossible d\'exécuter la requête :' . mysql_error());} else {SetCookie("resultatSql",$result9 );} //if (isset($result9)) // {// echo "<script>alert('AAAAA Votre saisie a été enregistrée')</script>"; // } // renvoyer à la page d'appelheader("Location: http://" . $_SERVER['HTTP_HOST']. rtrim(dirname($_SERVER['PHP_SELF']), '/\\'). "/" . "xxx.php"); Je veux émettre un message, dune manière ou dune autre, informant de la bonne / mauvaise exécution de la requête. Jessaie là de passer le code de retour de lexécution de la requête dans un cookie à la page xxx.php qui émettra le message. Par ailleurs, jai laissé en commentaires un autre essai avec une boite Alert. Dans les deux cas, lors des impressions de la page xxx.php, le message Cannot modify apparaît, ce que je veux précisément éviter. Je ne vois dans mon code aucun echo ou affichage avant le Header ; peut-être la création du cookie y suffit elle ? Merci par avance de votre aide. Francois
iNCiTE Web Posté 17 Juin 2008 Posté 17 Juin 2008 Pourquoi tu fais pas ça : $result9 = mysql_query($requete, $connexion);if (!$result9) { $resultatSql = mysql_error(); } else { $resultatSql = "OK" }// renvoyer à la page d'appelheader("Location: http://" . $_SERVER['HTTP_HOST']. rtrim(dirname($_SERVER['PHP_SELF']), '/\\'). "/" . "xxx.php?resultat=".$resultatSql); Puis dans xxx.php tu affiches le contenu de $resultatSql D'ailleurs $result9 (comment tu fais pour t'y retrouver dans tes variables ensuite ? ) contient un identifiant de ressource, pas une chaine donc c'est pas très utile, je l'ai remplacé par mysql_error()
francoisch Posté 19 Juin 2008 Auteur Posté 19 Juin 2008 bonsoir Incite et merci de ta réponse. Je vais l'utiliser très bientôt mais je suis un peu à la bourre actuellement. Merci encore. Francois
francoisch Posté 22 Juin 2008 Auteur Posté 22 Juin 2008 bonjour Voila, j'ai fait les mises à jour: 1/ dans le module réalisant l'action MySql: if (!$result) { $resultatSql = mysql_error(); } else { $resultatSql = "OK";}// renvoyer à la page d'appelheader("Location: http://" . $_SERVER['HTTP_HOST']. rtrim(dirname($_SERVER['PHP_SELF']), '/\\'). "/" . "websaisie.php?resultat=".$resultatSql); 2/ dans le deuxième module, comme j'imagine qu'il ne connait pas naturellement la variable $resultatSql: // récupération du paramètre passé par webaction.php$resultatSql= $_GET['resultatSql']; ...<p>Mise à jour:<?php echo $resultatSql; ?> </p> Problème subsistant: rien ne s'affiche, la variable $resultatSql n'est manifestement pas initialisée dans le deuxième module; je dois mal la récupérer. Comment dois-je faire dans ce deuxième module pour récupérer cette variable? Par avance merci de votre aide. Francois
iNCiTE Web Posté 22 Juin 2008 Posté 22 Juin 2008 Ben tu envoies la variable "$resultat" et tu lis "$resultatSql"
francoisch Posté 22 Juin 2008 Auteur Posté 22 Juin 2008 Bien vu, j'ai corrigé et tout fonctionne maintenant. Merci encore de ton aide. Francois
francoisch Posté 23 Juin 2008 Auteur Posté 23 Juin 2008 bonjour pour une petite question supplémentaire. Juste pour savoir exactement ce que fait if (!$result) Est ce l'équivalent de isset(), de empty(), autre chose? Par avance merci de votre aide. Francois
rdd Posté 23 Juin 2008 Posté 23 Juin 2008 (modifié) Bonjour, if (!$result) Signifie que $result vaut 0 isset signifie que ta variable est set EX $result="";if (isset($result))echo "Var result is set":elseecho "Var result is not set"; et empty verifie que ta variable n'est pas vide $result="";if (empty($result))echo "Var result is empty":elseecho "Var result is not empty"; Je te conseille de jeter un oeil a la doc officielle de PHP ou tu trouveras reponse a tes questions : PHP.NET Et specialement : function empty function isset Modifié 23 Juin 2008 par rdd
captain_torche Posté 23 Juin 2008 Posté 23 Juin 2008 Pour être plus précis, if(!$result) est équivalent à if($result == false) Sachant qu'avec une égalité double (==), on ne recherche pas strictement le booléen false, mais des valeurs équivalentes : 0, '0', '' (chaîne vide), et false (bien entendu).
francoisch Posté 23 Juin 2008 Auteur Posté 23 Juin 2008 bonsoir et merci de vos réponses. Oui, pour empty et isset, je sais où trouver l'info. C'est pour if (! que je ne suis pas arrivé à trouver. Maintenant, si je dis que if (! rend un résultat semblable / identique à empty, j'ai vrai / faux? Francois
captain_torche Posté 24 Juin 2008 Posté 24 Juin 2008 Pas vraiment : Si ta variable est égale à 0 ou '0' (et éventuellement false), empty retournera false, et ! retournera true.
francoisch Posté 24 Juin 2008 Auteur Posté 24 Juin 2008 Merci Captain de ta réponse, maintenant, j'arrive à faire la différence entre ces différentes fonctions. Francois
francoisch Posté 25 Juin 2008 Auteur Posté 25 Juin 2008 Il me reste un problème. J'ai conditionné l'affichage du message de bonne fin par l'existence de la variable $resultat: if(isset($resultat)) ... Une fois affiché le message, je supprime la variable: unset($resultat); Quand ensuite, je fais, par exemple, Refresh, la variable $resultat réapparaît avec sa valeur initiale et le message de bonne fin est donc de nouveau affiché alors qu'il ne devrait pas l'être. La variable $resultat est-elle réinitialisée par le $resultat = $_GET[resultat]; du début? En tout cas, comment pourrais je faire disparaitre cette variable une fois le message affiché? Par avance merci de votre aide. Francois
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant