Autor | Zpráva | ||
---|---|---|---|
Mufna Profil |
Zdravím Vás. Poradíte mi někdo, jak mohu vyřešit to, aby se po vyplnění formuláře (jde o položku do databáze) a zobrazení hlášky o přidání položky již nedalo kliknutím na "Aktualizovat" v prohlížeči znovu do db přidat to samý ?
Mám to zatím udělaný pomocí 2 php souborů - insert_car.php a insert_car_form.php. Rád bych tohle oddělení zachoval. Do insert_car.php pouze includuji insert_car_form.php (to je jen čistý HTML kód). Zdroják insert_car.php je: <?php if (isset($_POST['send'])) { if (strlen($_POST['name_type']) > 0) { $name_type = $_POST['name_type']; } else { echo '<div class="msg">NenĂ zadán typ vozu</div>'; } if (strlen($_POST['condition']) > 0) { $condition = $_POST['condition']; } else { echo '<div class="msg">NenĂ zadán stav vozu</div>'; } if (strlen($_POST['prod_year']) > 0) { $prod_year = $_POST['prod_year']; } else { echo '<div class="msg">NenĂ zadán rok vĂ˝roby</div>'; } if (is_numeric($_POST['price'])) { $price = $_POST['price']; } else { echo '<div class="msg">NenĂ zadána poĹľadovaná cena nebo byla zadána jiná neĹľ ÄŤĂselná hodnota</div>'; } if (strlen($_POST['description']) > 0) { $description = $_POST['description']; } else { echo '<div class="msg">NenĂ zadán popis</div>'; } if (strlen($_POST['add_info']) > 0) { $add_info = $_POST['add_info']; } else { echo '<div class="msg">Nejsou zadány dodateÄŤnĂ© informace</div>'; } if ($name_type && $prod_year && $price && $description && $condition && $add_info) { $photos = 1; require_once ('initdb.php'); $query = "INSERT INTO ".$tbl_prefix."karavany (`name_type`, `prod_year`, `description`, `condition`, `add_info`, `price`, `date_inserted`, `photos`) VALUES ('".addslashes($name_type)."','".addslashes($prod_year)."','".addslash es($description)."','".addslashes($condition)."','".addslashes($add_in fo)."','".addslashes($price)."', NOW(),'".addslashes($photos)."')"; $res = mysql_query($query); if ($res) { echo '<div class="msg"><b>', mysql_affected_rows().' vĹŻz byl pĹ™idán do databáze</b></div>'; return; * Tady by to podle mě nějak šlo, ale např. Header("Location") mi moc nepomohlo, zmizelo mi pak úplně předchozí echo } else { echo '<div class="msg"> sql $query error<br>' .mysql_error(),'</div>'; } } else { echo '<div class="msg"><b>! Nejsou zadány všechny potĹ™ebnĂ© hodnoty !</b></div>'; } } ?> <?php require_once ('./insert_car_form.php'); include ('./admin-footer.php'); ?> |
||
Mufna Profil |
#2 · Zasláno: 24. 3. 2008, 16:33:02
A taky mi jde o to, aby platnost stránky vyplněním formuláře a odesláním dat do db vypršela.
|
||
Mastodont Profil |
#3 · Zasláno: 24. 3. 2008, 18:51:43
Přesměrovat přes header, tady řešeno asi tisíckrát.
|
||
Mufna Profil |
#4 · Zasláno: 24. 3. 2008, 19:33:26
Mastodont
A někde v tom místě, kde ho mám umístěný teď ? |
||
Mastodont Profil |
#5 · Zasláno: 24. 3. 2008, 19:57:37
Promiň, nevšiml jsem si, že to máš v kódu zmíněno. Header ti opravdu zlikviduje předchozí echa, čili pokud chceš po přesměrování něco vypsat, tak si to ulož do session. To místo máš v zásadě správně - jakmile máš zkontrolována a zapsána data, můžeš přesměrovat.
|
||
Mufna Profil |
#6 · Zasláno: 24. 3. 2008, 20:30:41
Mastodont
A můžeš prosím alespoň naznačit, jak to do session mám uložit ? Přidat pouze nahoru do kódu session_start(); asi nepomůže, nebo jo ? Nemám např. zatím vůbec vyřešeno logování uživatelů, tam budu asi používat superglobální $_SESSION. Půjde to bez tohoto vyzkoušet ? |
||
Mastodont Profil |
#7 · Zasláno: 24. 3. 2008, 20:34:43
Když session, tak session_start() musíš volat na každé stránce. Poté již jednoduše
$_SESSION['něco'] = ...; http://www.linuxsoft.cz/article.php?id_article=440 |
||
Mufna Profil |
#8 · Zasláno: 24. 3. 2008, 20:38:50
Napadlo mě uložit výsledek - mysql_affected_rows() - do proměnné, a tu pak po přesměrování zavolat, ale zatím nevím, jak na to, aby to fungovalo. Něco jsem už zkoušel, ale nešlo to. A nebo mě napadlo umístit někam nahoru do skriptu nějaký switch {} a do Header("Location") pak nějak umístit odkaz na vyhovující hlášku (něco ve stylu - Header("Location: insert_car.php?hláška"). Ale zatím nevím, jak to udělat.
|
||
Časová prodleva: 16 let
|
0