lemuse Posté 6 Mars 2010 Posté 6 Mars 2010 Bonjour, j'ai un soucis avec ce code, j'aimerais un délai d'affichage de 2 secondes comme indiqué de "Cette oeuvre est effacée du panier", mais j'ai aussi une erreur qui s'affiche. Le code pour effacer le panier : <? session_start();?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title></title><meta name="description" content="" /><meta name="keywords" content="" /><meta http-equiv="imagetoolbar" content="no" /><link rel="stylesheet" type="text/css" href="artotheque.css" /><style type="text/css"><!--body {background-image: none;margin: 20px;}td {background-color: #EFDABD;padding: 2px;vertical-align: top;}--></style></head><body><h1>Votre panier</h1><? if(isset($_GET["del_panier"])) { $nombre_oeuvres = count($_SESSION["tableau_panier"]); $oeuvre_a_supprimer = $_GET["del_panier"]; $occurence = 0; while($occurence < $nombre_oeuvres) { if($_SESSION["tableau_panier"][$occurence]==$oeuvre_a_supprimer) { $_SESSION["tableau_panier"][$occurence]="effacé"; } $occurence++; } }?><p style="font-weight: bold;">Cette oeuvre est effacée du panier.</p><?sleep(2);header("Location: panier.php");?></body></html> .. et l'erreur : Warning: Cannot modify header information - headers already sent by output started at home ... Après recherche il apparait qu'il ne doit pas y avoir d'html avant le header et je pensais avoir trouvé la solution avec ceci : <?phpob_start();?><? session_start();?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title></title><meta name="description" content="" /><meta name="keywords" content="" /><meta http-equiv="imagetoolbar" content="no" /><link rel="stylesheet" type="text/css" href="artotheque.css" /><style type="text/css"><!--body {background-image: none;margin: 20px;}td {background-color: #EFDABD;padding: 2px;vertical-align: top;}--></style></head><body><h1>Votre panier</h1><? if(isset($_GET["del_panier"])) { $nombre_oeuvres = count($_SESSION["tableau_panier"]); $oeuvre_a_supprimer = $_GET["del_panier"]; $occurence = 0; while($occurence < $nombre_oeuvres) { if($_SESSION["tableau_panier"][$occurence]==$oeuvre_a_supprimer) { $_SESSION["tableau_panier"][$occurence]="effacé"; } $occurence++; } }?><p style="font-weight: bold;">Cette oeuvre est effacée du panier.</p><?sleep(2);?><?phpheader("Location: panier.php");ob_flush();?></body></html> L'erreur est disparue, mais pas de petit message, ce n'est pas super génant, mais je me demande si ce n'est pas ca qui entraine une erreur dans le calcul des uvre(s) restant dans le panier. Il y a peut etre une solution javascript ? j'en ai tenté une mais sans succès, la temporisation de l'affichage n'est pas respectée, quel que soit le temps imposé. Merci de vos conseils.
jcaron Posté 6 Mars 2010 Posté 6 Mars 2010 Un sleep dans un processus côté serveur c'est une mauvaise idée. Et de toutes façons ta méthode ne peut pas fonctionner: un redirect via Location est forcément immédiat, donc ce que tu fais c'est en fait attendre 2 secondes, puis envoyer le header Location, puis le contenu de ta page (qui n'est jamais affiché puisqu'il y a un redirect). Quelques options à explorer: - tu affichages la page avec le message, puis un bout de JS avec un setTimeout et une redirection JS (windows.location.href=nouvelle_url). - tu inclus un header Refresh avec un délai (Refresh: 2:url=nouvelle_url par exemple) Jacques.
lemuse Posté 7 Mars 2010 Auteur Posté 7 Mars 2010 (modifié) Hello Jacques, l'explication sur le couple sleep et header est maintenant claire. Je vais essayer de mettre en œuvre tes deux options, je suppose qu'elle doivent être installée dans ce même formulaire, à la suite de mon message ? Étant noob en ce domaine et afin de gagner du temps, pourrais tu m'indiquer la syntaxe exacte de ta seconde option ? Bonne journée. Jean-Michel. Je viens d'essayer ceci, mais c'est mal écrit je pense: <p style="font-weight: bold;">Cette oeuvre est effacée du panier.</p><script type="text/javascript">function Refresh: 3:url='http://www.museedupetitformat.be/artotheque/panier.php';</script> Modifié 7 Mars 2010 par lemuse
lemuse Posté 7 Mars 2010 Auteur Posté 7 Mars 2010 Voila, cette solution fonctionne : <meta http-equiv="refresh" content="3;http://ma page a rafraichir" /> .. et merci pour la piste
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant