GB///refresh///JS

už dlouho sem tu nebyl s žádným problemem...ted tu sem tak pls poradte..

Mam GuestBook..kdyz napisu prispevek a pote dam refresh zobrazi se tam znova..potrebuju nakej skriptik aby se pri refreshi zabránilo ukladani do databaze! PLS poradte!
guestbook -> soubor se skriptem

a v souboru se skriptem jenom tohle:

<?php
//skript
?>
<head>
<meta http-equiv="refresh" content="0; url=nekampryc"/>
</head><body></body>

cim rychlejsi je ten skript (tj. i mensi stranka), tim lepe to funguje.. ale myslim, ze jsou i lepsi reseni. Zatim jsem osobne prisel jenom na tohle bez googlu.

jinak samozrejme na http://google.com by neco mohlo byt.
asi si me nepochopil..nebo sem nepochopil ja tebe :D

proste potrebuju aby se pri refreshi znova neukladal prispevek do databaze ale aby nabeh znova GB! :/
..na mym webu na mym foru to takhle mam a takhle to tam funguje.
akorat je to trochu omezeny rychlosti nacitani.
ve skriptu ulozis data do db a potom zavolej header location a presmeruj to na stranku s tim gb. nejak asi takhle: header("location:gb.php"); ale mela by se tam tusim davat absolutni adresa do te hlavicky.
skusim to zejtra..sem ted u bratra na PC..dik..jinak piste este dalsi nazory!
ja to delam prakticky stejne. Data z formulare, kterej je dejme tomu v souboru gb.html, poslu na skript uloz_to.php, kterej obsahuje proceduru pro ulozeni zaznamu a na konci toho skriptu je

header ("Location: gb.html");

Funguje to tak, ze potom pri reloadu toho gb.html uz neexistujou zadny POST data, takze se nic vic neulozi.
jenže já mám soubor kniha.php ...z toho se to uklada do textovyho dokumentu knihadata.cgi a u toho este validace.js..a prave potrebuju aby se pri refreshi nedavali do databaze dalsi a dalsi stejny prispecky...z toho vaseho sem to nak nepochopil!
A co kdyz neni zadny script na zpracovani, ale zpracovava se to primo v jednom souboru... Jak zapis tak cteni... jen je includovany soubor s konfiguraci na pripojeni k DB jak to delat u takoveho souboru... ? (myslim ten refresh stranky aby se nepripsal stejny prispevek)
Rellik: uplne stejne. mam soubor gb.php, ktery zobrazuje prispevky v knize, ale taky vklada prispevky nove - zpracovava formular. takze mam cast kodu, kde ten prispevek ukladam. no a tam za to ulozeni dam to presmerovani na soubor gb.php. takze to pak bude takto: uzivatel si zobrazi stranku gb.php. vyplni formular a odesle ho na gb.php. tam ho zpracuju a presmeruju se na gb.php. uzivateli se nacte stranka s vlozenym prispevkem.

To jsem já...: co jsi nepochopil? napis teda presne, jak to mas, co v kterym souboru je a co to dela.
Pokud se to teda bude chtit nekomu cist tak tady to je:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


<head>
<title>Diskuze</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<link rel="stylesheet" type="text/css" href="back.css">
<script language="JavaScript" type="text/javascript">
function smajlik(what)
{
document.form1.obsah.value+='' + what;
document.form1.obsah.focus();
}
function odstran(id)
{
var heslo = showModalDialog("heslo.php","","dialogHeight: 150px; scroll: 0; dialogWidth: 168px; dialogTop: 200px; dialogLeft: 150px; center: 1; help: 0; resizable: 0; status: 0;");
if(heslo)
{
document.frmdel.kod.value=heslo;
document.frmdel.id.value=id;
document.frmdel.submit();
}
}
</script>
</head>

<body>
<div id="kniha">
<h1 align="center">Diskuze</h1>
<form action="" method="post" name="frmdel" id="frmdel">
<input type="hidden" name="kod">
<input type="hidden" name="id">
</form>

