Problem z pętlą foreach po zapytaniu SQL

0

Witam.

Na forum (Mybb) mam skrypt do uzupełniania wyników w klasyfikacji.
Wszystko działa dobrze, ale teraz pojawiła się potrzeba autozupełniania wyników powyżej 50.

Niestety nie umiem poprawnie wstawić pętli. Próbowałem czytać różne poradniki, próbowac różnych sposobów, ale nie działa.



if($miejsce == 51 ) { 

$q = $db->query("SELECT * FROM manager_lista WHERE idkon = '$zawody_id' AND wynik=0");
while($po50 = $db->fetch_array($q))	
{
$po50['idzaw'] = $zawodnikpo50;

	foreach ($po50['idzaw'] as $zawodnikpo50) {

	$zapytanie88 = "UPDATE manager_lista SET wynik = 1 WHERE idzaw = '$tralalaqq'  AND idkon = '$zawody_id'";
		$wynik88 = mysql_query($zapytanie88);
		$log777 = "INSERT INTO `manager_wyniki`(`id`,`idzaw`,`data`,`cykl`,`skoczniaid`,`skoczniamiasto`,`skoczniahs`,`skoczniakraj`,`zawodnikid`,`miejsce`,`punkty`,`dodajacy`,`sezon`) VALUES ('null','$zawody_id','$zawody_data','$zawody_cykl','$zawody_skocznia','$zawody_miasto','$zawody_hs','$zawody_kraj','$zawodnik_id','51','0','$dodajacy','3')";
$wynik_log77 = mysql_query($log77);

}
}
}

Wyskakuje wiele razy:
Warning [2] Invalid argument supplied for foreach() - Line: 568 - File: dodaj_punkty.php PHP 5.6.40 (Linux)

Próbowałem różnych opcji przy niektórych errora nie było, ale efektu nadal nie widać.

2

Debugj po kolei. Najpierw zobacz czy to zapytanie ci się wykonuje i co zwraca:

var_dump($db->fetch_array($q));

Jak będziesz wiedział co tu jest dokładnie to zastanów się po co przypisujesz tu jakąś zmienną $zawodnikpo50

$po50['idzaw'] = $zawodnikpo50;

Potem w pętli foreach znów używasz tej zmiennej, ale ona powinna być tu lokalna

foreach ($po50['idzaw'] as $zawodnikpo50) { // 

W foreach pierwszy element to tablica ( dla uproszczenia na razie, bo mogą być też obiekty itd.) druga zmienna to lokalna zmienna dla działań wewnątrz bloku pętli zmieniająca wartość z każdą iteracją.

 foreach ( $tablica as $zmiennaDostępnaWCielePetli){
            echo $zmiennaDostępnaWCielePetli;
}
Czyli przy każdym przebiegu pętli ta zmienna ma wartość następnego elementu tablicy.
1

Dzięki za pomoc, otworzyło mi to oczy. ;)

Wystarczyło:

$q = $db->query("SELECT idzaw FROM manager_lista WHERE idkon = '$zawody_id' AND wynik=0");

while($po50 = $db->fetch_array($q))	
{
	foreach ($po50 as $zawodnikpo50) {
....
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1