Autor | Zpráva | ||
---|---|---|---|
Routh Profil * |
#1 · Zasláno: 25. 7. 2009, 00:09:32
Ahoj, už jsem se tu ptal na zápis, editaci a mazání záznamů v DB. Pokročil jsem, že mám vkládaní záznamů pod přihlášením a právy a jednotlivé záznamy mazat, jenže se objevil problém.
Poklud mám tento odkaz, tak ano funguje to, smaže se to, ale já chci aby se to mazalo jakoby v obsahu webu a zobrazilo to do pole kde je obsah hlášku: Záznam byl smazán. news.php - funkční, ale s novou prázdnou stránkou <a href='del_new.php?id=$zaznam[id]' title='smazat'>x</a> ale s touto adresou nastává problém <a href='index.php?s=del_new.php?id=$zaznam[id]' title='smazat'>x</a> S Cargasem jsme to řešili i takto <a href='index.php?s=del_new?&id=$zaznam[id]' title='smazat'>x</a> a také s $_REQUEST ,a le stále to nefunguje. del_new.php include("connect.php"); $zaznam["id"]=intval($_GET['id']); $sql="DELETE FROM news WHERE id='$zaznam[id]'"; MySQL_Query($sql); MySQL_Close($spojeni); Tak se ptám, jak to lze vyřešit ? pokud jde to co chci, nějaké jiné řešení ? nápady. Díky za váš věnovaný čas. |
||
joe Profil |
#2 · Zasláno: 25. 7. 2009, 00:30:21
1. Odkaz nech tak, jako je tento
<a href='del_new.php?id=$zaznam[id]' title='smazat'>x</a> 2. V souboru del_new.php nemáš ověření, že uživatel je přihlášen a může mazat, smazat ti to tedy může kdokoli, kdo uhodne adresu 3. V tom samém soubori si dej před include nastartování sessions - session_start(); a řádek č. 6 změň na if(MySQL_Query($sql)) { $_SESSION['smazano'] = 1; header('Location: index.php'); exit; } 4. Pak v tom indexovém souboru si dej na začátek opět nastartování session a tam kde chceš aby ti to vypsalo, že se provedlo smazání, tak tam napiš <?php if(isset($_SESSION['smazano'] == 1) { echo 'Smazano...'; unset($_SESSION['smazano']; } |
||
Routh Profil * |
#3 · Zasláno: 25. 7. 2009, 00:48:13
Jo díky, jinak to ověření na přihlášení to je jasný, zatím mi šlo jen o funkčnost :-)
|
||
Routh Profil * |
#4 · Zasláno: 25. 7. 2009, 18:38:56
Tak v tom jsou chyby, a když to upravím jen na podmínku, tak po 1 vymazání to píše furt dokud se neodhlásím, protože je to uložené v sessionech, takže to je špatné řešení. Možná to řeší to unset, ale v tom kodu jsou neukončené záborky, a kdžy je ukončim, tak to hází furt chybu.
|
||
joe Profil |
#5 · Zasláno: 25. 7. 2009, 18:45:09
Routh
Chybička se vloudila, má to být samozřejmě takhle if(isset($_SESSION['smazano']) && $_SESSION['smazano'] == 1) { echo 'Smazano...'; unset($_SESSION['smazano']); } |
||
Routh Profil * |
#6 · Zasláno: 25. 7. 2009, 19:44:22
Ono to stejně tímhle řešením nejde, Cargas mi stím proadil aby to fungovalo těmi sessionami,a el pořád je to blbé řešení přes sessiony tak sjem si udělla zkušební stránku
index.php pouze includuje obsah <? session_start(); include("connect.php"); $akce = $_GET['action']; $strana='news'; $invalid = array('\\','/','.'); if ( $_GET['s'] ) $strana = str_replace($invalid, '', $_GET['s']); ?> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title></title> </head> <body> <? if (file_exists($strana.'.php')) { include($strana.'.php'); } else include('news1.php'); ?> </body> </html> news1.php - zobrazují záznamy z DB a nabízí odkaz session_start(); include("connect.php"); $dotaz="SELECT * FROM news ORDER BY datum DESC LIMIT 0, 5"; //vytvoření sql dotazu $vysledek = MySQL_Query($dotaz); // provedení sql dotazu while ($zaznam = MySQL_Fetch_Array($vysledek)){ $autor=$zaznam["autor"]; $datum=$zaznam["datum"]; $nadpis=$zaznam["nadpis"]; $obsah=$zaznam["obsah"]; print "<table cellpadding=\"0\" cellspacing=\"1\" width=\"520px\" border=\"0\" bordercolor=\"#000000\" > <tr> <td> <table cellspacing=\"0\" width=\"520px\" border=\"0\" class=\"news_up\"> <tr bgcolor=\"#444444\" style=\"color: white\"> <td align=\"left\"> ".$nadpis."</td> <td align=\"right\">posted by:".$autor." </td> </tr></table> </td> </tr> <tr bgcolor=\"#555555\" width=\"520px\" style=\"color: white\" class=\"news_obsah\"> <td> ".$obsah." </td> </tr> <tr> <td> <table cellspacing=\"0\" width=\"520px\" border=\"0\" class=\"news_down\"> <tr bgcolor=\"#444444\"> <td align=\"left\"> <a href='upd_new.php?id=$zaznam[id]' title='upravit'>upravit</a> / <a href='index.php?s=news2?&id=$zaznam[id]' title='smazat'>smazat</a></td> <td align=\"right\">".$datum." </td> </tr></table> </td> </tr> </table> <br>\n";} a news2.php co to maže include("connect.php"); $zaznam[id]=$_REQUEST[id] $sql="DELETE FROM news WHERE id=$_REQUEST[id]"; $vysledek = MySQL_Query($sql); MySQL_Close($spojeni); jen né a né načíst tu adresu, jinak s přímou adresou news2.php?id=3 to smazat jde. Našel by jse prosím někdo kdo ví jak na to ? Díky. |
||
BetaCam Profil |
#7 · Zasláno: 26. 7. 2009, 10:03:58
Routh
Zaprvé tento odkaz je špatně <a href='index.php?s=news2?&id=$zaznam[id]' title='smazat'>smazat</a> mělo by tam být neco jako <a href=\"index.php?s=news2?id=".$zaznam['id']."\" title=\"smazat\">smazat</a> navíc místo $zaznam[id] piš $zaznam['id']. ID totiž není konstanta |
||
Routh Profil * |
#8 · Zasláno: 26. 7. 2009, 10:20:23
Tak jsem se vtom včera ještě pohrabal a odkaz je správně takto:
<a href='index.php?s=news2&id=$zaznam[id]' title='smazat'>smazat</a> a ' ' v $zaznam[id] nemají žádný význam, chyba to není, jinak mi to už fajčí, jen ted bych potřeboval helpnout s UPDATE budu mít takovvíto odkaz na stránu která bude do formuláře načítat záznam z DB a následně uloží, jen přesně nevím jak to zakomponovat do sebe, za rady budu vděčný, pokusím se zatím něco dát dohromady. |
||
BetaCam Profil |
#9 · Zasláno: 26. 7. 2009, 10:43:35
Routh
„ ' ' v $zaznam[id] nemají žádný význam, chyba to není“ Koukám že se za ty roky co sem tu nebyl nic nezměnilo. "Chyba" to logicky je ID není konstanta takže to generuje NOTICE. NOTICE bývají nejvíce záludné chyby doporučil bych ti je neignorovat. Vím, že zde na fóru si 98% lidí myslí, že když se chyby potlačí tak sou opravené, ale bohužel to tak není. |
||
Routh Profil * |
#10 · Zasláno: 26. 7. 2009, 11:09:18
No dobře když jsi takej študovanej tak ti tam ty ' ' dam no :-)
|
||
joe Profil |
#11 · Zasláno: 26. 7. 2009, 12:52:08
Routh
„No dobře když jsi takej študovanej tak ti tam ty ' ' dam no :-)“ Děláš to především pro sebe, ne pro nás. „Ono to stejně tímhle řešením nejde...a el pořád je to blbé řešení přes sessiony“ Jde, jen to neumíš. Přes sessions je to nejlepší řešení. „Cargas mi stím proadil aby...“ Chceš radu od nás nebo od Cargase? „a news2.php co to maže“ Dal jsi na radu od BetaCam? Nechal sis vypsat Notice a správně jsi je odstranil, aby se žádné nezobrazovaly? Na tomto řádku máš hned tři chyby. $zaznam[id]=$_REQUEST[id] „jen né a né načíst tu adresu“ Udělej to tak, jak jsem ti napsal a uvědom si, že tady na fóru ti neradí začátečníci jako jsi ty sám, i když jsem se v prvním příspěvku přepsal. BetaCam „Zaprvé tento odkaz je špatně“ Pořád je špatně <a href=\"index.php?s=news2&id=".$zaznam['id']."\" title=\"smazat\">smazat</a> |
||
Routh Profil * |
#12 · Zasláno: 26. 7. 2009, 13:07:22
„Na tomto řádku máš hned tři chyby.
$zaznam[id]=$_REQUEST[id] “ myslíš tím že by to mělo být takhle: ? $zaznam['id']=$_REQUEST['id']; „ Chceš radu od nás nebo od Cargase? “ No on je na ICQ, tak se zeptám hned že, vím že se mi tu hned nevrh 10 programátorů na můj problém, ale je to pořád rychlejší řešení. „Přes sessions je to nejlepší řešení. “ Můžeš mi tedy prosím říct co má zá výhody nebo v čem je lepší používání v tomto příkladu sessiony a ostatní řešení ? |
||
joe Profil |
#13 · Zasláno: 26. 7. 2009, 13:22:48
Routh
„myslíš tím že by to mělo být takhle: ? $zaznam['id']=$_REQUEST['id'];“ Takhle $zaznam['id'] = isset($_REQUEST['id']) ? $_REQUEST['id'] : null; Pokud víš, že budeš číst z adresy, pak použij $_GET, je zbytečné psát $_REQUEST Sessions má ty výhody, že do url nepřidáváš nic, máš stejnou adresu a přesto můžeš libovolnou hlášku zobrazit. |
||
Routh Profil * |
#14 · Zasláno: 26. 7. 2009, 13:30:34
GET jsem zkoušel jako první, ale nefungovalo jak jsem potřeboval.
|
||
panther Profil |
#15 · Zasláno: 26. 7. 2009, 13:32:57
Routh
„GET jsem zkoušel jako první, ale nefungovalo jak jsem potřeboval.“ tak jsi asi zkoušel špatně. |
||
Routh Profil * |
#16 · Zasláno: 26. 7. 2009, 13:39:29
„tak jsi asi zkoušel špatně.“
To bych neřekl, přesný kód mi dal Tiso |
||
Časová prodleva: 15 let
|
0