Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: JavaScript + okienka
Forum PHP.pl > Forum > Po stronie przeglądarki
tomasz_po
  1. <?php
  2. <script language='JavaScript'>
  3. function Kasuj()
  4. {
  5. if (confirm('Czy na pewno chcesz usunąć klienta: $r2[1]?'))
  6. window.location = 'index.php?p=1&numer=$klient&action=del';
  7. history.go(-1);return ''
  8. }
  9. document.writeln(Kasuj())
  10. </script>"
  11. ?>


Mam o to taki kod po kliknieciu anuluj nic nie robi i bardzo dobrze ale po kliknieciu OK kasuje ładnie rekord tylko że w skrypcie mam nie tylko kasowanie ale też
  1. <?php
  2. header('Location: index.php?p=1');
  3. ?>
czyli odświeżenie by już tego rekordu nie było widać, ale niestety mi to nie działa. Ma ktoś inny pomysł na odświeżenie stronki po kliknieciu OK żeby rekord dalej nie był widoczny?
Cezar708
proponuję do odświerzania użyć:

Kod
window.location.reload()
więcej tu
tomasz_po
A moglbys pomoc zmodyfikować ten kod bo zabardzo nie wiem jak to się je.
Cezar708
Cytat(tomasz_po @ 14.03.2008, 13:47:05 ) *
(..) Ma ktoś inny pomysł na odświeżenie stronki po kliknieciu OK żeby rekord dalej nie był widoczny?


1. chodzi o to, że rekord się kasuje (bo tak sprawdziłeś w bazie danych) a nie widać wyniki kasowania na stronie (pokazuje wszystkie wyniki)?

w takim razie wszystko wskazuje na to, ze przeglądarka scacheowała Ci wyniki, więc na początku skryptu użyj:
  1. <?php
  2. header("Pragma: no-cache");
  3. ?>


2. a może po prostu ni widzisz wyników i może pojawił Ci się błąd w stylu:
Cytat
Header has been sent....
wtedy wiadomo co robić (na forum jest to prawie codziennie poruszane)

3. Ja na Twoim miejscu zrobiłbym tak:

  1. function Kasuj(klient)
  2. {
  3. if (confirm('Czy na pewno chcesz usunąć klienta: $r2[1]?'))
  4. window.location.href = 'index.php?p=1&numer=' + klient + '&action=del';
  5. }
  6. <!-- no i w kodzie html -->
  7. <a href="#" onclick="Kasuj( <tu wstawiasz numer klienta > )"> nazwa klienta 1 </a>
  8. <a href="#" onclick="Kasuj( <tu wstawiasz numer klienta > )"> nazwa klienta 2 </a>
  9. (...)
  10. <a href="#" onclick="Kasuj( <tu wstawiasz numer klienta > )"> nazwa klienta n-tego </a>


oczywiście jeśli Cię nie zrozumiałem to mnie popraw i uświadom.


Pozdrawiam

