Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]usuwanie i aktualizacja (checkbox )
majsterpstryk
post
Post #1





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 27.05.2010

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


Mam formularz w Moje konto z lista moich rezerwacji i te ktore pozaznaczam po wyslaniu Usun usuwa mi z bazy a chcialbym dodatkowo dopisac do tego ze jesli usunie mi jakas rezerwacje to sprawdzi dodatkowo czy istanieja takie same gdzie status jest Wait a nie ok i jesli bedzie wait to da OK tej o nizszym ID_rezerwacja

ID_rezerwacja ID_sala ID_uzytkownik data_rez od_godz do_godz nr_sali status





  1. if(isset($_POST['Usun']))
  2. {
  3. if (!empty($_POST['idsala'])){
  4. $sql = 'delete from rezerwacja where ID_rezerwacja in ('.implode(',',$_POST['idsala']).')';
  5.  
  6. }
  7.  
  8.  
  9.  
  10.  
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
Daiquiri
post
Post #2





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




Musisz dopisać coś w tym guście (pseudokod):
Kod
if (usunięto pozycję z bazy) {
  while(istnieje pozycja taka jak wyżej gdzie status = "Wait")
    mysql_query(UPDATE tę pozycję aby status = "ok");
}

Jeżeli dobrze Cię rozumiem to tak powinno to wyglądać. I tak na marginesie staraj się korzystać z przecinków, bo ciężko się czyta Twój post smile.gif.

Ten post edytował Daiquiri 1.10.2010, 09:42:38
Go to the top of the page
+Quote Post
majsterpstryk
post
Post #3





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 27.05.2010

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


spoko ale możesz jaśniej napisać jak sprecyzowac ten warunek jeśli usunięto ?
Go to the top of the page
+Quote Post
lord2105
post
Post #4





Grupa: Zarejestrowani
Postów: 380
Pomógł: 59
Dołączył: 24.04.2010
Skąd: London

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


  1.  
  2. if(isset($_POST['Usun']))
  3. {
  4. if (!empty($_POST['idsala'])){
  5. $sql = 'delete from rezerwacja where ID_rezerwacja in ('.implode(',',$_POST['idsala']).')';
  6.  
  7. if (mysql_query($sql)) {
  8. //tu jedziesz dalej tongue.gif
  9. }
  10. }
  11.  
  12.  


--------------------
40% rozwiązań znajduje się tutaj.
59,9% tutaj.

Jeśli pomogłem rozwiązać Twój problem wciśnij
Go to the top of the page
+Quote Post
majsterpstryk
post
Post #5





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 27.05.2010

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


tego while dalej nie moge ogarnac tongue.gif
Go to the top of the page
+Quote Post
lord2105
post
Post #6





Grupa: Zarejestrowani
Postów: 380
Pomógł: 59
Dołączył: 24.04.2010
Skąd: London

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


Cytat
e jesli usunie mi jakas rezerwacje to sprawdzi dodatkowo czy istanieja takie same gdzie status jest Wait


yyy... takie same? znaczy jakie?


--------------------
40% rozwiązań znajduje się tutaj.
59,9% tutaj.

Jeśli pomogłem rozwiązać Twój problem wciśnij
Go to the top of the page
+Quote Post
majsterpstryk
post
Post #7





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 27.05.2010

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


na dany dzien i dana h moze byc kilka zgloszonych rezerwacji z tym ze roznia sie ID_rezerwacja ID_uzytkownik oraz Status , jesli sa 4 osoby chetne to ta o mniejszym id_rezerwacja ma status OK a pozstale Wait jesli usune ta z OK to druga osoba w kolejce ma przeskoczyc na status OK.
Go to the top of the page
+Quote Post
lord2105
post
Post #8





Grupa: Zarejestrowani
Postów: 380
Pomógł: 59
Dołączył: 24.04.2010
Skąd: London

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


  1. if(isset($_POST['Usun']))
  2. {
  3. if (!empty($_POST['idsala'])){
  4. $sql = 'delete from rezerwacja where ID_rezerwacja in ('.$tab = implode(',',$_POST['idsala']).')';
  5.  
  6. if (mysql_query($sql)) {
  7. foreach ($tab as $v) {
  8. $sql2 = "UPDATE rezerwacja SET status = 'OK' WHERE ID_rezerwacja > $v ORDER BY ID_rezerwacja ASC LIMIT 1";
  9. }
  10. }
  11. }
  12.  

Pisane na szybko z palca, ale powinno Ci zobrazować.

Pozdrawiam

Ten post edytował lord2105 1.10.2010, 11:04:38


--------------------
40% rozwiązań znajduje się tutaj.
59,9% tutaj.

Jeśli pomogłem rozwiązać Twój problem wciśnij
Go to the top of the page
+Quote Post
Daiquiri
post
Post #9





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




while - w moim przykładzie: rób coś dopóki warunek jest spełniony. Innymi słowy (pseudokod):
Kod
while(SELECT * FROM rezerwacje WHERE status = "Wait") { // dopóki istnieją pozycje, które mają w statusie "wait" (możesz oczywiście dodać jeszcze inne warunki)
   mysql_query(UPDATE ....);  //wykonuj UPDATE tych pozycji zamieniając status z "wait" na OK
}


@lord2105
Nie proponowałam "przelecenia" wszystkich rekordów, które mają wait, tylko tych które spełniają wszystkie warunki rekordu usuniętego + wait.

Ten post edytował Daiquiri 1.10.2010, 12:01:01
Go to the top of the page
+Quote Post
lord2105
post
Post #10





Grupa: Zarejestrowani
Postów: 380
Pomógł: 59
Dołączył: 24.04.2010
Skąd: London

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


@Daiquiri powiedz mi po co ma lecieć wszystkie rekordy które mają wait jak on chce zmienic na OK tylko ten który jest większy od usuniętego?


--------------------
40% rozwiązań znajduje się tutaj.
59,9% tutaj.

Jeśli pomogłem rozwiązać Twój problem wciśnij
Go to the top of the page
+Quote Post
majsterpstryk
post
Post #11





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 27.05.2010

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


troche nie tak , trzeba jeszcze sprawdzic czy istenieje kilka takich rezerwacji bo chechkbox wyswietla tylko moje jak usunie to na koncie drugiego uzytkownika tam gdzie bylo wait zmienia sie na ok
Go to the top of the page
+Quote Post
Daiquiri
post
Post #12





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




Istnieje tylko jedna pozycja, która spełnia ten warunek? Tj. jak ja usuwam swoją pozycję to u innego użytkownika "wait" ma się zamienić na "OK" i taka pozycja jest tylko jedna (ta z "wait")? Jeżeli tak to wystarczy sprawdzić czy istnieje rekord o parametrach tego usuniętego, który ma status ustawiony na "wait" i wtedy zrobić update. Jeżeli pozycji jest kilka i wszystkie mają być zamienione to pozostaje Ci jakiś rodzaj pętli smile.gif.
Go to the top of the page
+Quote Post
majsterpstryk
post
Post #13





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 27.05.2010

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


o to chodzi , tylko nie wiem jak to uchwycic ze ma parametry tego usunietego , mozesz mi to rozpisac ?
Go to the top of the page
+Quote Post
Daiquiri
post
Post #14





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




Jeżeli masz
Kod
"DELETE FROM rezerwacje WHERE numer_rezerwacji = '123' AND status = 'ok'"
to szukasz pozycji, która ma ten sam numer rezerwacji, ale status 'wait', czyli:
Kod
"UPDATE rezerwacje SET status = 'ok' WHERE numer_rezerwacji = '123'"
Tak by to mniej więcej wyglądało w pseudokodzie smile.gif.

Ten post edytował Daiquiri 1.10.2010, 12:26:04
Go to the top of the page
+Quote Post
majsterpstryk
post
Post #15





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 27.05.2010

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


inny nr rezerwacji :s


ID_rezerwacja ID_sala ID_uzytkownik data_rez od_godz do_godz nr_sali status
465 1 3 2010-10-30 07:00:00 01:45:00 1 Wait
464 1 4 2010-10-30 07:00:00 01:45:00 1 OK
Jak widzisz sa to rezerwacje na ten sam dzien i godzine
Uzytkownik o id 4 pierwsyz zarezerowal i ma dlatego OK
Jesli w swoim koncie usunie ta rezerwacje to na koncie uzytkownika ID 3 zmieni sie status z wait na ok
Go to the top of the page
+Quote Post
Daiquiri
post
Post #16





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




Jeżeli ID do update'u jest zawsze jeden mniejsze to zrób UPDATE WHERE ID_rezerwacja = ID tego usuniętego -1 smile.gif. Jeżeli nie, to pobierz dane z pozycji, którą usuwasz do zmiennych np. $ID_sala, $data_rez i tak dalej, a potem wysyłasz aktualizację (oczywiście pseudokod):
Cytat
"UPDATE rezerwacje SET status = 'ok' WHERE ID_sala = '$ID_sala' AND data_rez = '$data_rez' ";

gdzie $ID_sala i $data_rez to dane wyciągnięte z usuniętej pozycji.

Ten post edytował Daiquiri 1.10.2010, 13:05:42
Go to the top of the page
+Quote Post
majsterpstryk
post
Post #17





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 27.05.2010

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


dalej nie ogarniasz smile.gif , nie zawsze jest kilka rezerwacji na ten sam dzien i godzine , dlatego potrzebuje sie dowiedziec jak napisac warunek sprawdzajacy czy sa inne takie rezerwacje przy usuwaniu

rez1 zaznaczone
rez2
rez3 zaznaczone

usun

jak wcisne usun, usuwa mi zaznaczone , np usunie rez1 i sprawdzi czy nie istnieja inne takie same rezerwacje jesli tak to tej o nizszym id_rezerwacja w statusie da z wait na OK , czy teraz czaisz ?
Go to the top of the page
+Quote Post
Daiquiri
post
Post #18





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




Chcesz to zrobić bezpośrednio w miejscu gdzie robisz "DELETE"? Nie bardzo widzę jak smile.gif. Najpierw usuwasz, potem sprawdzasz czy jest pozycja podobna i dopiero potem update. Jeżeli masz kilka pozycji do usunięcia całość wrzucasz w dodatkową pętlę (pseudokod):
Kod
while(są pozycje do usunięcia) {
  mysql_query (SELECT * FROM rezerwacje WHERE...); //pobierasz wszystkie dane dotyczące pozycji, którą chcesz usunąć np. do tablicy $usuwanaRezerwacja[]
  mysql_query (DELETE FROM rezerwacje WHERE ID_rezerwacja = '1234'); // usuwasz pozycję z checkboxa wg dowolnych warunków

  if (istnieje pozycja pobierana zapytaniem "SELECT * FROM rezerwacje WHERE ID_sala = '$usuwanaRezerwacja[0]' AND data_rez = '$usuwanaRezerwacja[1] ";) {
    // powyzejwstawiasz dowolną ilość warunków, które będą identyfikować zmienną
     mysql_query(UPDATE rezerwacje SET status = 'ok' WHERE ID_sala = '$usuwanaRezerwacja[0]' AND data_rez = '$usuwanaRezerwacja[1]' ";
  }
}// koniec głównego while

Jeżeli chcesz się upewnić, że zmieni Ci pierwszą po usuwanym rekordzie rezerwację ze statusem "wait", dodaj po prostu sortowanie po ID_rezerwacji do zapytania)

Ten post edytował Daiquiri 1.10.2010, 13:38:32
Go to the top of the page
+Quote Post
lord2105
post
Post #19





Grupa: Zarejestrowani
Postów: 380
Pomógł: 59
Dołączył: 24.04.2010
Skąd: London

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


  1. if(isset($_POST['Usun']))
  2. {
  3. if (!empty($_POST['idsala'])){
  4. $sql = 'delete from rezerwacja where ID_rezerwacja in ('.$tab = implode(',',$_POST['idsala']).')';//tworzy tablice z id
  5.  
  6. if (mysql_query($sql)) {//jezeli usuniete
  7. foreach ($tab as $v) {przelec tablice z id
  8. $sql2 = "UPDATE rezerwacja SET status = 'OK' WHERE ID_rezerwacja > '".$v."' ORDER BY ID_rezerwacja ASC LIMIT 1";sprawdz id wieksze od usunietych i ustaw 1 napotkane na ok
  9. mysql_query($sql2) or die (mysql_error());// no o tym zapomnialem
  10. }
  11. }
  12. }
  13.  
  14.  


Czy rozumiesz ten kod @majsterpstryk W czym problem?

Ten post edytował lord2105 1.10.2010, 15:03:50


--------------------
40% rozwiązań znajduje się tutaj.
59,9% tutaj.

Jeśli pomogłem rozwiązać Twój problem wciśnij
Go to the top of the page
+Quote Post
majsterpstryk
post
Post #20





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 27.05.2010

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


  1. Warning: Invalid argument supplied for foreach() in F:\xampp-win32-1.7.2\xampp\htdocs\moje.php on line 63
  2.  
  3. 63:foreach ($tab as $v) {
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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 - 04:13