<form action="" method="post" name="form1">
<table align="center" cellspacing="0" cellpadding="2" border="0" width="64%">
<tr>
<td>
<b>Jméno</b><span style="color:red;">*</span></td>
<td align="right" width="424">
<p align="center">
<input type="text" name="jmeno" size="35"></td>
</tr>
<tr>
<td>
<p><b>Text</b><span style="color:red;">*</span></td>
<td align="right" width="424">
<p align="center">
<textarea rows="5" name="obsah" id="obsah" cols="35"></textarea></td>
</tr>
<tr>
<td height="24">
<p><b>Smajlík</b></td>
<td align="right" height="24" width="424">
<?
for($i=1;$i<=16;$i++)
{
$val=$i;
if($i<10)
$val='0' . $i;
echo '<a href="javascript:smajlik('. $val . ')"><img src="smajlici/smaj' . $val . '.gif" width="15" height="15" alt="" border="0"></a> ';
}
?></td>
</tr>
<tr>
<td>
<p><b>E-mail</b></td>
<td align="right" width="424">
<p align="center">
<input type="text" name="email" size="35"></td>
</tr>
</table>
<div align="center"><br>
<input class="tlacitko" type="submit" name="tl" value="Vložit" style="cursor: hand;"></div>
<p align="center">
<?
include('config.php');
mysql_connect($server,$jmeno,$heslo);
mysql_select_db($db);

//
NOVÝ PŘÍSPĚVEK
$prezdivka=$HTTP_POST_VARS['jmeno'];
$obsah=$HTTP_POST_VARS['obsah'];
$email=$HTTP_POST_VARS['email'];
$kod=$HTTP_POST_VARS['kod'];
$id=$HTTP_POST_VARS['id'];
$tl=$HTTP_POST_VARS['tl'];
$start=$HTTP_GET_VARS['start'];
if(!$start)
$start=0;
if($tl)
{
echo '<div id="upozorneni">';
if($prezdivka && $obsah)
{
$obsah=str_replace("<","<",$obsah);
$obsah=str_replace(">",">",$obsah);
$obsah=str_replace("\n","<p>",$obsah);
$dotaz="insert into kniha set jmeno='$prezdivka', text='$obsah', cas=now(), datum=now(), email='$email'";
echo "Údaje byly vloženy";
mysql_query($dotaz);
}
else
{
echo "Údaje s * musíš vyplnit";
}
echo '</div>';
}

if($kod and $id)
{
echo '<div id="upozorneni">';
if($kod==$mazat)
{
echo "Údaj byl smazán";
mysql_query("delete from kniha where id=$id");
}
else
{
echo "Špatné heslo";
}
echo '</div>';
}
?>
</p>
</form>
<?
$tab=mysql_query("select *, extract(hour from cas) as 'hodina', extract(minute from cas) as 'minuty', extract(day from datum) as 'den', extract(month from datum) as 'mesic', extract(year from datum) as 'rok' from kniha order by datum desc, cas desc limit $start,10 ");
$pocet=mysql_num_rows(mysql_query('select * from kniha'));

//
* NAVIGACE
$trida="class='neakt'";
if(($start-10)>=0)
$trida=' href="?start=' . ($start-10) . '" class="akt"';
$konec=$start+10;
if($pocet<$konec)
$konec=$pocet;
echo '<div align="right"><a ' . $trida . '><< </a><span class="navigace">  Příspěvky ' . ($start+1) . " až $konec z $pocet   </span>";
$trida="class='neakt'";
if(($start+10)<$pocet)
$trida=' href="?start=' . ($start+10) . '" class="akt"';
echo '<a ' . $trida . '> >></a></div>';


