[PHP/MySQL] het uitlezen van velden uit twee tabellen *

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Hallo,

Ik ben nu al meer dan een week bezig met het proberen twee tabellen te connecten maar het lukt me niet. Ik heb twee tabellen: personeel, en uren. De bedoeling is om alle urenmutaties van een bepaalde persoon te laten zien.
Tot nu toe (na eindeloos proberen,want ik weet er niet zoveel van af) heb ik onderstaande code.

Hiermee krijg ik wel een afrollijst met achternamen, maar niet de de velden na: doorgegeven id(zoals van_dag,van_tijd enz.) Kan iemand me zeggen wat ik verkeerd doe?

De tabel PERSONEEL heeft de velden:
id_pers,voornaam,tussenvoegsel,achternaam,emailadres,lokatie,verlof_saldo,verlof_recht
De tabel UREN heeft de velden id_ur,id_persuur,van_dag,van_tijd,tot_dag,tot_tijd,soort_verlof,reden,uren_bij,uren_af,invul_datum.


Met vriendelijke groet, An

code:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php
include("connect.php");

$query="
  SELECT 
    personeel.achternaam, 
    personeel.voornaam, 
    personeel.tussenvoegsel,   
    personeel.emailadres, 
    uren.van_dag, 
    uren.van_tijd, 
    uren.tot_dag, 
    uren.tot_tijd, 
    uren.soort_verlof, 
    uren.reden, 
    uren.uren_bij, 
    uren.uren_af, 
    uren.invul_datum 
  FROM 
    personeel 
  LEFT JOIN 
    uren 
  ON 
    personeel.id_pers = uren.id_persuur 
";

// query uitbreiden indien werknemer ID is doorgegeven
if (!empty($_POST)){    
    $query .= " WHERE personeel.id_pers='" . $_POST["id_pers"] . "'";
}
$result = mysql_query($query) or die (mysql_error());
?>

<html>
<head>
    <title>Een selectielijst op het scherm tonen</title>
</head>
<body>
<?php 
// controleer of pagina voor het eerst wordt geopend, of 
// dat de pagina zichzelf heeft aangeroepen

if (empty($_POST)){?>
    <h2>Kies een werknemer ID</h2>
    <form name="form1" action="<?php echo($_SERVER["PHP_SELF"]);?>" method="post">
    ID: <select name="id_pers">
        <?php
        // de selectielijst vullen met beschikbare ID's
        while (list($id_pers) = mysql_fetch_row($result)){
            echo("<option value=\"$id_pers\">$id_pers</option>\n");
        }?>
        </select>
    <input type="Submit" value="Tonen">
    </form>
    
<?php 
}else{
    // Als de pagina zichzelf heeft aangeroepen het else-blok uitvoeren
    echo("<h2>Doorgegeven ID: " . $_POST["id_pers"] . "</h2>\n");
    while (list($van_dag,$van_tijd,$tot_dag,$tot_tijd,$soort_verlof,$reden,$uren_bij,$uren_af,$invul_datum) =
         mysql_fetch_row($result)){
         echo("Uren vanaf dag: =$van_dag");
         echo("Uren vanaf tijd: =$van_tijd");
         echo("Uren tot dag: =$tot_dag");
         echo("Uren tot tijd: =$tot_tijd");
         echo("Soort Verlof: =$soort_verlof");
         echo("Reden: =$reden");
         echo("Uren bij: =$uren_bij");
         echo("Uren af: =$uren_af");
         echo("Invuldatum: =$invul_datum");
                 
echo("<a href=\"" . $_SERVER["PHP_SELF"] . "\">Andere werknemer selecteren</a>");
    }
}
?>
</body>
</html>

[ Voor 18% gewijzigd door Verwijderd op 29-09-2004 17:11 . Reden: toevoegen codetags, velden in tabellen en uitleg ]


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Hoi Anja, en welkom op GoT :)

Allereerst even over de huisregels in Programming & Webscripting: lees even de stickies bovenin het forum door en je weet een beetje wat wij van jou verwachten en jij van ons kunt verwachten. Daar staat bijvoorbeeld ook uitgelegd dat je met [php] en [code] tags je sources goed leesbaar kunt posten, en dat we graag PHP en/of SQL in je topictitel zien voor de duidelijkheid ;) Tevens snap ik persoonlijk je vraag niet echt, want een stukje relevante informatie ontbreekt: hoe zien je tabellen eruit, welke data staat erin, en wat komt er wel of niet uit? :)

Professionele website nodig?


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

PHP:
1
2
 while (list($van_dag,$van_tijd,$tot_dag,$tot_tijd,$soort_verlof,$reden,$uren_bij,
          $uren_af,$invul_datum) = mysql_fetch_row($result)) {

Het kan aan mij liggen, maar met je query haal je meer velden op dat dit. Zet eens alle velden die je in de query ophaalt in die list, in de goede volgorde, of werk niet met variabelen, maar gewoon met een array voor elk record.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
Ik heb de andere velden erbij gezet, maar dat haalt niets uit. Overigens had ik dat ook niet gedacht, omdat hij alles na: doorgegeven id niet laat zien. Net alsof hij de tabel uren niet ziet.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Dan is je resultset leeg. Geeft je query in phpMyAdmin wel resultaat? Met andere woorden: zijn er wel records waarvoor die id's overeen komen?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
Ik heb in phpmyadmin, in de tabel personeel onderstaande query geprobeerd. Dit heb ik al eerder geprobeerd, maar nu heb ik in de select bij WHERE het id_pers nummer op (=2). Dan krijg ik keurig de gegevens van personeelsid nummer 2.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SELECT 
    personeel.achternaam, 
    personeel.voornaam, 
    personeel.tussenvoegsel,   
    personeel.emailadres, 
    personeel.verlof_saldo, 
    uren.van_dag, 
    uren.van_tijd, 
    uren.tot_dag, 
    uren.tot_tijd, 
    uren.soort_verlof, 
    uren.reden, 
    uren.uren_bij, 
    uren.uren_af, 
    uren.invul_datum 
  FROM 
    personeel 
  LEFT JOIN 
    uren 
  ON 
    personeel.id_pers = uren.id_persuur 
WHERE id_pers='2';

Verwijderd

als je wel resultaat krijgt met die 2 ipv die variabele , ligt het aan je variabele die leeg is of niet van het juiste type.


komen de types van velden overeen ?
Pagina: 1