Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Uaktualnienie tabeli względem wartości z tablicy
Forum PHP.pl > Forum > PHP
Myrek
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.
dragossani
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.
Myrek
Dobry pomysł, czego wcześniej na to nie wpadłem, ale nic, zabieram się do roboty.
Dzięki.
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.