print naam ipv id

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Chris

Chris

23/01/2009 14:49:00
Quote Anchor link
Hoi

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?
 
PHP hulp

PHP hulp

16/02/2025 13:00:06
 
Tamara

Tamara

23/01/2009 14:56:00
Quote Anchor link
ik denk dat je de functie foreach() moet gebruiken...

een beetje code zou ook handig zijn ;)
Gewijzigd op 01/01/1970 01:00:00 door Tamara
 
Chris visser

chris visser

23/01/2009 15:01:00
Quote Anchor link
Ik neem aan dat je de waardes uit een database haalt?
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo $vak['vakid']." = ".$vak['vaknaam']."<br>";
?>
Gewijzigd op 01/01/1970 01:00:00 door chris visser
 
Chris

Chris

23/01/2009 15:05:00
Quote Anchor link
Ik zal vanavond eens even naar foreach kijken, ik moet nu namelijk werken, de code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>'
;
?>


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
 
Dennis Mertens

Dennis Mertens

23/01/2009 15:09:00
Quote Anchor link
Het is beter om ipv mysql_fetch_object() mysql_fetch_assoc() te gebruiken.

Want het is geen object.
 
Chris

Chris

23/01/2009 18:39:00
Quote Anchor link
Ik bedoel het zeg maar zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$vakken
= array(1 => 'Engels', 'Nederlands', 'Duits');

echo $vakken[$rijtaakjes->vaktabel];
?>

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
 
Chris visser

chris visser

23/01/2009 19:03:00
Quote Anchor link
Ik denk dat je dan het beste joins kan gebruiken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
"
;
?>


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.
 
Chris

Chris

24/01/2009 11:26:00
Quote Anchor link
Oke dit werkt, bedankt chris :D:D
Nu ken ik join ook :D

Ik heb het nu zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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 { }
?>
Gewijzigd op 01/01/1970 01:00:00 door Chris
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.