Fórum > HTML > GB///refresh///JS

GB///refresh///JS

Autor: To jsem já...
Datum: 22.1. 2006 22:39
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!
Autor: just-paja
Datum: 22.1. 2006 22:45
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.
Autor: To jsem já...
Datum: 22.1. 2006 22:49
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! :/
Autor: just-paja
Datum: 22.1. 2006 22:50
..na mym webu na mym foru to takhle mam a takhle to tam funguje.
Autor: just-paja
Datum: 22.1. 2006 22:51
akorat je to trochu omezeny rychlosti nacitani.
Autor: Tonik
Datum: 22.1. 2006 22:52
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.
Autor: To jsem já...
Datum: 22.1. 2006 22:52
skusim to zejtra..sem ted u bratra na PC..dik..jinak piste este dalsi nazory!
Autor: donny
Datum: 23.1. 2006 01:37
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.
Autor: To jsem já.....
Datum: 23.1. 2006 18:27
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!
Autor: Rellik
Datum: 23.1. 2006 21:23
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)
Autor: Tonik
Datum: 23.1. 2006 22:12
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.
Autor: Rellik
Datum: 24.1. 2006 16:09
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>
Autor: To jsem já.....
Datum: 24.1. 2006 17:17
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
Autor: Marcus Flintus
Datum: 24.1. 2006 20:05
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í :-/
Autor: Rellik
Datum: 24.1. 2006 20:38
>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?!
Autor: donny
Datum: 24.1. 2006 20:50
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).
Autor: donny
Datum: 24.1. 2006 20:52
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.
Autor: To jsem já.....
Datum: 25.1. 2006 18:47
btw...vsem moc dik..uz to mam
Tento web používá k poskytování služeb a analýze návštěvnosti soubory cookie. Používáním tohoto webu s tím souhlasíte. Další informace