pb insert et rafraichissement explorer

pb insert et rafraichissement explorer - PHP - Programmation

Marsh Posté le 26-08-2002 à 16:47:00    

un petit probleme PHP/MySQL pour debutant :
apres un INSERT dans ma bdd, comment eviter que celui ci se refasse quand on rafraichit la page ?
et ce autant de fois que l'on rafraichit bien sur....

Reply

Marsh Posté le 26-08-2002 à 16:47:00   

Reply

Marsh Posté le 26-08-2002 à 16:53:15    

tu fais une redirection ou bien tu codes ton script de maniere à ce que ça n'insere ton machin qu'une seule fois


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 26-08-2002 à 17:37:36    

oui, separer le code sur 2 pages est une solution, il va falloir que j'apprenne comment passer des var d'une page sur l'autre en javascript.
Je voulais savoir s'il n'y avait pas une autre solution consistant a remettre a NULL une variable qui vient d'etre utilisée ?

Reply

Marsh Posté le 26-08-2002 à 17:39:25    

mais non pas en javascript:(
 
 
>Je voulais savoir s'il n'y avait pas une autre solution  
>consistant a remettre a NULL une variable qui vient d'etre  
>utilisée ?

Citation :


ou bien tu codes ton script de maniere à ce que ça n'insere ton machin qu'une seule fois


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 26-08-2002 à 20:20:45    

--greg-- a écrit a écrit :

tu fais une redirection ou bien tu codes ton script de maniere à ce que ça n'insere ton machin qu'une seule fois




voila le principe :
<form name="X" action="SELF" method="post">
...code...
if ($toto){
insert(...);
}
...code...
</form>
 
$toto est rendu vrai par un bouton javascript qui fait un X.submit() de la page
 
comment je fait pour remettre $toto=NULL avant la fin du if ?

Reply

Marsh Posté le 26-08-2002 à 20:40:23    

Le Javascript n'est pas fiable.
 
Le mieux c'est de faire comme sur ce forum... Une page qui insert et ensutie t redirigé vers la liste des messages. Ou sinon comme moi :
 
Juste après ton insert tu mets :

Code :
  1. header('Location: ' . $HTTP_SERVER_VARS['SCRIPT_NAME']);
  2. die('<meta http-equiv="refresh" content="0; url=' . $HTTP_SERVER_VARS['SCRIPT_NAME'] . '">');


Message édité par Dost67 le 26-08-2002 à 20:43:42
Reply

Marsh Posté le 26-08-2002 à 20:40:47    

:lol:
edit: ha merde le 2e post à été effacé. dommage c'etait hilarant pour illustrer le sujet :D


Message édité par --greg-- le 26-08-2002 à 20:41:12
Reply

Marsh Posté le 26-08-2002 à 20:41:36    

--greg-- a écrit a écrit :

:lol:




Keski y'a de drôle, je me suis planté d'abord ds le code et après ds l'édition de mon post. Mais y'a rien de drôle !

Reply

Marsh Posté le 26-08-2002 à 20:42:36    

En fait je me suis planté. Alors kan le msg a été posté g fais Back. J'ai changé. Et j'ai reposté sasn faire exprès !

Reply

Marsh Posté le 26-08-2002 à 20:44:00    

c rien laisse tomber :/

Reply

Marsh Posté le 26-08-2002 à 20:44:00   

Reply

Marsh Posté le 26-08-2002 à 21:20:05    

definir une des clé de ta bdd a partir des info que tu as et non a postériori comme un compteur !

Reply

Marsh Posté le 26-08-2002 à 21:58:37    

Dost67 a écrit a écrit :

Le Javascript n'est pas fiable.
 
Le mieux c'est de faire comme sur ce forum... Une page qui insert et ensutie t redirigé vers la liste des messages. Ou sinon comme moi :
 
Juste après ton insert tu mets :

Code :
  1. header('Location: ' . $HTTP_SERVER_VARS['SCRIPT_NAME']);
  2. die('<meta http-equiv="refresh" content="0; url=' . $HTTP_SERVER_VARS['SCRIPT_NAME'] . '">');






 
Fantastique !!!
une journée de perdue se finie finalement dans la joie et la bonne humeur...
bref merci.

Reply

Marsh Posté le 26-08-2002 à 22:00:15    

et ....heu, ca serait abuser de demander le pourquoi de la chose ?
ou je me reporte a FAQ & Consort ?

Reply

Marsh Posté le 26-08-2002 à 22:08:03    

en fait, c le header que je comprends pas;
 
le die fait ca tres bien tout seul ? (oui)
de plus je lis dans la doc que header doit etre utilisé avant toute balise HTML ou execution... etc, je te refais pas la doc.
est ce que il y a ici un cas particulier ?

Reply

Marsh Posté le 26-08-2002 à 23:58:32    

Oui la prortion de code doit se trouver avant tout code HTML sinon y'aura la fameuse erreur.
 
Le header() c pour rediriger.
Le die($msg) ça écrit $msg dans le fichier et ça termine le script.
Ca écrit donc la balise <meta> qui est aussi redirectrice et qui est là, juste au cas où...


Message édité par Dost67 le 26-08-2002 à 23:58:44
Reply

Marsh Posté le 27-08-2002 à 00:01:42    

avant toute balise HTML ou execution
Avant tte balise HTML oui mais il peut très bien y avoir du code PHP avant.
Simplement le header() est ajoute une en-tête au doc HTML. Un doc HTML à cette structure :
En-têtes
 
Page
Donc si tu fous une en-tête après avoir commencé à écrire du code HTML c pas bon !
 
Mais comme moi j'utilise tjrs ob_start() au début de mes fichiers PHP je ne suis pas emmerdé par ça car la page se met en cache.


Message édité par Dost67 le 27-08-2002 à 00:02:05
Reply

Marsh Posté le 27-08-2002 à 12:29:59    

En tout cas, ma boucle est en plein milieu de ma page, donc le header est en trop, surtout que ca marche tres bien maintenant avec juste "die". :ange:

Reply

Marsh Posté le 27-08-2002 à 12:34:06    

C'est quoi exactement la fonction de header ?
J'ai cru comprendre par exemple que c'etait la technique utilisée pour l'affichage des citations ou signatures sur ce forum, oui ?

Reply

Marsh Posté le 27-08-2002 à 17:27:06    

Non, on t'as dit n'importe quoi ou alors tu as mal interprété la réponse.
 
Le header() Location c exactement comme le <meta> Refresh sauf que le Location est avant le code HTML et le Refresh est dans le code HTML.

Reply

Marsh Posté le 27-08-2002 à 17:34:29    

Exemple de réponse du serveur Web :

HTTP/1.0 200 Document follows
Date : Fri, 01 Sep 2002 15:00:00 GMT
Server: NCSA/1.5.2
Last-modified: Mon, 17 Jun 2002 21:00:00 GMT
Content-type: text/html
Content-length: 2482
Location: newpage.php
 
(ici se trouve le corps du document HTML qui sera affiché)
<meta ... url=newpage.php">


Les headers c'est ce qu'il y a au dessus et ça sert au navigateur pour savoir par exemple la date de dernière modif du doc... Ainsi il peut gérer sa mémoire cache.
 
Location demande un changement de page. Le Meta Refresh aussi. Simplement ils ne sont pas au même endroit dans le doc. Et c vrai que ça fait un double si tu mets les 2 mais au moins t sûr que tu seras redirigé !

Reply

Marsh Posté le 27-08-2002 à 19:56:10    

ok, merci
j'ai pas tout integré sur le header mais c'est normal, tant que je m'en servirai pas...

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed