Dzień dobry.
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:

  1. while (($wartosci = fgets($wskaznik)) !== false) {
  2. $nazwa_wartosci = explode(" ", $wartosci);
  3.  
  4. for($i = 0; $i< $liczba_atrybutow; $i ++) {
  5.  
  6. mysql_query ("INSERT INTO testwar (atrybut_id_atrybutu, obiekt_id_obiektu, wartosc)
  7. SELECT atrybut.id_atrybutu, obiekt.id_obiektu, $nazwa_wartosci[$i]
  8. FROM atrybut, obiekt
  9. WHERE atrybut.tabela_id_tabeli = $tabela_id_tabeli AND obiekt.tabela_id_tabeli = $tabela_id_tabeli limit 1 ");
  10. }
  11.  
  12.  
  13. }
  14.  


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.