<?php
if($_GET['id']){
//GroepenQUERY TOON ALLES, waar alleen de geactiveerde (LIVE) groepen worden getoond
$query = "SELECT
Groepen.GroepID,
Groepen.Naam,
Groepen.Inschrijfdatum,
Student.StudentID,
Student.Naam AS StudentNaam,
Student.Email AS StudentEmail,
Student.Status,
Student.Studentnummer,
Student.Geactiveerd,
Student.GroepID,
Docent.DocentID,
Docent.Naam AS DocentNaam,
Docent.Email,
Docent.GroepID,
FROM
Groepen,
Student,
Docent,
WHERE
Groepen.GroepID = Docent.GroepID
AND
Groepen.GroepID = Student.GroepID
AND
Groepen.GroepID = '".mysql_real_escape_string($_GET['id'])."'
AND
Groepen.Live = 1";

$result = mysql_query($query) or die(mysql_error());
if(mysql_num_rows($result) == 1){
$record = mysql_fetch_assoc($result);

//Zorgen dat er 2 of meer docenten aan een groep worden gekoppeld
$query = "SELECT
Docent.Naam AS DocentNaam
FROM
Docent,
GroepDocenten
WHERE
GroepDocenten.DocentID = Docent.DocentID
AND
GroepDocenten.GroepID = '".mysql_real_escape_string($_GET['id'])."'";

$result = mysql_query($query) or die(mysql_error());
$docentenArray = array();
while($recordDocent = mysql_fetch_assoc($result)){
$docentenArray[] = $recordDocent['DocentNaam'];
}

//pagina waar specifieke opdracht wordt getoond
$html = '
<h2>Groep</h2>
<ul>
<li class="red">'.$record['Naam'].'</li>
</ul>
';
}
else {
$html = '<strong>De opgevraagde groepenlijst bestaat niet meer..</strong>';
}
}

//nog uitleg geven
else {
$query = 'SELECT
Groepen.GroepID,
Student.Naam AS StudentNaam
FROM
Groepen,
Student
WHERE
StudentNaam = '.$_SESSION['logged_in'];
$result = mysql_query($query);

// Groepenlijstoverzicht tabel
while($record = mysql_fetch_assoc($result)){
$groepID = $record['GroepID'];
}

$query = 'SELECT
Groepen.GroepID,
Groepen.Naam,
Groepen.Inschijfdatum
FROM
Groepen
WHERE
Groepen.GroepID = Docent.GroepID
AND
Groepen.GroepID = Student.GroepID
AND
Groepen.GroepID = '.$groepID;

$result = mysql_query($query) or die(mysql_error());

$html = '<h2>Groepenlijst</h2>
<table border="1" cellpadding="2" cellspacing="2"><tr class="red">
<td>#</td>
<td>Groepnaam</td>
<td>Einde inschrijfdatum</td>
<td>Link</td>
</tr>';
while($record = mysql_fetch_assoc($result)){
$html .= '
<tr>
<td>'.$record['GroepID'].'</td>
<td>'.$record['Naam'].'</td>
<td>'.$record['Inschrijfdatum'].'</td>
<td><a href="studenten_overzicht&id='.$record['GroepID'].'">Link</a></td>
</tr>';
}
$html .= '</table>';
}
?>

[size=xsmall]Toevoeging op 16/06/2013 13:57:48:[/size]

Ik heb momenteel een website voor studenten om zich in te schrijven voor casegroepen. Momenteel heb ik een oude code gebruikt en deze aangepast naar mijn huidige database. Echter krijg ik het niet voor elkaar om het overzicht goed te krijgen.

De volgende error krijg ik:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/cmdphp/domains/cmd-php.nl/public_html/0651389/inlog_student/student_overzicht.php on line 79
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 '' at line 12
Een paar komma's te veel....

  Docent.GroepID,   <-- DEZE         
FROM
  Groepen,
  Student,
  Docent,  <-- EN DEZE
WHERE
Thanks, het probleem blijft wel echter hetzelfde.
Wat doe je er zelf dan aan?

Hier de volgende fout:
<?php
$query = 'SELECT
Groepen.GroepID,
Student.Naam AS StudentNaam
FROM
Groepen,
Student
WHERE
StudentNaam = '.$_SESSION['logged_in'];
?>
Als ik ervanuit ga dat studentnaam een string is, dan horen er quotes om de waarde heen.
Deze heb ik 10 minuten geleden al verbeterd.. het moet Student.Naam zijn. Ik probeer er zelf achter te komen maar ik ben al vanaf gisterenmiddag proberen de oplossing te vinden, vandaar dat ik vandaag mijn ongeduld verloor en er hier een topic van heb gemaakt. ;)
Erwin H op 16/06/2013 14:57:30

Als ik ervanuit ga dat studentnaam een string is, dan horen er quotes om de waarde heen.


Veugerton FC op 16/06/2013 15:06:45

Deze heb ik 10 minuten geleden al verbeterd.. het moet Student.Naam zijn.

Dat is niet hetzelfde als wat Erwin H bedoelt. Lees zijn opmerking nogmaals.


StudentNaam is een kolomnaam en geen string.
Het gaat niet om de kolomnaam maar om de waarde. Dat is waar Erwin het over heeft. Die waarde is een string en daarom moeten er quotes omheen.
Dank Ozzie, maar blijkbaar is het betere voorkauw werk nodig:
<?php
$query = 'SELECT
Groepen.GroepID,
Student.Naam AS StudentNaam
FROM
Groepen,
Student
WHERE
Student.Naam = "'.$_SESSION['logged_in'].'"';
?>
Ik zie het inderdaad, ik hanteer bij enkele query's '' terwijl ik bij andere ook weer "" gebruik, dit ook meteen goed aangepast, verder heb ik nog wat foutjes verbeterd. Bedankt voor de hulp, van deze voorkauw werk leer ik ook van.
Nog even dan iets, waarvan ik niet zeker weet of het mis gaat, maar het wel vemoed. De manier waarop je bovenstaande query nu hebt opgezet zal je het cartesisch product opleveren van de tabellen 'Groepen' en 'Student'. Met andere woorden, elke rij uit de ene tabel zal aan elke rij uit de andere tabel worden gekoppeld. Je selecteert wel op de naam van de studen, maar je zal dus voor die student elke groep krijgen. Meestal (...) is dit niet wat je wil in een join. Wil je namelijk gewoon alle groepen hebben, dan hoef je niet de Student tabel eraan te joinen, de naam van de student heb je toch al.

[size=xsmall]Toevoeging op 16/06/2013 16:34:29:[/size]

Hmm, nog meer (sorry, maar hopelijk helpt het).

De uitkomst van bovenstaande query verwerk zo
<?php
while($record = mysql_fetch_assoc($result)){
$groepID = $record['GroepID'];
}
?>
Dat is ofwel niet nodig, ofwel gaat het iets heel anders opleveren dan je wil.
Niet nodig: als je maar 1 record krijgt heb je geen while loop nodig.
Je krijgt iets anders: krijg je meer records terug dan krijg je alsnog maar 1 id eruit, want uiteindelijk overschrijf je elke keer de eerder uitgelezen waarde weer doordat je alles in dezelfde variabele stopt. pas na de while loop die je er iets mee, dus dan heb je alleen nog het laatste id over.

En daarna.... ga je denk ik aan de hand van dit id (waarvan je denk ik nog alle denkt te hebben) nog een query draaien. Dat was dus niet nodig, want alle gegevens die je uit die volgende query haalt, had je al in de eerdere query kunnen doen, door 1 of meer joins.

Reageren