![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 8.02.2003 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam problem dotyczący aktualizacji mojej bazy danych na podstawie danych z tabeli. Jest taka sytuacja. Mam tablice "$tab" w takiej formie (0=><b>4</b>, 1=><b>3</b>, 2=><b>5</b>).). Mam na podstawie tej tablicy zmienić zawartość tabeli w bazie, która wygląda tak: | id | przed | oc | =========== | 1 | 2 | 23| | 1 | 4 | 1 | | 1 | 3 | 5 | | 2 | 2 | 24| | 2 | 4 | 1 | | 2 | 3 | 5 | | 3 | 2 | 3 | | 3 | 4 | 4| ....itd. Wartości z kolumny "oc" nie grają roli, są one przykładowe. Wartości z tablicy odpowiadają wartościom wiersza "przed" z tabeli. Mam zrobić coś takiego: jeśli dana wartość z tablicy jest w kolumnie "przed" z tabeli to nic nie rób, jeśli wartość z tablicy nie znajduje się w kolumnie "przed" to ją dodaj (razem z odpowiednią wartością "id" i "oc") i najtrudniejsze: jeśli wartość "przed" z tabeli nie ma w tablicy to usuń wiersz zawierający tą wartość. Oczywiście wszystko to dla poszczególnych wartości "id", czyli dla każdego "id" osobno ("id" to np. numer użytkownika). Z przedstawionej wyżej sytuacji mamy zrobić coś takiego: w/g tablicy, wartości 4 i 3 są, w kolumnie "przed", więc nic nie robimy, natomiast 5 nie ma, więc trzeba dodać wiersze w takiej formie: | 1 | 5 | 2 |, | 2 | 5 | 2 |, | 3 | 5 | 2 | I trzecia sprawa, w tablicy nie ma wartości 2, która znajduje się w kolumnie "przed", więc trzeba usunąć ten wiersz. Wypadkowa tabela powinna wyglądać np. tak: | 1 | 5 | 2 | | 1 | 4 | 1 | | 1 | 3 | 5 | | 2 | 5 | 2 | | 2 | 4 | 1 | | 2 | 3 | 5 | | 3 | 5 | 2 | | 3 | 4 | 4| ... Męczę się dziś już cały dzień nad zbudowaniem skryptu, który to wykona. Jeśli komuś znajomy jest ten problem, to proszę o jakieś wskazówki jak to zrobić. Dzięki za przeczytanie tak długiego postu i ewentualną pomoc. Pozdrawiam. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 398 Pomógł: 0 Dołączył: -- Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Najlepiej chyba zbudować sobie 2 tablice o tej samej strukturze - jedna odzwierciedla zapisy w bazie, druga jest tą Twoją tablicą. Potem używasz polecenia array_diff() podając jako argumenty te dwie tablice - zwraca te elementy pierwszej tablicy, których nie ma w drugiej. Potem wywołujesz tę samą funkcję, ale zamieniasz kolejnośc argumentów by dowiedzieć się tym razem, które argumenty są nadmiarowe.
-------------------- cease this long, long rest / wake and risk a foul weakness to live / when it all comes down / watch the smoke and bury the past again / sit and think what will come / raise your fears and cast them all away
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 8.02.2003 Ostrzeżenie: (0%) ![]() ![]() |
Dobry pomysł, czego wcześniej na to nie wpadłem, ale nic, zabieram się do roboty.
Dzięki. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 00:06 |