Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dodawanie do bazy wielu wyników z foreach
Forum PHP.pl > Forum > PHP
kamykthm
Witam,
na wstępi chce zaznaczyć, że cały czas się ucze php, więc prosił bym o wyrozumiałość..

Tera do rzeczy, pobieram sobie json'em dane, sporo danych.. czasem jest wyników ponad 100:

  1. $user_groups = json_decode(file_get_contents($graph_groups));
  2. foreach ($user_groups->data as $gp) {
  3. $grup_id = $gp->name;
  4. $grup_name = $gp->id;
  5. $grup_admin = $gp->administrator;
  6.  
  7. }


Wszysto mi wyśwetla ładnie i tak jak chce, lecz problem się pojawia gdy chce dodawać do bazy, albo mi dodaje pierwszy wynik, albo ostatni. Kombinowałem też z foreach i while, ale to samo, albo pierwszy wynik mi dodaje, albo ostatni.
Kod dodawania do bazy:

  1. $check_gr = mysql_query("select * FROM user_groups");
  2. $check_gr = mysql_num_rows($check_gr);
  3.  
  4. if (empty($check_gr)) {
  5. $query_groups = "INSERT INTO user_groups (fid,grup_id,grup_name,grup_admin) VALUES ('$fid','$grup_id','$grup_name','$grup_admin')";
  6. mysql_query($query_groups);
  7. }


Będę mega wdzięczny za rozwiąznie problemu.
nospor
Kod dodajacy do bazy musi byc w petli, ktora pobiera dane a nie poza nia.... to chyba dosc oczywiste
kamykthm
Cytat(nospor @ 26.08.2013, 15:57:56 ) *
Kod dodajacy do bazy musi byc w petli, ktora pobiera dane a nie poza nia.... to chyba dosc oczywiste

Jasna sprawa, ale celowo 'rozdzieliłem kod'. Teraz mi dodaje, tylko że mi powiela wyniki i mi dodaje kilkanaście razy to samo.
  1. foreach ($user_groups->data as $gp) {
  2. $grup_id = $gp->name;
  3. $grup_name = $gp->id;
  4. $grup_admin = $gp->administrator;
  5.  
  6. $query_groups = "INSERT INTO user_groups (fid,grup_id,grup_name,grup_admin) VALUES ('$fid','$grup_id','$grup_name','$grup_admin')";
  7. mysql_query($query_groups);
  8.  
  9. }
nospor
Cytat
Jasna sprawa, ale celowo 'rozdzieliłem kod'
To nie rozdzielaj bo skad niby mamy wiedziec na jakim faktycznie kodzie pracujesz i jaki jest ostateczny blad...

Cytat
Teraz mi dodaje, tylko że mi powiela wyniki i mi dodaje kilkanaście razy to samo.
Widac kilkanascie razy to samo zwraca ci petla. Chyba ze znowu kod zatailes przed nami.

  1. foreach ($user_groups->data as $gp) {
  2. print_r($gp); //DODAJ TO TU
  3. $grup_id = $gp->name;
  4.  
  5. $grup_name = $gp->id;
  6.  
  7. $grup_admin = $gp->administrator;
  8.  
  9.  
  10.  
  11. $query_groups = "INSERT INTO user_groups (fid,grup_id,grup_name,grup_admin) VALUES ('$fid','$grup_id','$grup_name','$grup_admin')";
  12.  
  13. mysql_query($query_groups);

Dodaj to print_r i pokaz co wyswietla
kamykthm
print_r daje to:
  1. stdClass Object ( [name] => AAA [unread] => 6 [bookmark_order] => 5 [id] => 111 )
  2. stdClass Object ( [name] => BBB [unread] => 5 [bookmark_order] => 7 [id] => 222 )
  3. stdClass Object ( [name] => CCC [administrator] => 1 [bookmark_order] => 3 [id] => 333 )
  4. stdClass Object ( [name] => DDD [administrator] => 1 [bookmark_order] => 1 [id] => 444 )
  5. stdClass Object ( [name] => EEE [unread] => 25 [bookmark_order] => 4 [id] => 555 )
  6. stdClass Object ( [name] => FFF [unread] => 25 [bookmark_order] => 9 [id] => 666 )
  7. stdClass Object ( [name] => GGG [unread] => 25 [bookmark_order] => 6 [id] => 777 )
  8. stdClass Object ( [name] => HHH [unread] => 2 [bookmark_order] => 8 [id] => 888 )
  9. stdClass Object ( [name] => III [administrator] => 1 [bookmark_order] => 2 [id] => 999 )
nospor
A do bazy dodaje sie kilkanascie AAAA i ani jednego BBBB ? Cos krecisz wink.gif
kamykthm
Nic nie kręce, tylko może nie zrozumiełeś zdania lub ja zamieszałem. Dodaje mi wszystko po cztery razy:

Tu był screeen, ale się zbył facepalmxd.gif
nospor
A widzisz, znaczy, ze odpalasz ten kod poczwornie smile.gif Same z siebie kody takich rzeczy nie robią.
kamykthm
Odpalam go tak:

  1. $user_groups = json_decode(file_get_contents($graph_groups));
  2.  
  3. foreach ($user_groups->data as $gp) {
  4.  
  5.  
  6. $grup_id = $gp->id;
  7. $grup_name = $gp->name;
  8. $grup_admin = $gp->administrator;
  9.  
  10. $query_groups = "INSERT INTO user_groups (fid,grup_id,grup_name,grup_admin) VALUES ('$fid','$grup_id','$grup_name','$grup_admin')";
  11. mysql_query($query_groups);
  12.  
  13.  
  14. }


fid pobiera mi z innego kodu
nospor
1) Albo odpalasz to w jakiejs petli
2) Albo kilka razy w roznych plikach
3) Albo uzywasz mod rewrite i odpalasz w przegladarce przez nieistniejace pliki np. favicon, i nawet o tym nie wiesz
Wiec sprawdz, bo innej przyczyny nie ma
kamykthm
Masz racje, zapętliłem php'a trochę... w inny miejscu wink.gif Dzieki!
nospor
Za kazdym razem w takim przypadku jest tak samo:
najpierw sie zarzekaja ze nie robia tego kodu kilkukrotnie, ale setnym razem jak powiesz ze jednak robia, to dopiero wtedy sprawdzaja i sie okazuje ze faktycznie robia....
Musze se zapisywac takie tematy i na dawac je gdy ktos zacznie sie tylko zarzekac ze robi kod tylko raz a dane do bazy magicznie same sie dodaja.
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.