Beste mensen.

Ik heb het probleem dat wanneer ik een array binnen een while lus update (die de zelfde array gebruikt) de while stopt.

ik heb het tijdelijk verholpen om var namen te wijzigen maar dit vind ik niet netjes...

ik heb het internet al gezocht, maar weet niet echt hoe ik hiernaar moet zoeken.

hier mijn code (hele pagina is erg groot dus alleen een deel)

<?php
	$mysql_result = mysql_query("SELECT name, author, time, id FROM `" . $GLOBAL_mysqltableprefix . "topiclist` WHERE rubriek = '" . $_GET["rubriek"] . "'") or die(mysql_error_report());
	while($topic = mysql_fetch_array($mysql_result)){

	$mysql_result = mysql_query("SELECT id FROM `forum_messagelist` WHERE topic_id = '" . $topic["id"] . "'") or die(mysql_error_report());
		$topic["number"] = mysql_num_rows($mysql_result);

	$mysql_result = mysql_query("SELECT time FROM `forum01_messagelist` WHERE topic_id = '" . $topic["id"] . "' AND time > '" . $_SESSION["olddate"] . "'") or die(mysql_error_report());
$topic["unreadnumber"] = mysql_num_rows($mysql_result);

// rows waar de topics in staan:
echo('
	<tr class="row"
	onClick="document.location=\'' . $topic["id"] . '/\';"
	onmouseover="this.className=\'row_hoverd\';"
	onmouseout="this.className=\'row\';"
	>
	<td class="icon">
');
// controle of het topic unread of read is:
if($topic["unreadnumber"] == null){	echo('<img src="' . $GLOBAL_hostadres . 'resources/icons/pack01/topic_normal_read.gif">'); }
else															{	echo('<img src="' . $GLOBAL_hostadres . 'resources/icons/pack01/topic_normal_unread.gif" alt="' . $topic["unreadnumber"] . '">'); }
// uitspugen van de cellen
echo('
</td>
<td class="other">' . $topic["name"] . '</td>
<td class="other">' . $topic["author"] . '</td>
<td class="aangemaakt_om">' . $topic["time"] . '</td>
<td class="berichten">' . $topic["messagenumber"] . '</td>
</tr>
');

	}


is dit een soort bug, of doe ik iets verkeerd?

mvg
Het lijkt mij juist niet logisch om de variabele $topic ook te gebruiken voor die andere gegevens. Het gaat namelijk om gegevens van andere resultaatsets...

Of dit ook daadwerkelijk de reden is dat je while loop niet meer verder loopt, durf ik niet te zeggen. Maar wat is er op tegen om voor deze waarden gewoon andere variabelen zoals $number en $unreadnumber te gebruiken? Het heeft totaal geen meerwaarde om deze variabelen binnen de array $topic te plaatsen, vooral omdat deze variabele met de volgende loop toch weer opnieuw aangemaakt wordt.
Gebruik niet steeds dezelfde $vars maar noem ze verschillend. Nu worden de vorige steeds overschreven.
Het heeft ook niet een technische reden, maar ik vind het gewoon prettig om alles over een topicrij in 1 array te plaatsen. Vooral omdat er nog code tussen staat die ik niet hem mee gecopyd.

Ik heb getest om de stukken code tussen /* */ te stoppen, toen deed hij het wel gewoon, alleen waren bepaalde vakken leeg...

Ben eig zelf ook wel benieuwd waarom dit überhaupt gebeurd.

@Santhe
welke vars bedoel je?
Je vult $mysql_result met het resultaat van een query.
$mysql_result = mysql_query("SELECT name, author, time, id FROM `" . $GLOBAL_mysqltableprefix . "topiclist` WHERE rubriek = '" . $_GET["rubriek"] . "'") or die(mysql_error_report());

Dan doe je while() met dat resultaat
while($topic = mysql_fetch_array($mysql_result)){

Dan vul je $mysql_result met een andere query
$mysql_result = mysql_query("SELECT id FROM `forum_messagelist` WHERE topic_id = '" . $topic["id"] . "'") or die(mysql_error_report());

En nog eens.
$mysql_result = mysql_query("SELECT

Dus die while() zal echt niet meer goed werken omdat $mysql_result nu iets heel anders bevat. Dat gaat dus echt nooit werken zo.
Whoops, dat was hem dus... :) beetje een dommigheids foutje, sorry hiervoor.

Dacht van $mysql_result word weggewerkt tot array topic dus kon mysql weer worden overgeschreven, niet dus.

bedankt voor de hulp en inzage

mvg

Reageren