Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: confirm w php
Forum PHP.pl > Forum > Przedszkole
mpps
cześć,
potrzebuję rozbudować skrypt o tzw. confirm, czyli funkcję umożliwiającą użytkownikowi potwierdzenie wykonania danej operacji - konkretnie usunięcia rekordu z bazy danych.
oto kod:

plik index.php:
  1. <?php
  2. switch ($action){
  3. case "del" : include("del.inc.php"); break;
  4. default : include("default.inc.php"); break;
  5. ?>


plik default.inc.php:
  1. <?php
  2. print ("<A HREF='index.php?action=del&id=$rek[0]'>skasuj</A>");
  3. ?>


plik del.inc.php
  1. <?php
  2. if ($action == "del"){
  3. mysql_query("DELETE FROM baza WHERE id='$id'");
  4. }
  5. ?>


i pytanie:
jak na początku postu...
próbowałem z "onclick", ale bez względu na to, co kliknąłem, rekord był usuwany - to jest akurat logiczne (ponieważ "confirm" pojawiał się już po wysłaniu danych), tylko jak zrobić, żeby po kliknięciu "cancel" czy "anuluj" rekord nie został usunięty?
wydaje mi się, że powinienem wstawić zmienną w <A HERF='index.php?action=$tu_zmienna'>skasuj</A> ale jak podpiąć do tego confirm?

łatwe to... syna bym spytał ale śpi już biedactwo, bo poprzedniej nocy nie dał staremu pospać, a stary dzisiaj przez to jakieś trzaski ma... winksmiley.jpg

pomóżcie Dobrzy Ludzie
Lechu
Moze cos takiego:

Kod
onclick="if(conf('Pytanie')) { document.nazwa_formularza.submit() }"


action i id mozesz wtedy przeslac jako ukryte inputy
mpps
@Lechu, Twoje rozwiązanie jest na pewno dobre ale (chyba) w tym przypadku nie da się tego zastosować.
próbowałem podobnie ale z document.location.href...
thnx mimo wszystko!
problem częściowo rozwiązałem.
oto kod:

plik index.php:
  1. <?php
  2. switch ($action){
  3.     case "del" : include("del.inc.php"); break;
  4.     default : include("default.inc.php"); break;
  5. ?>


plik default.inc.php:
  1. <?php
  2. print ("<A HREF='index.php?action=del&id=$rek[0]'>skasuj</A>");
  3. ?>


plik del.inc.php
  1. <?php
  2. if ($action == "del"){
  3. if ($confirm=="yes"){
  4. mysql_query("DELETE FROM baza WHERE id='$id'");
  5. }
  6. elseif ($confirm=="no"){
  7. //powrót do wyświetlania bazy
  8. }
  9. else{
  10. echo "<A HREF="index.php?action=del&id=$id&confirm=yes">potwierdź usunięcie rekordu</A>";
  11. echo "<A HREF="index.php?action=del&id=$id&confirm=no">zrezygnuj z usunięcia rekordu</A>";
  12. }
  13. }
  14. ?>


pisałem, że łatwe to... ale jak zastosować do tego confirm (w pliku default.inc.php zapewne) zamiast tego rozwiązania (w pliku del.inc.php)?
MrMag
u mnie to wyglada tak:

  1. <script type="text/javascript">
  2. function del(nr)
  3. {
  4. var zm = confirm('Czy na pewno chcesz skasować ten news?');
  5. if(zm == 1) window.location.href='?id=admin&sekcja=news&akcja=skasuj&nr='+nr;
  6. }


i wywolanie

  1. <a href="javascript:del({$lista[0]})">DEL</a>


czyli sprawdzenie czy chcesz cos skasowac na pewno jest przed wywolaniem switcha a nie w jego trakcie.

a u ciebie moze nie dzialac dlatego, bo uzywasz $confirm a nie $_GET["confirm"] ale nie wnikam w to twoje rozwiazanie bo uzywam swojego winksmiley.jpg
mpps
bravo @MrMag bravo!

to jest to, czego szukałem!!

dziękuję Ci za znalezienie alternatywnego rozwiązania, choć zdecydowałem się zostać przy swoim - mogę dzięki niemu wyświetlić dany (usuwany) rekord po to, żeby usuwający mógł jeszcze raz spojrzeć na niego i wtedy potwierdzić chęć usunięcia lub zrezygnować - niby nie potrzebne, a jednak znając niechlujstwo użytkowników - czasami konieczne (może jeszcze na koniec dodam confirm... żartowałem winksmiley.jpg )

pozdrawiam
m
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.