mysql_fetch_assoc - geen valid MySQL resource

Status
Niet open voor verdere reacties.

Silox

Gebruiker
Lid geworden
6 sep 2006
Berichten
13
Beste Helpmij-ers,

Ik ben op een probleem gestoten bij het ophalen van records uit een database. Ik zit hier al een halfuur op te kijken en begin puntkomma's te zien waar die niet staan, en de haakjes dansen over m'n beeldscherm...

Bij deze roep ik jullie hulp in.

Ik heb een dropdown box die van elke speler de naam selecteert uit een database die vol met dorpen staat. Als de waarde in de box wordt veranderd verschijnt er een tweede dropdown box waar ik de gebruiker laat kiezen tussen de verschillende dorpen van die speler. Dit gebeurt allemaal automatisch via php en wat javascript.

Het probleem is dat hij de query die de dorpjes uit de database haalt niet goed uitvoert.

De code:

PHP:
		<?
		
			echo "Speler: <form><select name=spelers onchange=showUser(this.value)>";
			
			$speler = mysql_query("SELECT * FROM `dorpen` GROUP BY `player`");
			
			while ($spelers = mysql_fetch_assoc($speler)) {
			
				echo "<option value=$spelers[player]>$spelers[player]</option>";
				
			}
			
			echo "</select></form>";
			
			echo "<div id=txtHint><b>Person info will be listed here.</b></div>";
			
		?>

// VIA JS NAAR ANDERE PHP DIE ANDERE DROPDOWN ZOU MOETEN WEERGEVEN

    <?
	$q=$_GET["q"];

	$dorp = mysql_query("SELECT * FROM `dorpen` WHERE `player`='$q'");

	// BIJ HET OUTPUTTEN VAN $q KOMT DE WAARDE IN DE TEXTBOX ER DEFTIG OP

	echo "Dorp: <form><select name=dorpen>";

	while ($dorpen = mysql_fetch_assoc($dorp)) {
	
		echo "<option value=$dorpen[player]>$dorpen[player]</option>";
		
	}
	
	echo "</select></form>";

   ?>

// RESULTAAT: GEEN WAARDEN IN DE TWEEDE DROPDOWN BOX

Hopelijk kunnen jullie mij helpen!

Silox.
 
Laatst bewerkt door een moderator:
Probeer om de option value ook eens aanhalingstekens te zetten, dat wil soms nog wel eens helpen.

HTML:
<option value="sommige waarden werken niet zonder aanhalingstekens">Wat je ziet.</option>

En probeer eens om de functie mysql_error() te outputten nadat je de query aangeroepen hebt, misschien zit er een fout in?
 
Probeer om de option value ook eens aanhalingstekens te zetten, dat wil soms nog wel eens helpen.

HTML:
<option value="sommige waarden werken niet zonder aanhalingstekens">Wat je ziet.</option>

En probeer eens om de functie mysql_error() te outputten nadat je de query aangeroepen hebt, misschien zit er een fout in?

Alvast bedankt voor uw reactie. Ik heb enkele dingen, zoals je hieronder kan zien, getest en geoutput:

Code:
Code:
	$q=$_GET["q"];
	
	echo "q: ". $q ." <br>";
	echo "query: SELECT * FROM `dorpen` WHERE `player` = '$q'";
	
	$dorp = mysql_query("SELECT * FROM `dorpen` WHERE `player` = '$q'");
	
	//echo "Dorp: <form><select name=dorpen>";

	while ($dorpen = mysql_fetch_assoc($dorp)) {
	
		//echo "<option value=$dorpen[vid]>$dorpen[village]</option>";
		echo $dorpen[vid]." ".$dorpen[village];
		
	}
	
	//echo "</select></form>";

Dit geeft een goed resultaat voor $q, alsook voor $query het geeft echter nog steeds een fetch error:

Code:
q: Silox 
query: SELECT * FROM `dorpen` WHERE `player` = 'Silox'
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\Program Files\xampp\htdocs\API\loopafstanddorpen.php on line 12

De queries die ik gebruik gebruikte ik al eerder om die spelerlijst op te roepen, enkel gebonden aan andere variabelen. Ik ben al keer op keer over de code geen gegaan en ik snap echt niet waar het aan kan liggen... 'vid' en 'village' zijn beiden kolommen van de tabel 'dorpen' dus ik zie niet dat er daar iets fout aan zou kunnen zijn... Dan nog zou hij geen fetch error geven.
 
Zet onder deze regel:
PHP:
$dorp = mysql_query("SELECT * FROM `dorpen` WHERE `player` = '$q'");

Ook nog eens dit:
PHP:
var_dump(  mysql_error() );

Dat moet als het goed is een foutmelding opleveren.
 
Ah! Dat deed het hem!

Code:
string(20) "No database selected"

Ik was vergeten op de bladzijde waar m'n JS het script naar stuurde dat in een div geoutput werd m'n config waar mij databaseverbinding in staat te includen.

Heel erg bedankt, het werkt nu!
 
Ja die functie is je vriend :) Eerste wat je moet proberen als je een fout ziet.

Beter nog is om je eigen wrapper functies te schrijven die automatisch controleren of je query gelukt is, en zo niet je de output geven van mysql_error().
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan