print naam ipv id
Ik heb hier een scriptje met een while, er komt dan een echo en die print nummers op het scherm.
Maar die nummers stellen een 'vak' voor.
Hij print bijvoorbeeld:
2
3
5
2
1
2 is dan bijvoorbeeld Nederlands, 3 Engels, etc...
Hij haalt die nummers uit 1 tabel. Maar daar staan dus alleen nummers die ik dan echo in een while met '.$rijtaakjes->vaktabel.'.
Maar nu komt het dilemma, ik wil dat die nummers de naam van het vak worden.
Ik heb in een andere tabel de vakken staan en de nummers (vakid) dat daar bij hoort.
Hoe krijg ik het voor elkaar dat hij in een while steeds de vaknaam print en niet het nummer??
Ik heb eerder met een array gewerkt waar je zelf alles in moet vullen en dan kon je aangeven van af welk nummer die moest gaan nummeren en dan kon je in de while $array[nummer] doen of zo en dan kwam er een naam in plaats van een nummer. Maar dit zal nu niet werken omdat het kan zijn dat je een nummer overslaat en ik niet weet hoe je automatisch de namen uit de database als opties in de array zet.
Ik zat dus aan een ander soort array te denken maar de mogelijkheden die ik op internet vond waren niet goed.
Ik zoek dus naar een soort array (of een andere mogelijkheid) die de id's en de vaknamen opslaat en dat als je het id print de vaknaam er komt te staan.
Weet iemand de oplossing of waar ik naar moet zoeken?
klopt het dan dat je in je database 1 tabel hebt die er zo uitziet?
**Vakken
-vakid
-vaknaam
Als je database uit de bovenstaande tabel bestaat en je in je SQL select de onderstaande regel hebt staan.
SELECT * FROM vakken
Met de whilefunctie haal je ze op. Dan kun je ze bijvoorbeeld op deze manier weergeven:
Gewijzigd op 01/01/1970 01:00:00 door chris visser
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
include('config.php');
$id = $_SESSION['id_sessie'];
$taakophaal = mysql_query("SELECT * FROM takentabel WHERE gebruikersid='".$id."'");
if(mysql_num_rows($taakophaal) > 0){
while($rijtaakjes = mysql_fetch_object($taakophaal)){
echo '<tr onmouseover=\'this.style.background="#C0CFCF"\' onmouseout=\'this.style.background=""\' >
<td width="120" class="style10">'.$rijtaakjes->vaktabel.'</td>
<td width="346" class="style10">'.$rijtaakjes->taakomschrijving.'</td>
<td width="80" class="style10">'.$rijtaakjes->soorttabel.'</td>
<td width="150" class="style10">'.$rijtaakjes->datum.'</td>
<td width="35" class="style10">'.$rijtaakjes->af.'</td>
</tr>';
}
} else {
echo '<tr>
<td colspan="5" align="center" valign="top" class="style15"><span class="style13">U heeft momenteel geen taken in de database staan. Voer deze in zodat u de agenda kan gebruiken.</span></td>
</tr>';
?>
include('config.php');
$id = $_SESSION['id_sessie'];
$taakophaal = mysql_query("SELECT * FROM takentabel WHERE gebruikersid='".$id."'");
if(mysql_num_rows($taakophaal) > 0){
while($rijtaakjes = mysql_fetch_object($taakophaal)){
echo '<tr onmouseover=\'this.style.background="#C0CFCF"\' onmouseout=\'this.style.background=""\' >
<td width="120" class="style10">'.$rijtaakjes->vaktabel.'</td>
<td width="346" class="style10">'.$rijtaakjes->taakomschrijving.'</td>
<td width="80" class="style10">'.$rijtaakjes->soorttabel.'</td>
<td width="150" class="style10">'.$rijtaakjes->datum.'</td>
<td width="35" class="style10">'.$rijtaakjes->af.'</td>
</tr>';
}
} else {
echo '<tr>
<td colspan="5" align="center" valign="top" class="style15"><span class="style13">U heeft momenteel geen taken in de database staan. Voer deze in zodat u de agenda kan gebruiken.</span></td>
</tr>';
?>
Ik heb 2 tabellen, vaktabel en takentabel.
Die ene is inderdaad wat jij zegt chris.
Maar takentabel word geprint, daar staat een row die vaktabel heet, waar dan nummers in staan.
Die nummers staan ivm de vaktabel, elk nummer wat geprint word heeft eigenlijk een naam en bij elk nummer staat een naam in vaktabel.
Gewijzigd op 01/01/1970 01:00:00 door Chris
Code (php)
Als in de database staat dat de gebruiker het vak 1 heeft geselecteerd dan laat hij op het scherm Engels zien.
Maar het probleem is nu dat die vakken niet vast staan. De gebruiker kan (uiteindelijk) zelf selecteren welke vakken hij allemaal in het vakkenpakket wil, dus je kunt niet op voorhand de array schrijven.
Een query moet voor de resultaten zorgen en die moeten in een array zodat je zoals hierboven de boel kan gebruiken.
Maar hoe ik er voor zorg dat je de resultaten uit een query in een array krijgt, daar kom ik niet uit...
Gewijzigd op 01/01/1970 01:00:00 door Chris
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$sql = "SELECT
t.*,
v.*
FROM
takentabel AS t
LEFT JOIN
vakkentabel AS v
ON
t.nummer= v.vakid
";
?>
$sql = "SELECT
t.*,
v.*
FROM
takentabel AS t
LEFT JOIN
vakkentabel AS v
ON
t.nummer= v.vakid
";
?>
Wat je hierboven doet is 2 tabellen samen laten voegen DMV het joincommando. De database die jij hebt is een genormaliseerde database. het nummer wat in die takentabel staat is eigenlijk het vakid van de andere tabel en MBV het bovenstaande script (of soortgelijk) kun je die info heel makkelijk ophalen.
Nu ken ik join ook :D
Ik heb het nu zo:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
$sqlophaal = mysql_query("
SELECT
*
FROM
takentabel
JOIN
vaktabel
ON
takentabel.vaktabel=vaktabel.vakid
WHERE
takentabel.gebruikersid='1'
");
if(mysql_num_rows($sqlophaal) > 0){
while($rijsql = mysql_fetch_object($sqlophaal)){
echo '<tr onmouseover=\'this.style.background="#C0CFCF"\' onmouseout=\'this.style.background=""\' >
<td width="120" class="style10">'.$rijsql->vaknaam.'</td>
<td width="346" class="style10">'.$rijsql->taakomschrijving.'</td>
<td width="80" class="style10">'.$rijsql->soorttabel.'</td>
<td width="150" class="style10">'.$rijsql->datum.'</td>
<td width="35" class="style10">'.$rijsql->af.'</td>
</tr>';
}
} else { }
?>
$sqlophaal = mysql_query("
SELECT
*
FROM
takentabel
JOIN
vaktabel
ON
takentabel.vaktabel=vaktabel.vakid
WHERE
takentabel.gebruikersid='1'
");
if(mysql_num_rows($sqlophaal) > 0){
while($rijsql = mysql_fetch_object($sqlophaal)){
echo '<tr onmouseover=\'this.style.background="#C0CFCF"\' onmouseout=\'this.style.background=""\' >
<td width="120" class="style10">'.$rijsql->vaknaam.'</td>
<td width="346" class="style10">'.$rijsql->taakomschrijving.'</td>
<td width="80" class="style10">'.$rijsql->soorttabel.'</td>
<td width="150" class="style10">'.$rijsql->datum.'</td>
<td width="35" class="style10">'.$rijsql->af.'</td>
</tr>';
}
} else { }
?>
Gewijzigd op 01/01/1970 01:00:00 door Chris