Problem z pętlą for oraz fetch_row()


(szwabek998) #1

Witam. Mam skrypt PHP, który pobiera id rekordu z tabeli według określonych kryteriów. Następnie zapisuje to id w tablicy. Pętla for ma za zadanie pobrać inne informacje z rekordu o tymże id, lecz pobiera mi tylko ostatni rekord trzy razy (bo tyle elementów zawiera tablica). Id w tablicy są zapisane dobrze bo w pętli dodałem echo, które je wyświetla. I za każdym "okrążeniem" pętli id jest poprawne (za każdym razem inne - czyli dobrze).

$query = "SELECT Data,Trasa FROM Tablica WHERE Id='$a' ";

for($b = 0, $i = count($tablica); $b != $i; $b++){


				$a = $tablica[$b];


				if(!$result = $dbo->query($query)) {

				echo 'Nieudało się wykonać zapytania SQL!';

				$dbo->close();

				exit();

				}


				$row = $result->fetch_row();


				echo "$row[0]$row[1]";				

			}

(ra-v) #2

Nie podałeś całego kodu.

$query = "SELECT Data,Trasa FROM Tablica WHERE Id='$a' ";$result = mysql_query($query);mysql_num_rows($result)0 ){$row = mysql_fetch_assoc($result) ){print_r($row);

(szwabek998) #3

Dlaczego masz takie zdanie o funkcji count() w pętli for (jest ona umieszczona w części pętli wykonywanej tylko przy inicjacji - z tego co wiem :slight_smile: ) ?

Problem rozwiązałem inaczej. W części pierwszej mojego kodu (jej tu nie ma zaraz będzie zmieniona) odpowiedzialnej za wybieranie komórki Id rekordu spełniającego wymagane kryteria dodałem w zapytaniu SELECT Id From ... ,Data,Trasa czyli SELECT ID,Data,Trasa FROM ... - dalej - w pętli while odpowiedzialnej wcześniej za wpisywanie wyniku zapytania SELECT Id ... do tablicy $tablica zmieniłem na wyświetlanie wierszów tabeli, czyli na coś takiego :

$query = "SELECT Id,Data,Trasa FROM Tablica WHERE Id1='$kryt1' OR Id2='$kryt2'";


		if(!$result = $dbo->query($query)) {

		echo 'Nieudało się wykonać zapytania SQL!';

		$dbo->close();

		exit();

		}


		echo '

Tabela HTML| Data | Trasa |
| --- | --- |
| $a | $b |
| --- | --- |

';[/code]

Zostawiłem Id w SELECT'cie bo może mi się przydać w dalszej modyfikacji skryptu :slight_smile:

ra-v jeszcze na studiach mnie nie ma bo muszę liceum/technikum za niedługo wybrać (jeszcze parę miesięcy) :smiley:

Dzięki za szybką odpowiedź :slight_smile: to już chyba 2 czy 3 z twojej strony. Tam w środku swojego kodu masz while co nasunęło mnie na moje rozwiązanie