Hoi allemaal,

Momenteel ben ik een absentie systeem aan het schrijven. Op dit moment heb daarvoor:
Pagina 1: selecteer team variabel wordt $selected
Pagina 2: selecteer een training/wedstrijd wordt $agenda
Vervolgens is er een pagina met alle teamleden waarvan de checkbox automatisch op ja staat indien er niet afgemeld is. Ik heb in de database twee tabellen aangemaakt: "leden" en "aanwezig".

Het systeem dat als er op de checkbox geklikt wordt, moet ik nog maken. Maar nu loop ik dus tegen het volgende probleem aan. Ik heb als test een record aangemaakt in "aanwezig" waarbij het lidnummer overeenkomt met het lidnummer van iemand uit het team en datum overeen komt met $agenda. Maar nu geeft mijn uitvoer alle namen dubbel, omdat ik niet zo goed weet hoe ik de lengte van de query moet instellen doordat er met twee tabellen gewerkt wordt.

Hieronder zien jullie mijn code:
<?
$username="****";
$password="*****";
$database="******";

mysql_connect(localhost,$username,$password);
@mysql_select_db($database);
$query="SELECT naam,team,lidnr,lid,datum FROM leden,aanwezig WHERE team='$selected' ORDER BY naam asc";
$result=mysql_query($query);

$num=mysql_num_rows($result);

mysql_close();

$i=0;
while ($i < $num) {
$naam=mysql_result($result,$i,"naam");
$team=mysql_result($result,$i,"team");
$lidnr=mysql_result($result,$i,"lidnr");
$lid=mysql_result($result,$i,"lid");
$datum=mysql_result($result,$i,"datum");

if (($lidnr == $lid) && ($agenda == $datum))
{ echo "<li class='checkbox'><span class='name'>$naam</span>
<input name='remember' value='$lidnr' type='checkbox' /> </li>";} else
{ echo "<li class='checkbox'><span class='name'>$naam</span>
<input name='remember' value='$lidnr' checked='yes' type='checkbox' /> </li>"; };


$i++;
}
?>


De aanwezigheid staat dus standaard op Ja en als er een record aanwezig is in de tabel "aanwezig" die overeenkomt met het lidnummer dan moet de checkbox op nee staan. Iemand enig idee hoe ik dit kan verbeteren?

Groet,

Jelmer

[size=xsmall]Toevoeging op 31/05/2011 11:04:05:[/size]

Op dit moment ziet een stukje van mijn uitvoer er dus zo uit:

<li class='checkbox'><span class='name'>Naam 1</span><input name='remember' value='111' checked='yes' type='checkbox' /> </li>
<li class='checkbox'><span class='name'>Naam 1</span><input name='remember' value='111' checked='yes' type='checkbox' /> </li>
<li class='checkbox'><span class='name'>Naam 2</span><input name='remember' value='361' type='checkbox' /> </li>
<li class='checkbox'><span class='name'>Naam 2</span><input name='remember' value='361' checked='yes' type='checkbox' /> </li>

probeer dit eens als query:

SELECT naam,team,lidnr,lid,datum FROM leden,aanwezig WHERE team='".$selected."' GROUP BY naam ORDER BY naam ASC
Daar zit het probleem niet, het ligt aan de uitvoer met $i, want hij pakt gewoon goed het geselecteerde team...
dit kan natuurlijk nooit. de tabel leden is niet gelijk aan aanwezig dus regel voor regel controleren gaat dus niet werken.

Is dit voor een school opdracht? Ik zag gisteren nog iemand op deze manier zijn scripts schrijven. Het is echt om te huilen als jullie het op deze manier krijgen aangeleerd.
Dit is niet voor school, maar een project uit eigen initatief. Het zou dan wel fout kunnen zijn, maar tot nu toe werkte deze manier van scripten wel. En ja zo is het aangeleerd, als je me zou kunnen uitleggen hoe het dan wel moet, graag;)

[size=xsmall]Toevoeging op 31/05/2011 12:34:24:[/size]

Ik heb m'n query nu op een heel andere manier geschreven, namelijk:
<?
$username="***";
$password="***";
$database="***";

mysql_connect(localhost,$username,$password);
@mysql_select_db($database);
$query = "SELECT naam,team,lidnr FROM leden WHERE team='$selected' ORDER BY naam asc";

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


while($row = mysql_fetch_array($result)){
echo "<li class='checkbox'><span class='name'>";
echo $row['naam'];
echo "</span>
<input name='remember' value='$lidnr' type='checkbox' /> </li>";
}
?>


Zo beter? Nu zoek ik nog een oplossing hoe ik de checkbox een andere waarde kan geven als er een record is in de tabel aanwezig met het overeenkomende lidnr en datum...

[size=xsmall]Toevoeging op 31/05/2011 15:28:07:[/size]

Inmiddels heb ik het anders aangepakt, ik heb de in de tabel leden een kolom aangemaakt met afwezig waarin de datum gezet kan worden, vervolgens heb ik dit stukje code :
if (empty($row['afwezig1'])) {
echo "<form action='queryverzenden.php' name='";
echo $row['lidnr'];
echo "' method='GET'><fieldset>";
echo "<li class='checkbox'><span class='name'>";
echo $row['naam'];
echo "</span><input name='";
echo $row['lidnr'];
echo "' checked='checked' onclick='this.form.submit()' value='$agenda' type='checkbox' /> </li></fieldset></form>";
}

else {
echo "<li class='checkbox'><span class='name'>";
echo $row['naam'];
echo "</span>
<input name='afwezig1' onchange='document.form2.submit()' value='' type='checkbox' /> </li>"; }


Ik weet dat het een stuk efficiƫnter kan, maar daar kijk ik op een later tijdstip naar.

Nu wil ik dus dat als er een checkbox veranderd van checked naar unchecked er een datum wordt gezet in de database bij de bijbehorende naam. Nu dacht ik dat makkelijk mee te kunnen geven door de gegevens door te sturen naar queryverzenden.php maar dat lukt nog niet helemaal naar wens.

Tips?

Reageren