Mam plik http://ifotos.pl/zobacz/wygladpli_qnpraqh.jpg i muszę dane wczytać do bazy (tabela testwar, pole wartosc) z tym, że prócz danych z pliku do tabeli testwar powinny też trafić dane z dwóch innych tabel dokładnie id_atrybutu z tabeli atrybut i id_obiektu z tabeli obiekt.
Tabela obiekt i atrybut wyglądają w ten sposób: http://ifotos.pl/zobacz/atrybutob_awnshea.jpg
A w bazie powinno wyglądać to tak http://ifotos.pl/zobacz/wyglad-po_qnhrrss.jpg
Przy id_testwar = 3 id_atrybutu powinno być 3 nie 2.
Do testwar wstawione są wszystkie id_atrybutu (w tym wypadku 4) jakie są w bazie kolejno i one mają dopasowane jedno id_obiektu (4 razy to samo id_obiektu). Potem dla kolejnego wiersza pliku znów wszystkie id_atrybutu 4 kolejno i znowu 4 razy to samo id_obiektu. Nie wiem czy to zrozumiale napisałam.
Jeśli chodzi o dane z pliku górę bez problemu wczytuje do bazy i zapisuje do bazy a od 8 do 13 linijki używam pętli while i „przeskakuje po indexach” żeby wczytywały się wartości do bazy po wierszu, do zrobienia całej reszty zapytania i wstawiania używam zapytania. Fragment kodu wygląda tak:
for($i = 0; $i< $liczba_atrybutow; $i ++) { SELECT atrybut.id_atrybutu, obiekt.id_obiektu, $nazwa_wartosci[$i] FROM atrybut, obiekt WHERE atrybut.tabela_id_tabeli = $tabela_id_tabeli AND obiekt.tabela_id_tabeli = $tabela_id_tabeli limit 1 "); } }
Zapytanie wstawi mi do pola wartosc wartosci od 1, 2,3 aż do 24 tak jak być powinno natomiast przez zastosowanie limit 1 id_atrybutu i id_obiektu zostanie wstawione tylko jedno (pierwsze jakie jest w bazie) dla wszystkich wartości. Znowu jeśli usunę limit 1 to pętla wykona się więcej razy niż powinna i zostanie wstawiona każda liczba p 24 razy i id będą się zmieniać tak jak nie powinny http://ifotos.pl/zobacz/bez-limit_qnhrxrs.jpg
myślałam o tym żeby w zapytaniu dać ORDER BY obiekt.id_obiektu, bo wykonałam takie zapytanie w phpmyadmin do bazy to wyświetliły się id jak powinny, ale niestety to działa bo id będą zmieniać się poprawnie, ale wartości zostaną dodane każda po 24 razy. I analogicznie gdy ustawie limit 1 to wartości zostaną dodane 24 razy tak jak powinny, ale id przestaną się zmieniać jak w przykładzie powyżej.
Nie mam pojęcia jak sobie z tym poradzić i co robię nie tak. Nie wiem czy coś jest nie tak z pętlą, zapytaniem czy i z jednym i z drugim.
Czy mógłby ktoś podsunąć mi jakieś wskazówki, wytknąć błędy, zasugerować co jest źle i jak rozwiązać mój problem ? Była bym niezmiernie wdzięczna jeśli chodzi o programowanie i bazy to ze mnie totalny laik więc męczę się nad tym już jakieś 2 tygodnie i nie umiem wpaść na rozwiązanie.