~EDIT: oczywiście w JS operator konkatenacji to `+` zamiast `.` tongue.gif
tomasz_po
Znaczy na stronie po kliknieciu Usuń, zatwierdzeniu OK i naciśnięciu F5 widać że rekord został usunięty, ale ja chce żeby tylko po kliknięciu Usuń i zatwierdzeniu OK przeładował strone automatycznie.
  1. <?php
  2. header(&#092;"Pragma: no-cache\");
  3. ?>
To nic nie daje
Cezar708
dobra zróbmy tak: wklej mi kod z tym Twoim przyciskiem usuń, oraz z funkcją JS, którą obsługuje (jeśli jest inna niż te Kasuj())

coś mi po prostu nie do końca do tej układanki pasuje...
tomasz_po
  1. <?php
  2. <input type='submit' name='usun' value='Usuń'>
  3. </form>
  4. ?>

To formularz w ktorym jest przycisk

  1. <?php
  2. if (!isset($_POST['usun'])) { }
  3. //Po kliknieciu usuń
  4. elseif (isset($_POST['usun']) && $_POST['klient'] != 0 ) {
  5. $klient = $_POST['klient'];
  6. $q2 = mysql_query('SELECT * FROM customers WHERE id='.$klient.'');
  7. $r2 = mysql_fetch_row($q2);
  8. echo "<script language='JavaScript'>
  9. function Kasuj()
  10. {
  11. if (confirm('Czy na pewno chcesz usunąć klienta: $r2[1]?'))
  12. window.location = 'index.php?p=1&numer=$klient&action=del';
  13. history.go(-1);return ' '
  14. }
  15. document.writeln(Kasuj())
  16. </script>";
  17. }
  18. ?>

To co sie dzieje po kliknieciu przycisku
  1. <?php
  2. elseif ($action == "del") {
  3. $klient = $_GET['numer'];
  4. $query2 = mysql_query('DELETE FROM customers WHERE id='.$klient.'');
  5. header('Location: index.php?p=1');
  6. }
  7. ?>

To jest ten index.php?p=1&numer=$klient&action=del
Cezar708
smile.gif

No to kolego trochę nakręciłeś z tym Twoim kodem:

1. lepiej będzie jeśli trochę zmienisz podejście:

zamiast po kolei pytać sie o każdego użytkownika lepiej wygeneruj sobie checkboksy z ospowiednimi wartościami (zmienna $klient) i wrzuć je to formatki <form>. Następnie w celu usunięcia klientów lepiej jest zrobić tak aby chceckboksami zaznaczać wszystkich tych których chcesz usunąć

2. Wtedy w momencie kliknięcia na usuń (po zaznaczeniu checkboksów) niech system się zapyta, czy "Na pewno usunąć zaznaczonych klientów"

3. Potem po stronie sewera napisz plik akcji (ten od <form action="...">) i tam pobierz wszystkie ID, które należy usunąć i usuń klientów jednym zapytaniem:

Przykład:
  1. <!-- po wygenerowaniu html wyglada mniej więcej tak -->
  2. <script language='JavaScript'>
  3. function potwierdzUsun(elem, msg ){
  4. if ( confirm ( msg ) ) {
  5. elem.form.submit();
  6. return false;
  7. }
  8. }
  9. <form action="usun.php" method="post">
  10. Klient 1 <input type="checkbox" name="klient[]" value="1"><br />
  11. Klient 3 <input type="checkbox" name="klient[]" value="2"><br />
  12. <input type="potwierdzUsun(this, 'czy na pewno chcesz usunać zaznaczonych klientów?')" value=" usun zaznaczonych " />
  13. </form>
  14. Klient 3 <input type="checkbox" name="klient[]" value="3"><br />


a plik usun.php może wyglądać tak:
  1. <?php
  2. $ids = implode(",", $_POST['klient']);
  3. $query2 = mysql_query('DELETE FROM customers WHERE id IN ('.$ids.')');
  4. header('Location: index.php?p=1');
  5. ?>



myślę, że podejście jest bardziej przejrzyste
tomasz_po
Tak tylko ja klienta wybieram przez pole <select>
Cezar708
Cytat(tomasz_po @ 14.03.2008, 15:15:26 ) *
Tak tylko ja klienta wybieram przez pole <select>


czyli mam rozumieć, że na jeden request usuwasz co najwyżej jednego klienta...

no to zrób tak:
  1. <script language='JavaScript'>
  2. function potwierdzUsun(elem, msg ){
  3. var sel = document.getElementById('sel');
  4. var klientName = sel.options[sel.selectedIndex].text;
  5. if ( confirm ( msg + klientName + '?' ) ) {
  6. elem.form.submit();
  7. return false;
  8. }
  9. }
  10. <form action="usun.php" method="post">
  11. <select name='klient' id="sel">
  12. <option value="1">Klient pierwszy</option>
  13. <option value="2">Klient drugi</option>
  14. <option value="3">Klient trzeci</option>
  15. <input type="potwierdzUsun(this, 'czy na pewno chcesz usunać klienta:')" value=" usun zaznaczonych " />
  16. </form>


a potem w pliku akcji zrób tak jak podobnie już miałeś:
  1. <?php
  2. $query2 = mysql_query('DELETE FROM customers WHERE id='.$_POST['klient']);
  3. header('Location: index.php?p=1');
  4. ?>


(oczywiście dobrze będzie jak dodasz zabezpieczenia)

Pozdrawiam
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.