Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> JavaScript + okienka
tomasz_po
post
Post #1





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 18.10.2007

Ostrzeżenie: (0%)
-----


  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?
Go to the top of the page
+Quote Post
Cezar708
post
Post #2





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


proponuję do odświerzania użyć:

Kod
window.location.reload()
więcej tu
Go to the top of the page
+Quote Post
tomasz_po
post
Post #3





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 18.10.2007

Ostrzeżenie: (0%)
-----


A moglbys pomoc zmodyfikować ten kod bo zabardzo nie wiem jak to się je.
Go to the top of the page
+Quote Post
Cezar708
post
Post #4





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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

Ten post edytował Cezar708 14.03.2008, 14:16:21
Go to the top of the page
+Quote Post
tomasz_po
post
Post #5





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 18.10.2007

Ostrzeżenie: (0%)
-----


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

Ten post edytował tomasz_po 14.03.2008, 14:39:12
Go to the top of the page
+Quote Post
Cezar708
post
Post #6





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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...
Go to the top of the page
+Quote Post
tomasz_po
post
Post #7





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 18.10.2007

Ostrzeżenie: (0%)
-----


  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
Go to the top of the page
+Quote Post
Cezar708
post
Post #8





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
tomasz_po
post
Post #9





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 18.10.2007

Ostrzeżenie: (0%)
-----


Tak tylko ja klienta wybieram przez pole <select>
Go to the top of the page
+Quote Post
Cezar708
post
Post #10





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 05:33