<?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
Oke ik probeer het even op een rijtje te zetten met wat ik precies wil:

1. Ik wil allereerst een overzicht-pagina hebben van groepen: regel 66 t/m 112. De query die ik daar doe is overbodig omdat ik deze al maak op regel 4 t/m 30? Is het netter om deze boven zo te laten staan en deze 83 t/m 94 te verwijderen of dat ik deze juist op 83 t/m 94 alleen doe?

2. Als ik op een link klik in de overzichtspagina (regel 111) wil ik naar een specifieke groepspagina ga (regel 53, momenteel even alleen record naam gezet om code klein te houden). Daar wil ik dat de groep te zien is met de bijhorende studenten en docenten. Deze studenten en docenten wil ik niet in de groepslijstoverzicht te zien hebben.

3. Op je allereerste alinea terug te komen, dan heb je het over bv. de volgende regels:

WHERE
Groepen.GroepID = Docent.GroepID
AND
Groepen.GroepID = Student.GroepID

Ik wil hiermee een docent/student koppelen aan een groep, is dit overbodig?



1) Die query vanaf regel 66 is dus de vreemde die ik boven aanhaalde. Daar selecteer je alle groepen, gekoppeld aan alle studenten (dus bij 10 groepen en 10 studenten krijg je 100 rijen). Vervolgens filter je wel op student, zodat je nu alle groepen terug krijgt, met daarbij ook in elke rij die student naam. Dat is dus een beetje overbodig, je kan net zo goed gewoon 'SELECT GroepID FROM Groepen' doen, dan heb je ook alle groepen.
Het tweede punt wat je nu zelf zegt is dat je die gegevens eigenlijk al hebt uit een andere query. In dat geval moet je het gewoon helemaal weglaten. Het heeft geen zin informatie dubbel op te halen. Waar het dan staat is niet zo van belang.

2) Maar dat is neem ik aan in een andere pagina, dus ook een ander script? Ik zie dat hier niet terugkomen, of wel?

3) Dat op zich is niet overbodig, hoewel ik wel denk dat je nu een verkeerd database model hebt. Als je het zo doet, dat de groepid in de student en docent tabel staat, dan betekent het dat je een 1-op-1 relatie maakt. Oftewel, elke student en docent kan maar in 1 groep zitten. Klopt dat?
Het overbodige zit hem in deze query:

        SELECT
            Groepen.GroepID,
            Student.Naam AS StudentNaam
        FROM
            Groepen,
            Student
        WHERE
            Student.Naam = "'.$_SESSION['logged_in'].'"'

Je joined hier twee tabellen, alleen maar om de studentnaam erbij te krijgen, waar je op filtert. Dat betekent simpelweg dat in elke rij de studentnaam gelijk is aan de waarde die je zelf ingeeft. Oftewel, je haalt gegevens op die je al weet. Wil je de groepen hebben dan kan dat nogmaals met de simpelere 'SELECT GroepID FROM Groepen'

Bedankt voor je bijdrage alweer. Vooral punt 2 geeft inderdaad aan dat ik niet weet waar ik mee bezig ben, ik heb een oude script gebruikt, mijn huidige script gebruik ik bijna op iedere .php een include waardoor dit helemaal niet werkt. Ik denk dat het voor mij het verstandigst is om gewoon opnieuw te beginnen.

Ik zal jouw feedback meenemen in mijn nieuwe werk.

Reageren