dit is mijn home.php


<?php

session_start();

error_reporting(E_ALL);

include('databaseconnectie.php');

echo"<link href='style.css' style='text/css' rel='stylesheet'>
<body>
";

$gebruikersnaam = $_SESSION['gebruikersnaam'];

$gegevens = mysql_query("
SELECT
g.gebruikersnaam,
g.club_id,
g.crew_id,
g.voornaam,
g.achternaam,
g.gebruiker_id,
g.staff_level,
g.site_level,
cr.crew_id,
cr.crew_naam,
cl.club_id,
cl.club_naam
FROM
gebruikers AS g,
crews AS cr,
clubs AS cl
WHERE
g.club_id = cl.club_id AND
g.crew_id = cr.crew_id AND
g.gebruikersnaam = '".$gebruikersnaam."'
")or die(mysql_error());
$res = mysql_fetch_assoc($gegevens);

echo" 
<br>
<table border=0>
<tr><td>$_SESSION[gebruikersnaam]</td><td>
</td></tr>
<tr><td>$res[voornaam]</td><td>
</td></tr>
</table>
";

?>



het enige dat ik te zien krijg is mijn sessie['gebruikersnaam'] , wat ik ook probeer te echo'en
iemand een ideetje?
echo '<br>
<table border="0">
<tr><td>'.$_SESSION['gebruikersnaam'].'</td><td>
</td></tr>
<tr><td>'.$res['voornaam'].'</td><td>
</td></tr>
</table>';
ik wist dat daar iets mis was met die quotes maar als ik die er tussen deed kreeg ik gelijk een Parse Error

hij doet het nog steeds niet en ik krijg ook geen enkele melding
Doe
echo mysql_num_rows($gegevens);
en je ziet of ie iets heeft gevonden.
uhm ik heb zelf wat gevonden,

ik had in de tabel CREWS geen rij die overeen kwam.

maar dat zou betekenen dat elke gebruiker waarvan de g.crew_id of g.club_id NULL is, niets zou zien.

hoe kan ik dat dan oplossen?

SELECT
g.gebruikersnaam,
g.club_id,
g.crew_id,
g.voornaam,
g.achternaam,
g.gebruiker_id,
g.staff_level,
g.site_level,
cr.crew_id,
cr.crew_naam,
cl.club_id,
cl.club_naam
FROM
gebruikers AS g,
crews AS cr,
clubs AS cl
WHERE
(g.club_id = cl.club_id OR g.club=NULL)  AND
(g.crew_id = cr.crew_id  OR g.crew_id=NULL )AND
g.gebruikersnaam = '".$gebruikersnaam."'
")or die(mysql_error());


als ik bij mijn eigen account crew_id en club_id NULL maakt is
mysql_num_rows weer 0 :(
Als ik het goed begrijp wil je alle gegevens van een gebruiker selecteren ongeacht of ze een club_id en/of crew_id hebben. En mochten zo'n id hebben, dan wil je ook de naam van de club of crew hebben?

Dat lijkt me een uitermate geschikt voorbeeld voor een LEFT JOIN. Het is niet getest, maar ik neem aan de volgende query zal werken:

SELECT
	g.gebruikersnaam,
	g.club_id,
	g.crew_id,
	g.voornaam,
	g.achternaam,
	g.gebruiker_id,
	g.staff_level,
	g.site_level,
	cr.crew_id,
	cr.crew_naam,
	cl.club_id,
	cl.club_naam
FROM
	gebruikers AS g
LEFT JOIN crews AS cr
	ON g.crew_id = cr.crew_id
LEFT JOIN clubs AS cl
	ON g.club_id = cl.club_id
WHERE
	g.gebruikersnaam = '".$gebruikersnaam."'


[edit]typo in query[/edit]
klinkt goed, maar wat doet LEFT JOIN precies?

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'LEFT JOIN crews AS cr ON g.crew_id = cr.crew_id LEFT JOIN
Een LEFT JOIN haalt alle resultaten uit de eerste tabel op ook als er geen matches zijn met een 2e tabel. Als er wel matches zijn met de 2e tabel worden ook die gegevens opgehaald, anders wordt er voor die velden NULL teruggegeven. Zie ook de pagina voor wat uitleg over joins.

Wat betreft de error: er stond nog een komma teveel. Aangepast in vorige post.
perfect heel erg bedankt :)

Reageren