Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [html, php] Potwierdzenie przed usunięciem
Forum PHP.pl > Forum > Przedszkole
nevar
Chcę aby w skrypcie php przed usunięciem danego rekordu z bazy pojawiło mi się potwierdzenie wykonania tej operacji. Jak to najprościej zrobić??
envp
Możesz napisać sobie klase i użyć funkcji _destruct, która odpala się kiedy obiekt jest usówany...
popo
jezeli chcesz aby user potwierdzil ze napewno chce usunac taki a taki rekord radze stworzyc osobna stronke na ktora przekazujesz id rekordu do skasowania
na stronce wyswietlasz ten rekord i przy pomocy formularza pytasz czy aby napewno jesli user kliknie tak to usuwasz jesli nie to wracasz do strony z ktorej formularz kasowania byl wywolany
mike
~envp kompletnie chyba nie masz pojącia jak działa i do czego służy __destruct()
Jak masz pisać głupoty to nie pisz nic.


~nevar masz zapewne jakiś link/button który nosi znamienitą nazwę "Usuń". Więc masz dwa wyjścia:
1. Możesz dodać potwierdzenie JavaScript przy kliknięciu. Zwykły confirm [OK] [Anuluj]
2. Twój link nie musi od razu prowadzić do usunięcia elementu, możesz wprowadzić pośredni ekran na którym bede dwa linki/przyciski [OK] [Anuluj] Anuluj będzie działał jak powrót, Ok zaprowadzi do właściwej lokalizacji gdze usuniesz element.
nevar
Wygląda to tak:

  1. <?php
  2. print '<input type="button" value="Usuń" onclick="window.location='usun.php?id='.$pytanie['id'].''" />';
  3. ?>


Jak mam teraz tu umieścić to potwierdzenie?
mike
No kurcze, ale trochę samodzielności.
Próbowałeś chociaż coś zrobić?

google.pl :: search :: javascript+confirm

  1. <a href="http://google.pl" onclick="return confirm( 'Are you sure you wish to continue?' );">Chcesz wyświetlić google.pl ?</a>


Przenoszę do Przedszkola.
TomASS
  1. <?
  2. echo '<input type="button" value="Usuń" onClick="if(window.confirm('Czy na pewno usunąć ?')){window.location='usun.php?id='.$pytanie['id'].'';}">';
  3. ?>
nevar
Dzięki TomASS! smile.gif
envp
mike_mech, słucham? Jeżeli uważasz, że tego na obiektach i metodzie _destruct nie da sie rozwiązać to chyba Ty nie masz pojęcia o czym piszesz... Pozdrawiam
devnul
mike_mech wie o czym pisze i tego za pomocą metody _destruct nie da się zrobić! A jeśli jesteś na tyle genialny i twierdzisz inaczej, to udowodnij swoją rację i zaprezentuj taki kod - może wszyscy powinniśmy się od Ciebie uczyć.
envp
  1. <?php
  2. class rekord {
  3. private $hDB;
  4. private $user = 'user';
  5. private $password = 'pass';
  6. private $database = 'baza';
  7. private $yes_delete = false;
  8.  
  9.  
  10. public function _construct($rekord_id) {
  11.  
  12. $this->hDB = mysql_connect("localhost", $this->user, $this->password);
  13. mysql_select_db($this->database);
  14. }
  15.  
  16. public function yes_delete($state) {
  17.  
  18. if($state)
  19. $this->yes_delete = true;
  20. else
  21. $this->yes->delete = false;
  22.  
  23. }
  24.  
  25. public function _destruct() {
  26. if(! $this->yes_delete){
  27. echo "czy napewno usunac ? ";
  28. echo "<a href=\"?act=yes\">Tak</a>";
  29. }
  30.  
  31. else {
  32. $query = "delete from tabela where id=$this->rekord_id";
  33. }
  34. }
  35. }
  36.  
  37.  
  38.  
  39.  
  40.  
  41. $objRekord = new rekord(2);
  42. $act = $_GET['act'];
  43. if($act='yes') $objRekord->yes_delete(true);
  44.  
  45. unset($objRekord);
  46.  
  47. ?>


Proszę...
LBO
O mamusiu, nie pisz takich herezji tutaj. Twój przykład działa, oczywiście, ale jest zupełnie nie w duchu obiektowości. Nie ucz ludzi na forum takich nawyków. Później, gdy poznasz zasady zaawansowanego programowania (np. wzorce) php, wspomnisz moje słowa.

P.S. W dobrym tonie jest używać _destruct do m. in. zamykania połączenia z bazą, unlockowania plików. A w twoim przykładzie równie dobrze, możnaby użyc dodatkowej metody (nawiasem mówiąc: gdzie jest mysql_close?).
envp
Dobra juz dobra snitch.gif
Moze jeszcze leszczem jestem tongue.gif
a tak btw. co jest nie tak ?
luinnar
Całość.
Pisanie takiej kasy mija się z celem. Będziesz usuwał ten rekord po zakończeniu skryptu bo wtedy odpalają się wszystkie destruktory. Niezależnie czy ktoś kliknie anuluj czy zamknie okno.
envp
hm, no racja snitch.gif
devnul
@LBO: mimo iż zgadzam się z Twoją opinią na temat kodu jaki podał envp to jednak to:
Cytat
nawiasem mówiąc: gdzie jest mysql_close?

to już czepianie się, bo "zaawansowane programowanie" wcale nie wymaga zamykania połączenia z bazą danych winksmiley.jpg
LBO
Cytat
"zaawansowane programowanie" wcale nie wymaga zamykania połączenia z bazą danych

To, że zamykanie połączenia z Bazą Danych nie jest wymagane, nie znaczy, że nie powinieneś tego używać. Moim zdaniem takie niuanse świadczą o programiście jak najlepiej.

P.S. Słyszałeś o limitach jednoczesnych połączeń np. mySQL?
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.