Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Uaktualnienie tabeli względem wartości z tablicy
Myrek
post
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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
dragossani
post
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
Go to the top of the page
+Quote Post
Myrek
post
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.
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: 20.08.2025 - 00:06