Autor Zpráva
Venca V.
Profil *
Zdravím všechny... Potřeboval bych, aby se mi po přidání záznamů do db a následném refreshi data nepřidala do databáze znovu, unique nelze použít, protože některé záznamy mohou být duplicitní... V diskuzi jsem našel tento návod:

já to řeším tak, že po vložení do databáze přesměruji stránku na samu sebe, čímž se zbavím dat odeslaných z formuláře:


$sql='INSERT INTO Obrazek blablabla...';
$result = mysql_query($sql);
if ($result) {
header("Location: http://www.example.com/guestbook.php");
exit();
}

ovšem toto mi nefunguje (nevím jestli nemusí být použita absolutní adresa, musel jsem použít relativní) .
Takže napište prosím, kdo znáte něco jiného, případně jak javascriptem zakázat refresh (jak zakázat zpět už jsem zjistil, ale na refresh jsem ještě nepřišel...). Děkuji, V.
P.S.: Jo, a že tam nemá být to blablabla vím:-)
tiso
Profil
Venca V.
Tá adresa má byť absolútna, je to v dokumentácii... Chyba bude v tom že to nevieš správne použiť.

Čo sa iných riešení týka, tak to by bolo lezenie späť na stromy...
Venca V.
Profil *
Díky za odpověď, zkusil jsem, ale i když jsem zadal

 header("Location: http://localhost/3570o.php")[/pre]

tak se stránka na tuto adresu nepřesměruje, adresa zůstane stejná i s těmi proměnnými...Nevíte prosím kde by mohla být chyba?
Alphard
Profil

header("Location: http://localhost/index.php");

by mělo AFAIK fungovat
ještě skriptík z linuxsoft.cz:


<?
// zde je include souboru s konstantami
mysql_connect(SQL_HOST, SQL_USERNAME, SQL_PASSWORD);
mysql_select_db(SQL_DBNAME);
$vysledek=mysql_query("insert into kniha_hostu (cas, vzkaz) values (".time().",'".$_POST["vzkaz"]."')");
$path=SubStr($SCRIPT_NAME, 0, StrRPos($SCRIPT_NAME,"/"))."/40_select.php";
Header("Location: http://".$_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$path);
?>


a konkrétní odkaz:
http://www.linuxsoft.cz/article.php?id_article=357
tiso
Profil
Venca V.
Za ten header ešte patrí exit; aby sa nevykonávala časť stránky po presmerovaní.
Ťažko hádať kde môže byť problém bez kódu...
Venca V.
Profil *

<?
mysql_connect("localhost","$_SESSION[jmeno]","$_SESSION[heslo]");
mysql_select_db('pokus');
mysql_query("set names utf8");
$vlozeno=mysql_query("insert into jedna (id,druh,pocet,cislo,od,pro,pozn) values (0,'$_POST[druh]','$_POST[pocet]','$_POST[cislo]','$_POST[od]','$_POST [pro]','$_POST[pozn]')");
$result = mysql_query($vlozeno);
if ($result) {
header("Location: http://localhost/3570o.php");
exit();
}
?>

Tady je ten kód...
yosarin
Profil *
Venca V.
A nemáš před tím headerem žádný výstup?
případně bych zkusil oddělit skript na odesílání od skriptu na zpracování:
Odesílající skript =data=> Zpracovávající skript =header("Location: ".$_SERVER["HTTP_REFERER"])=> odesílající skript
mě to funguje... :-)
tiso
Profil
$result = mysql_query($vlozeno);

má robiť čo?
"insert into jedna (id, ... values (0, ...

a toto?
Alphard
Profil
vzhledem k tomuhle:


$vlozeno=mysql_query("insert into jedna (id,druh,pocet,cislo,od,pro,pozn) values (0,'$_POST[druh]','$_POST[pocet]','$_POST[cislo]','$_POST[od]','$_POST [pro]','$_POST[pozn]')");

$result = mysql_query($vlozeno);

se mi zdá, že:


$result == FALSE

proto k přeměrování nedojde
Venca V.
Profil *
Toto je celý kód skriptu, který přidává položky do db. Položky do databáze normálně přidá, ale na předchozí stránku se nenavrátí...Vážně nevím čím to je:-(

<?
session_start();
mysql_connect("localhost","$_SESSION[jmeno]","$_SESSION[heslo]");
mysql_select_db('pokus');
mysql_query("set names utf8");
$vlozeno=mysql_query("insert into jedna (id,druh,pocet,cislo,od,pro,pozn) values (0,'$_POST[druh]','$_POST[pocet]','$_POST[cislo]','$_POST[od]','$_POST [pro]','$_POST[pozn]')");
$result = mysql_query($vlozeno);
if ($result) {
header("Location: ".$_SERVER["HTTP_REFERER"]);
exit();
}
?>
Alphard
Profil
přepiš tu podmínku takhle:

if ($vlozeno) {
Venca V.
Profil *
Alphard:

se mi zdá, že:


$result == FALSE


proto k přeměrování nedojde

Tento příklad jsem našel na téhle diskuzi (viz můj první příspěvek), jeho autor tvrdil že mu to funguje. Já se PHP učím, jsem vyloženě začátečník, a učím se ho také (hlavně) přepisováním různých kódů, jak třeba ze seriálu na linuxsoftu, tak třeba i z téhle diskuze...Jestli jsem někde uďál chybu(jako že jsem jí určitě udělal), tak mi prosím upřesni kde přesně... Pokusil jsem se původní kód přepsat přesně, a svojí chybu nějak nemůžu najít, ještě nejsem tak zkušenej... Díky.
Venca V.
Profil *
Děkuji moc, funguje to... V.
Alphard
Profil
zkus tohle, ale mohl jsem něco přehlédnout

<?

session_start();

mysql_connect("localhost","$_SESSION[jmeno]","$_SESSION[heslo]");

mysql_select_db('pokus');

mysql_query("set names utf8");

$vlozeno=mysql_query("insert into jedna (id,druh,pocet,cislo,od,pro,pozn) values (0,'$_POST[druh]','$_POST[pocet]','$_POST[cislo]','$_POST[od]','$_POST [pro]','$_POST[pozn]')");

if ($vlozeno) {

header("Location: ".$_SERVER["HTTP_REFERER"]);

exit();

}

?>
Venca V.
Profil *
A už jsem to pochopil, což je hlavní... Fakt díky.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0