Autor | Zpráva | ||
---|---|---|---|
gardener Profil |
#1 · Zasláno: 16. 11. 2009, 00:43:29
Zdravím, chtěl bych se zeptat, jak vyřešit situaci kdy:
-Mám výpisy záznamů z db to tabulky -u každého možnost smazání -Po kliku na odkaz smazat zobrazit confirm zprávu uživateli -Po kliku zavolat fci, ktera provede smazani, pokud vrati true tak provede refresh Drive jsem to resil confirmem a pri true jsem zavolal jenom php skript, kam sem predal id zaznamu, to ale uzivtele prenese na stranku se skriptem a to uz bych ted delat nechet:) Diky za kazdou radu |
||
Chamurappi Profil |
#2 · Zasláno: 16. 11. 2009, 01:10:28 · Upravil/a: Chamurappi
Reaguji na gardenera:
Nevím, zda jsem tě správně pochopil, ale můžeš ten odkaz targetem nasměrovat do <iframu> (třeba skrytého). Jinak tedy nevím, s čím bys chtěl při takto nekonkrétním zadání poradit. Uprav si tu svoji JS funkci, o které nevíme vůbec nic a která dělá to, co nechceš, tak, aby dělala to, co chceš. „to uz bych ted delat nechet:)“ Nehet se píše s „h“. Piš prosím s diakritikou. |
||
gardener Profil |
#3 · Zasláno: 16. 11. 2009, 01:44:52
Aha, to s iframem me nenapadlo..ale nicmene to neni presne to co bych chtel.
Mel jsem na mysli neco v tom smyslu, ze se skript provede na 'pozadi', tzn aby uzivatel nebyl presmerovan, pouze informovan o provedeni/neprovedeni operace a refreshnuta stranka : 1function confirmDelete(delId) { function confirmDelete(delId) {
if (confirm("Are you sure you want to delete")) {
document.write(<?php
$result = dibi::query('DELETE FROM [tbl_seminars] WHERE [id]=%i LIMIT 1',$id);
//Jenze php takto proste do JS zapsat nemuzu..
?>)
}
}
</script>
<a href="javascript:confirmDelete(1)">Delete</a> |
||
_es Profil |
#4 · Zasláno: 16. 11. 2009, 02:16:41
gardener:
Ani metódu document.write nie je možné rozumne použiť po procese načítania dokumentu. Najjednoduchšie je to, čo ti radí Chamurappi, hlavný dokument zostane, len sa zmení skrytý iframe. |
||
jksdf Profil |
#5 · Zasláno: 16. 11. 2009, 09:54:31
Mohlo by sa to urobiť tak, že nedáš confirm, ale formulár v HTML. Potom jednoducho by odoslanie bolo action="#" a pri otvorení stránky by php skontrolovalo, či je formulár odoslaný, a ak áno, tak by urobilo vymazanie. Formulár by mohol byť skrytý, a po kliknutí (alebo ako to na stránke je) by sa zobrazil.
|
||
Chamurappi Profil |
#6 · Zasláno: 16. 11. 2009, 10:06:35
Reaguji na gardenera:
„to s iframem me nenapadlo..ale nicmene to neni presne to co bych chtel“ Myslím, že bys to použít mohl, protože stránka načtená do <iframu> může celkem pohodlně komunikovat se svým rodičem, tedy i vyslat zprávu „je smazáno“. Další snadná možnost je vyrobit dynamicky externí <script>: var s = document.createElement("script"); var s = document.createElement("script");
s.src = "adresa-mazaciho-skriptu.php?id=" + id;
document.body.appendChild(s); Reaguji na jksdfa: On asi nechce, aby uživatel opustil aktuální zobrazení stránky, na adrese mu zřejmě tolik nezáleží. |
||
gardener Profil |
#7 · Zasláno: 16. 11. 2009, 15:26:10
Chamurappi ten napad s JS se mi libi, jen mi ale neni jasne, jak bych predal jako parametr id, pokud mam takovyto odkaz?
1<script type="text/javascript"> <script type="text/javascript">
//Delete user
function delete_user(id) {
var s = document.createElement("script");
s.src = "delete_user.php?id=" + id;
document.body.appendChild(s);
}
</script>
<a href="delete_user.php?id=2" title="smazat článek" onclick="delete_user(id)" >Smazat</a> Jedine, co mne napada, je predavat do href, pouze id a to pote predavat jako parametr fci jako this.href Ale nejsem si jisty, jestli je to dobry napad.. |
||
Chamurappi Profil |
#8 · Zasláno: 16. 11. 2009, 15:39:24
Reaguji na gardenera:
„jen mi ale neni jasne, jak bych predal jako parametr id“ Nemůžeš napsat normálně „onclick="delete_user(2)"“? „predavat do href, pouze id a to pote predavat jako parametr fci jako this.href“ Tím myslíš, že bys z hrefu odmazal „delete_user.php?id=“, předal do své funkce this.href, v ní zase zpátky přidal k hrefu „delete_user.php?id=“ a to nastavil do s.src? Vskutku zajímavě vymyšlené. „nejsem si jisty, jestli je to dobry napad“ Není. |
||
gardener Profil |
#9 · Zasláno: 16. 11. 2009, 19:56:32 · Upravil/a: gardener
o.k
Bohuzel se ale deje to, ze jsem vzdy presmerovan na script pro mazani, coz je presne to, cemu jsem se chtel tentokrat vyhnout. Jak tedy vyresit aby se to odehralo na pozadi, aniz by musel byt uzivatel presmerovan? To to vazne pujde jenom framem? Nebo na to musim pouzit AJAX?:) 1<script type="text/javascript"> <script type="text/javascript">
//Delete user
function delete_user(id) {
var s = document.createElement("script");
s.src = "delete_user.php?id=" + id;
document.body.appendChild(s);
}
</script>
<title>Administrace</title>
</head>
<body>
<a href="" title="smazat článek" onclick="delete_user(2)" >Smazat</a> A ve scriptu pro mazani 1<?php <?php
include './libs/nette-0.9-PHP-5.2/Nette/loader.php';
include './db_connect.php';
Debug::enable();
$id_of_user = $_GET["id"];
$result = dibi::query('DELETE FROM [tbl_users] WHERE [id] = %i',$id_of_user);
if($result)
echo "<script>
alert('o.k');
</script>";
else
echo "<script>
alert('n.o');
</script>";
?> |
||
gardener Profil |
#10 · Zasláno: 16. 11. 2009, 20:02:42
Pokud v hraf, neni primo odkaz, tak se volany src ve fci nenacte.
|
||
Chamurappi Profil |
#11 · Zasláno: 16. 11. 2009, 20:11:56
Reaguji na gardenera:
Pokud nechceš odkazovat, nepoužívej odkaz — to je asi ta nejjednodušší rada. Událost onclick přeci funguje na všem, včetně tlačítka, které by možná bylo pro tuto situaci nejlepší. Jinak samozřejmě jde zrušit výchozí akci i u odkazu. „Nebo na to musim pouzit AJAX?:)“ Tohle v podstatě je AJAX. (I když bez XMLHttpRequestu.) |
||
gardener Profil |
#12 · Zasláno: 16. 11. 2009, 20:49:05
Mas pravdu, udelal jsme chybu v ponechani toho odkazu..
Jenze porad tady je problem s tim, ze pokud zavolam pmoci fce ten script pro mazani a ocekavam nejaky alert box se zpravou, o.k , nebo ne, tak se nedočkám i když je SQL dotaz úspěšně proveden.. |
||
Chamurappi Profil |
#13 · Zasláno: 16. 11. 2009, 20:50:32
Reaguji na gardenera:
Prosím o odkaz na živou ukázku. |
||
gardener Profil |
#14 · Zasláno: 16. 11. 2009, 21:00:40
|
||
Chamurappi Profil |
#15 · Zasláno: 16. 11. 2009, 21:03:46
Reaguji na gardenera:
Aha, ty jsi ignoroval, co jsem ti radil v příspěvku [#11]. |
||
gardener Profil |
#16 · Zasláno: 16. 11. 2009, 21:07:32
Ach so, ty jsi myslel odkaz jako cely html tag..ja mel za to, ze jen atribut href ma byt prazdny..
Ale kazdopadne bez pouziti tlacitka by to slo tedy nejak? |
||
Chamurappi Profil |
#17 · Zasláno: 16. 11. 2009, 21:09:55
Reaguji na gardenera:
Ano, jde, viz příspěvek [#11]. |
||
gardener Profil |
#18 · Zasláno: 17. 11. 2009, 15:00:00
To ano, jenže pořád nedostanu výstup o provedení úspěšnosti akce..tzn. například alert(o.k);
|
||
Chamurappi Profil |
#19 · Zasláno: 17. 11. 2009, 15:54:34
Reaguji na gardenera:
Protože odkaz tě odvede na jinou stránku, protože jsi nezrušil jeho výchozí akci — viz příspěvek [#11]. |
||
gardener Profil |
#20 · Zasláno: 17. 11. 2009, 16:34:59
Ale ano, return false; tam je uveden..script se provede..ale ja se uz nedozvim s jakym vysledkem..
Takhle je to správně ne? echo "<td><a href=\"delete_seminars.php?id=".$row->id."\" onclick=\"delete_seminar($row->id);return false;\" title=\"smazat seminář\" >Smazat</td>\n"; echo "<td><a href=\"delete_seminars.php?id=".$row->id."\" onclick=\"delete_seminar($row->id);return false;\" title=\"smazat seminář\" >Smazat</td>\n"; Ono by tedy stejně mělo dojít ke smazání vždy, v tomto případě, ale jistota je jistota |
||
Chamurappi Profil |
#21 · Zasláno: 17. 11. 2009, 16:39:11 · Upravil/a: Chamurappi
Reaguji na gardenera:
Na odkázané stránce nevidím return false. Nemám, co ladit a v čem hledat chybu, když to tam nenahraješ — to je snad jasné, ne? |
||
gardener Profil |
#22 · Zasláno: 17. 11. 2009, 17:10:13
Promin, nahral sem to tam..
|
||
Chamurappi Profil |
#23 · Zasláno: 17. 11. 2009, 17:26:33
|
||
gardener Profil |
#24 · Zasláno: 17. 11. 2009, 17:42:41
Já myslím, že si špatně rozumíme.
Ten reload je tam proto, že jsem chtěl vrátit alert se zprávou ano povedlo, ne nepovedlo. Kdyz je alert zobrazen, beh JS preci nepokracuje ne? Po kliku na alert s vracenou hodnotou by se tedy provedl reload, tak aby se priadne zmeny projevili na vypisu. |
||
Chamurappi Profil |
#25 · Zasláno: 17. 11. 2009, 18:04:32
Reaguji na gardenera:
„Já myslím, že si špatně rozumíme.“ Já myslím, že jsem již řekl vše potřebné, viz [#6], řádek „Výstupem …“. Momentálně je výstupem skriptu http://penzionadler.cz/delete_user.php?id=1 tlupa chybových hlášek. |
||
Časová prodleva: 15 let
|
Toto vlákno je staré, již dlouho do něj nikdo nepřispíval.
Informace a odkazy zde uváděné už nemusejí být aktuální. Nechcete-li řešit zde uvedenou konkrétní otázku, založte si vlastní vlákno, nepište do tohoto. Vložíte-li sem nyní příspěvek, upoutáte pozornost mnoha lidí a někteří z nich si jen kvůli vám přečtou i všechny předcházející příspěvky. Předpokládáte-li, že váš text skutečně bude hodnotný, stiskněte následující tlačítko:
Běda vám, jestli to bude blábol.
0