Autor | Zpráva | ||
---|---|---|---|
Mufna Profil |
#1 · Zasláno: 25. 3. 2008, 01:09:09
Zdravím Vás. Řeším odesílací skript s formulářem pro zápis do db (ten includuji) a chtěl bych zajistit, aby zpracování a všechny hlášky probíhaly na jedné stránce - insert_car.php. Už jsem vymyslel, že bych použil SWITCH, ale zatím mi to funguje pouze tak, že pokud umístím msg2 (! Nejsou zadány .... atd) někam nakonec, tak mi sice tahle hláška (pokud něco není OK) funguje, ale když je vše OK a položka se přidá, tak se mi vždy vypíšou obě hlášky současně. Jinak ten skript už je trochu ořezaný od všelijakých výpisů chyb (to už teď nepotřebuji), jde mi pouze o to, co uvidí uživatel. Pokud nevyplní formulář tak jak má, tak msg2, pokud ano, tak POUZE msg1.
Zkuste na to prosím někdo mrknout. Díky moc ! <?php $titul_stranky = 'Admin'; include ('./admin-header.php'); require_once ('./admin-menu.php'); ?> <?php // Kam s ním? - Header("Location: insert_car.php?msg=2"); switch (addslashes($_GET["msg"])) { case 1:echo '<div class="msg"><b>VĹŻz byl pĹ™idán do databáze</b></div>'; case 2:echo '<div class="msg"><b>! Nejsou zadány všechny potĹ™ebnĂ© hodnoty !</b></div>'; } if (isset($_POST['send'])) { if (strlen($_POST['name_type']) > 0) { $name_type = stripslashes($_POST['name_type']); } else { // echo '<div class="msg">NenĂ zadán typ vozu</div>'; ... atd. pro všechny pole formuláře .... if ($name_type && $prod_year && $price && $description && $condition && $add_info) { 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) { Header("Location: insert_car.php?msg=1"); exit; } } } ?> <?php require_once ('./insert_car_form.php'); include ('./admin-footer.php'); ?> |
||
Medvídek Profil * |
#2 · Zasláno: 25. 3. 2008, 01:34:46
Zkusil bych break; ;-)
switch (addslashes($_GET["msg"])) { case 1: echo '<div class="msg"><b>Vůz byl přidán do databáze</b></div>'; break; case 2: echo '<div class="msg"><b>! Nejsou zadány všechny potřebné hodnoty !</b></div>'; break; } |
||
Mufna Profil |
#3 · Zasláno: 25. 3. 2008, 01:50:36
Medvídek
Ach jo, no jo .... díky moc ! |
||
Mufna Profil |
#4 · Zasláno: 25. 3. 2008, 18:37:30
Tak jsem si skript upravil a funguje mi, ale pouze na domácím EasyPHP. Takže pokud to přesunu na běžný hosting (kde neznám správce a tudíž nevím, zda mi pomůže, resp. vyhoví), tak mi to je k ničemu. Vím, že se jedná o problém s "headers already sent". Jde to nějak vyřešit ? Zkoušel jsem dát počáteční includované a requirované *.php soubory až na konec, ale pak to má ten háček, že se samozřejmě message objeví úplně nahoře. Já bych tam chtěl mít záhlaví admina a admin-menu. Taky jsem zkoušel pro ty hlášky použít absolutní pozicování v CSS, pak se mi sice zobrazilo záhlaví a menu tak, jak jsem chtěl (tzn úplně nahoře), ale problém nastal v tom, že se mi rozhodil zbytek stránky (formulář). Ten mám udělaný jako vycentrovaný, ale začal se zobrazovat vlevo. A po skončení paty jakoby pokračovalo záhlaví (mám v něm nastavenou jinou barvu než pro obsah admina).
Poradíte mi někdo, jak to upravit, resp. co můžu udělat, pokud bych to chtěl přesunout na běžný (placený) hosting ? Proč to EasyPHP bere a můj test na php5.cz ne ? Předem díky za odpověď ! <?php session_start(); $titul_stranky = 'Admin'; include ('./admin-header.php'); require_once ('./admin-menu.php'); require_once ('./error_handler.php'); if (isset($_POST['send'])) { if (strlen($_POST['name_type']) > 0) { $name_type = stripslashes($_POST['name_type']); } else { // echo '<div class="msg">NenĂ zadán typ vozu</div>'; } if (strlen($_POST['condition']) > 0) { $condition = stripslashes($_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 atd...</div>'; } if (strlen($_POST['description']) > 0) { $description = stripslashes($_POST['description']); } else { // echo '<div class="msg">NenĂ zadán popis</div>'; } if (strlen($_POST['add_info']) > 0) { $add_info = stripslashes($_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) { Header("Location: insert_car.php?msg=1"); exit; } else { require_once ('initdb.php'); $photos = 1; $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) { Header("Location: insert_car.php?msg=2"); exit; } else { Header("Location: insert_car.php?msg=3"); exit; } } } switch (addslashes($_GET["msg"])) { case 1:echo '<div class="msg"><b>! Nejsou zadány všechny potĹ™ebnĂ© hodnoty !</b></div>' ;break; case 2:echo '<div class="msg"><b>VĹŻz byl pĹ™idán do databáze</b></div>';break; case 3:echo '<div class="msg"><b>NezdaĹ™ila se operace s databázĂ - vĹŻz nebyl pĹ™idán</b></div>';break; } ?> <?php require_once ('./insert_car_form.php'); include ('./admin-footer.php'); ?> |
||
Medvídek Profil * |
#5 · Zasláno: 25. 3. 2008, 20:05:26
Onoé je možné, že doma ti to funguje, já sem neměl třeba na profituxu dát session_start klidne do poloviny skriptu a fungovalo to i když se před to již něco vypisovalo.
Problém s "headers already sent" se tu řešil častokrát, dokonce i nedávno, tak zkus kouknout. |
||
BetaCam Profil |
#6 · Zasláno: 26. 3. 2008, 10:31:01
Zkus to nějak takhle
<?php session_start(); $titul_stranky = 'Admin'; if (isset($_POST['send'])) { if (!$name_type || !$prod_year || !$price || !$description || !$condition || !$add_info) { Header("Location: insert_car.php?msg=1"); exit; } else { require_once ('initdb.php'); $photos = 1; $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) { Header("Location: insert_car.php?msg=2"); exit; } else { Header("Location: insert_car.php?msg=3"); exit; } } } include ('./admin-header.php'); require_once ('./admin-menu.php'); require_once ('./error_handler.php'); switch (addslashes($_GET["msg"])) { case 1:echo '<div class="msg"><b>! Nejsou zadány všechny potĹ™ebnĂ© hodnoty !</b></div>' ;break; case 2:echo '<div class="msg"><b>VĹŻz byl pĹ™idán do databáze</b></div>';break; case 3:echo '<div class="msg"><b>NezdaĹ™ila se operace s databázĂ- vĹŻz nebyl pĹ™idán</b></div>';break; } ?> <?php require_once ('./insert_car_form.php'); include ('./admin-footer.php'); ?> |
||
Časová prodleva: 16 let
|
0