//
PŘÍSPĚVKY
while($data=mysql_fetch_array($tab))
{
$email='{jmeno} <a href="mailto:{email}"><img src="smajlici/mail.gif" width="12" height="12" alt="" border="0"></a>';

$vypis='<hr size=1>

<div class="jmeno"><b>{jmeno}</b>
<span class="datum">{den}.{mesic} {rok} ({hodina}:{minuty}) <a href="javascript:odstran(\'{id}\');" style="text-decoration:none; color: black;">X</a></span>
</div>
<div id="text">{text}</div>';



if($data['email'])
{
$email=str_replace('{email}',$data['email'],$email);
$vypis=str_replace('{jmeno}',$email,$vypis);
}
$vypis=str_replace('{jmeno}',$data['jmeno'],$vypis);
$vypis=str_replace('{id}',$data['id'],$vypis);
$vypis=str_replace('{text}',smajlici($data['text']),$vypis);

$vypis=str_replace('{hodina}',$data['hodina'],$vypis);
$vypis=str_replace('{minuty}',$data['minuty'],$vypis);
$vypis=str_replace('{den}',$data['den'],$vypis);
$vypis=str_replace('{mesic}',$data['mesic'],$vypis);
$vypis=str_replace('{rok}',$data['rok'],$vypis);
echo $vypis;
}


//
* NAVIGACE
$trida="class='neakt'";
if(($start-10)>=0)
$trida=' href="?start=' . ($start-10) . '" class="akt"';
$konec=$start+10;
if($pocet<$konec)
$konec=$pocet;
echo '<div align="right"><a ' . $trida . '><< </a><span class="navigace">  Příspěvky ' . ($start+1) . " až $konec z $pocet   </span>";
$trida="class='neakt'";
if(($start+10)<$pocet)
$trida=' href="?start=' . ($start+10) . '" class="akt"';
echo '<a ' . $trida . '> >></a></div><p>';



function smajlici($text)
{
for($i=16;$i>0;$i--)
{
$val=$i;
if($i<10)
$val='0' . $i;
$text=str_replace("
$i",'<img src="smajlici/smaj' . $val . '.gif" width="15" height="15" alt="" border="0">',$text);
}
return $text;
}
mysql_close();
?>
</div>

</body>
takže...mam soubor kniha.php (obsah knihy..to je jasny!) z nej se odesle prispevek do knihadata.cgi kde se ulozi a pak si ho ten index nacte...jenze kdyz pridam prispevek..odesle se a pak kdyz dam hned potom refresh stranky, tak se ten prispevek odesle znova a sou tam tudiz dva stejny...takze potrebuju aby se to pri refreshi znovu neukladalo!

btw je u toho este JS ale tam je myslim jenom filtrace slov,smajlici a este ze se to neodesle kdyz je prispevek prazdnej nebo bezejmena! este tam je CSS ale to je asi jedno!

Takze proste potrebuju aby se pri refreshi znova neukladal prispevek..

jen mala poznamka..v PHP a JS skoro vubec neumi tak na me dete trochu pomalu
shiit, je to tejden, co jsem slyšel jak se to dělá, nicméně vim, že spousta lidí, co bezproblémově ovládá PHP to neumí :-/
>Markus... Tak dik to vsem urcite pomuze ze si to slysel... A co tak teda napsat "jak" se to dela, kdyz si to teda slysel?!
mas soubor kniha.php, ktery obsahuje onen formular. ten odesle POST data na knihadata.cgi, kde se POST data z formulare zpracuji. Kdyby timto skript skoncil a zobrazil treba vypis prispevku, tak v tuto chvili pri Reloadu by se stejna data zpracovala znovu -> prispevek by se ulozil podruhe. Tomu se da vyhnout, kdyz na konci toho souboru knihadata.cgi posles hlavicku (treba) "Location: kniha.php". S timto presmerovanim uz se neposilaji POST data, tudiz problem je vyresen. Jelikoz zadna POST data neexistuji, Reload nemuze zadna data odesilat ke zpracovani. Pokud bys chtel presmerovat na knihadata.php, musel bys u toho posilani hlavicky overit, jestli existuji POST data (->poslat header), nebo neexistuji (->pokracovat dale).
Zabraneni ukladani duplicitnich zaznamu by se dalo udelat primo na urovni databaze, tedy zkontrolovat, zda v databazi jiz neni ulozen zaznam se stejnymi daty(autor_prispevku, timestamp, obsah_prispevku), a jestli ano, tak v tom pripade dalsi data neukladat.
btw...vsem moc dik..uz to mam