Archief - PHP: mysql_num_rows(): supplied argument is not a valid MySQL result

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

stoffelke01

Legacy Member
kan iemand me helpen met dit probleem aub?
ik heb de site op mijn eigen pc gerunt endeze werkte perfect, maar nu ik de site op dekadee.be heb geplaatst werkt dit niet meer

PHP:
<table class="list_table">
	<tr>
		<td>Titel</td>
		<td>Playtime</td>
		<td>Genre</td>
	</tr>
<?php
	$db = mysql_connect('localhost', 'dekadee_root', 'Pa$$op');
	mysql_select_db('dvd', $db);
	$query = "select * from lijst order by titel";
	$result = mysql_query($query);
	$num = mysql_num_rows($result);
	mysql_close();
	$i = 0;
	while ($i < $num) {
		print("\t<tr class=\"list_tr\" onclick=\"parent.location='?content=detail&amp;id=" . mysql_result($result, $i, 'id') . "';\" onmouseover=\"this.style.backgroundColor='rgb(220,220,220)';\" onmouseout=\"this.style.background='none';\">\n");
		print("\t\t<td>" . htmlentities(mysql_result($result, $i, 'titel')) . "</td>\n");
		if (mysql_result($result, $i, 'time') == null)
			print("\t\t<td></td>\n");
		else {
			$time = mysql_result($result, $i, 'time');
			$time2 = floor($time / 60) . ":";
			$time = $time % 60;
			if (strlen($time) == 1) $time = 0 . $time;
				$time2 .= $time;
			print("\t\t<td>" . $time2 . "</td>\n");
		}
		print("\t\t<td>" . mysql_result($result, $i, 'genre') . "</td>\n");
		print("\t</tr>\n");
		$i++;
	}                
?>
</table>

dit is de php code
nu heb ik ook gemerkt dat als het probleem van de numrows ok is (door vb. $num = 20; te zetten dan krijg ik foutmeldingen ivm mysql_result...

wat kan hier de fout zijn?

Radiance

Legacy Member
Dat wil zeggen dat de database uw vraag niet verstaat of ze om een andere reden niet wil/kan beantwoorden, hij geeft dus geen geldig resultaat terug.
Waarom kan vele oorzaken hebben, misschien zijn je login gegevens niet correct of bestaat die tabel niet, de SQL code lijkt lijkt mij juist.

Pas de code eens aan tot :
PHP:
$result = mysql_query($query) or die(mysql_error());

stoffelke01

Legacy Member
aha, dom van me :)
ik zou dit moeten weten

het probleem was dus dat er geen database was geselecteert
dit komt omdat het op mijn eigen pc een andere database was :p

bedankt he

stoffelke01

Legacy Member
hm, heb nu nog een bijkomend probleem
elke keer ik een header-functie aanroep (php-functie) krijg ik de fout:
Cannot modify header information - headers already sent by

iemand een idee wat dit kan zijn?

Radiance

Legacy Member
Je moet die eerst doen, dus helemaal bovenaan je PHP file, voor je enige HTML plaatst (pas op, zelfs newlines & spaties voor de <?php tag tellen als output).

stoffelke01

Legacy Member
mja, het probleem is dus dat hij een aantal dingen doet voordat hij weet naar waar hij moet doorhaan...

PHP:
<?php	
	if (isset($action)) {
		if ($action == "yes") {
			$db = mysql_connect('localhost', 'verborgen', 'verborgen');
			mysql_select_db('verborgen', $db);
			$query = "verborgen";
			mysql_query($query);
			mysql_close();
			header("Location: verborgen");
		}
		if ($action == "no") 
			header("Location: verborgen");
	}
	else {

		print("<div class=\"delete\">\n");
		print("\tDelete:\n");
		print("</div>\n");

		print("Are you sure you want to delete:<br />\n");
		$db = mysql_connect('localhost', 'verborgen', 'verborgen');
		mysql_select_db('verborgen', $db);
		$query = "verborgen";
		$result = mysql_query($query);
		mysql_close();
		print("<span class=\"delete_film\">" . mysql_result($result, 0, 'titel') . "</span>\n");
		print("<br /><br /><span class=\"delete_menu\"><a href=\"?content=delete&id=" . $id . "&action=yes\">Yes</a>");
		print(" | <a href=\"?content=delete&id=" . $id . "&action=no\">No</a><span>");
	}
?>

Radiance

Legacy Member
Je mag daar zoveel PHP code voorzetten als je wil natuurlijk, gewoon geen HTML of andere output (echo, print).
Als je er echt niet uitkomt kan je helemaal bovenaan je code ob_start(); zetten en helemaal onderaan ob_end_flush();.

stoffelke01

Legacy Member
is bij dit voorbeeld toch niet gedaan, wat is er dan fout aan dat hij de foutmedling geeft??

stoffelke01

Legacy Member
hm, had niet goed gelezen

wat doet die od_start en doe ob_end_flush juist?
want nuwerkt het
alvast bedankt :)

Legendary d.C.

Legacy Member
stoffelke01 zei:
hm, had niet goed gelezen

wat doet die od_start en doe ob_end_flush juist?
want nuwerkt het
alvast bedankt :)

die ob_start en ob_end_flush bewaren alle output die je code geeft tot helemaal op het laatste, zodat je die foutmelding: 'Header already sent by ...' niet meer krijgt.

maar nu mijn vraag naar radiance, die weet het wel denk ik.

Ik ben een verstokt gebruik van ob_start en ob_end_flush, gewoon omdat dit zo gemakkelijk is, ook al kan ik het makkelijk oplossen zonder die. Maar dat ook nadelen?

Radiance

Legacy Member
Nee, het gebruik van obstructions heeft niet echt nadelen. Ik raad het gewoon meestal af omdat het, zoals hier dus, als lapmiddel gebruikt wordt voor slecht geschreven of ondoordachte code (no offence), los liever het originele probleem op.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan