database tabellen samenvoegen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Sanne Zuidema

Sanne Zuidema

22/10/2014 17:14:03
Quote Anchor link
hallo,
Ik ben bezig met een pdo script. Ik wil gegevens uit vier verschillende tabellen selecteren en deze op een scherm tonen, maar sorteren bij dag. alle tabellen hebben de row dag. Ik wil alle informatie uit deze tabellen selecteren en per tabel een rij maken en deze sorteren op dag.
dus bijvoorbeeld:

Dag 1
Reis: Den Haag - Rotterdam
Overnachting: Bluesky - Rotterdam

Dag 2
Overnachting: Bluesky - Rotterdam
Activiteit: Bezoek Euromast - Rotterdam

Dit zijn mijn tabellen:

Dag:
- id
- dag

Reis
- id
- dag
- beginplaats
- eindbestemming

Overnachting
- id
- dag
- Hostel
- plaats

Activiteit
- id
- dag
- titel
- plaats
 
PHP hulp

PHP hulp

19/04/2024 14:12:40
 
Pipo Clown

Pipo Clown

22/10/2014 19:24:07
Quote Anchor link
Waarom heb je in reis, overnachting en activiteit neit de id staan uit de dag tabel ipv de dag zelf ?
ZOals het nu staat zie ik ook de meerwaarde van de dagtabel niet in
 
Sanne Zuidema

Sanne Zuidema

22/10/2014 23:07:25
Quote Anchor link
Oké daar heb je een punt, maar als ik de dagtabel weglaat, hoe zou ik dan die andere drie tabellen kunnen combineren en het resultaat krijgen wat ik graag wil
 
Peter K

Peter K

23/10/2014 07:38:44
Quote Anchor link
In je query kun je een JOIN zetten, welke JOIN je nodig hebt ligt aan je gewenste eindresultaat.

http://www.sitepoint.com/understanding-sql-joins-mysql-database/

Een optie zou kunnen zijn:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
SELECT
    dag.dag,
    reis.beginplaats,
    reis.eindbestemmeing
FROM
    `dag`
    LEFT JOIN `reis` ON reis.dag = dag.id
ORDER BY
    dag.id ASC


Uiteraard ook afhankelijk van hoe je tabellen gekoppeld zijn. Vul je bijvoorbeeld in reis.dag het dag.id of dag.dag in.
 
Sanne Zuidema

Sanne Zuidema

24/10/2014 20:23:18
Quote Anchor link
Ik snap het niet helemaal, volgens mij met een join voeg je gegevens uit verschillende tabellen samen en maak je er een rij met gegevens van, dit wil ik niet ik wil de rijen uit verschillende tabellen onder elkaar zetten gesorteerd op dag waarbij soms een rij niet voorkomt:

Dag 1:
reis: Den Haag - Rotterdam
overnachting: bluesky hostel

Dag 2:
overnachting: bluesky hostel
activiteit: bezoek euromast

Dag 3:
reis: Rotterdam - utrecht
overnachting: Sky Hostel
 
Frank Nietbelangrijk

Frank Nietbelangrijk

25/10/2014 03:09:30
Quote Anchor link
joins zijn inderdaad het juiste stukje gereedschap. Het gaat er niet alleen om dat ze gegevens samenvoegen maar ook dat de juiste gegevens bij elkaar komen te staan. Hoe je ze uiteindelijk op het scherm weergeeft (naast elkaar of onder elkaar) maakt niets uit.

Wat ik me afvraag.. waarom staat bij dag twee de overnachting boven en niet onder?

In het kort zit het volgens mij zo:

je hebt reizen van een aantal dagen. in die dagen worden activiteiten georganiseerd.

Die overnachtingen is een beetje hoe je het wil. Je kunt die ook als activiteit zien.

van de dagen en van de activiteiten moet je zorgen dat je de volgorde kunt bepalen.
Je zou bijvoorbeeld voor de dagen gewoon een datum kunnen pakken of een nummer.
voor de activiteiten zou je een nummer of een tijdstip kunnen pakken

indeling:
REIZEN
-id, INT PRIMARY KEY, AUTO INCREMENT
-omschrijving, VARCHAR 255
-datum, DATE

DAGEN:
-id, INT PRIMARY KEY, AUTO INCREMENT
-reis_id, INT INDEX
-dag_nr INT

ACTIVITEITEN
-id, INT PRIMARY KEY, AUTO INCREMENT
-dag_id INT INDEX
-omschrijving, VARCHAR 255
-tijd TIME
Gewijzigd op 25/10/2014 03:16:03 door Frank Nietbelangrijk
 
Sanne Zuidema

Sanne Zuidema

25/10/2014 10:59:55
Quote Anchor link
Oke ik heb mijn join nu werkend, maar als ik twee activiteiten op een dag heb toont hij dag 1 twee keer

Dag: 1
Sluiswachterstraat 71 's-Gravenzande Genevè
Geneva Youth Hostel Rue Rothschild 30, 1202 Genève (GE)
Geneve trein
Dag: 1
Sluiswachterstraat 71 's-Gravenzande Genevè
Geneva Youth Hostel Rue Rothschild 30, 1202 Genève (GE)
Geneve bus

En hij toont alle dagen met alle drie de lijnen en ik wil graag als er bijvoorbeeld geen treinreis is dat hij die niet toont

Dit is mijn code:
$sql_activiteit= "SELECT
dagen.dag,
reisdagen.beginplaats,
reisdagen.eindbestemming,
overnachten.hostel,
overnachten.adres,
activiteit.plaats,
activiteit.titel
FROM
`dagen`
LEFT JOIN `reisdagen` ON reisdagen.dag = dagen.id
LEFT JOIN `overnachten` ON overnachten.dag = dagen.id
LEFT JOIN `activiteit` ON activiteit.dag = dagen.id

ORDER BY
dagen.id ASC";
$stmt_activiteit = $pdo->prepare($sql_activiteit);
$stmt_activiteit->bindParam(':dag', $dag, PDO::PARAM_STR);
$stmt_activiteit->execute();
$result_activiteit = $stmt_activiteit->fetchAll();
foreach($result_activiteit as $row_activiteit){
echo "<tr><td class='danger' COLSPAN='3'><label><h3>Dag: ".$row_activiteit['dag']."</h3></label></td></tr>

<tr><td><img src='images/50439.png'></td><td>".$row_activiteit['beginplaats']."</td><td>".$row_activiteit['eindbestemming']."</td></tr>
<tr><td><img src='images/slapen.png'></td><td>".$row_activiteit['hostel']."</td><td>".$row_activiteit['adres']."</td></tr>
<tr><td><img src='images/voeten.png'></td><td>".$row_activiteit['plaats']."</td><td>".$row_activiteit['titel']."</td></tr>
";


}
Gewijzigd op 25/10/2014 11:01:21 door Sanne Zuidema
 
Frank Nietbelangrijk

Frank Nietbelangrijk

25/10/2014 13:49:25
Quote Anchor link
Daar is een klein foefje voor:

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
<?php
$vorige_dag
= '';
foreach($result_activiteit as $row_activiteit)
{

    if($vorige_dag != $row_activiteit['dag'])
    {

        $vorige_dag = $row_activiteit['dag'];
        echo "<tr><td class='danger' COLSPAN='3'><label><h3>Dag: ".$row_activiteit['dag']."</h3></label></td></tr>";
    }

    echo "<tr><td><img src='images/50439.png'></td><td>".$row_activiteit['beginplaats']."</td><td>".$row_activiteit['eindbestemming']."</td></tr>
    <tr><td><img src='images/slapen.png'></td><td>"
.$row_activiteit['hostel']."</td><td>".$row_activiteit['adres']."</td></tr>
    <tr><td><img src='images/voeten.png'></td><td>"
.$row_activiteit['plaats']."</td><td>".$row_activiteit['titel']."</td></tr>";
}

?>
Gewijzigd op 25/10/2014 13:50:24 door Frank Nietbelangrijk
 
Sanne Zuidema

Sanne Zuidema

25/10/2014 19:18:06
Quote Anchor link
oke ik heb gedaan wat in de vorige reactie, maar hij toont nu dingen dubbel:

Dag: 1
Sluiswachterstraat 71 's-Gravenzande Genevè
Geneva Youth Hostel Rue Rothschild 30, 1202 Genève (GE)
Geneve trein
Sluiswachterstraat 71 's-Gravenzande Genevè
Geneva Youth Hostel Rue Rothschild 30, 1202 Genève (GE)
Geneve bus
 
Frank Nietbelangrijk

Frank Nietbelangrijk

25/10/2014 21:52:07
Quote Anchor link
Laat eens zien wat je nu hebt?
 
Sanne Zuidema

Sanne Zuidema

25/10/2014 22:35:17
Quote Anchor link
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
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
<?php
$vorige_dag
= '';
$sql_activiteit= "SELECT
    dagen.dag,
    reisdagen.reisdagen_dag,
    reisdagen.reisdagen_status,
    reisdagen.beginplaats,
    reisdagen.eindbestemming,
    overnachten.overnachten_dag,
    overnachten.overnachten_status,
    overnachten.hostel,
    overnachten.adres,
    activiteit.activiteit_dag,
    activiteit.activiteit_status,
    activiteit.plaats,
    activiteit.titel
FROM
    `dagen`
    LEFT JOIN `reisdagen` ON reisdagen.reisdagen_dag = dagen.id
    LEFT JOIN `overnachten` ON overnachten.overnachten_dag = dagen.id
    LEFT JOIN `activiteit` ON activiteit.activiteit_dag = dagen.id
    
ORDER BY
    dagen.id ASC"
;
                            $stmt_activiteit = $pdo->prepare($sql_activiteit);
                            $stmt_activiteit->bindParam(':dag', $dag, PDO::PARAM_STR);
                            $stmt_activiteit->execute();
                            $result_activiteit = $stmt_activiteit->fetchAll();
                                
                                
                                 $vorige_dag = '';
                                
                                foreach($result_activiteit as $row_activiteit)
                                {

                                $activiteit = $row_activiteit['dag'];
                                
                                    if($vorige_dag != $row_activiteit['dag'])
                                    {

                                        $vorige_dag = $row_activiteit['dag'];
                                        echo "<tr><td class='danger' COLSPAN='3'><label><h3>Dag: ".$row_activiteit['dag']."</h3></label></td></tr>";
                                    }

                                    
                                    $reisdagen_dag = '';
                                    if($row_activiteit['reisdagen_dag'] != $reisdagen_dag)
                                    {

                                    echo "<tr><td><img src='images/50439.png'></td><td>".$row_activiteit['beginplaats']."</td><td>".$row_activiteit['eindbestemming']."</td></tr>";
                                    }

                                    
                                    $overnachten_dag = '';
                                    if($row_activiteit['overnachten_dag'] != $overnachten_dag)
                                    {

                                    echo "<tr><td><img src='images/slapen.png'></td><td>".$row_activiteit['hostel']."</td><td>".$row_activiteit['adres']."</td></tr>";
                                    }

                                    
                                    $activiteit_dag = '';
                                    if($row_activiteit['activiteit_dag'] != $activiteit_dag)
                                    {

                                        
                                        echo "<tr><td><img src='images/voeten.png'></td><td>".$row_activiteit['plaats']."</td><td>".$row_activiteit['titel']."</td></tr>";
                                    }
                                    
                                    
                                    
                                }

                                    
                                    
                                
?>
Gewijzigd op 26/10/2014 13:38:05 door Sanne Zuidema
 
Sanne Zuidema

Sanne Zuidema

03/11/2014 23:19:15
Quote Anchor link
ik heb het opgelost:

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
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
78
79
80
81
82
83
<?php
$sql_activiteit
= "SELECT
    *
FROM
    dagen

ORDER BY
    dag ASC"
;
                            $stmt_activiteit = $pdo->prepare($sql_activiteit);
                            $stmt_activiteit->execute();
                            $result_activiteit = $stmt_activiteit->fetchAll();
                                
                                foreach($result_activiteit as $row_activiteit)
                                {

                                
                            
                                echo "<label><h2>Dag: ".$row_activiteit['dag']."</h2></label>";
                                echo "<br/>";
                                $dag = $row_activiteit['dag'];
                                echo "<table class='table responsive personal' style=' margin:auto; margin-top:10px;'>";
                                
                                $sql_reis= "SELECT
                                        *
                                    FROM
                                        reisdagen
                                    WHERE reisdagen_dag = :dag                        

                                    ORDER BY
                                        reisdagen_dag ASC"
;
                            $stmt_reis = $pdo->prepare($sql_reis);
                            $stmt_reis->bindParam(':dag', $dag, PDO::PARAM_STR);
                            $stmt_reis->execute();
                            $result_reis = $stmt_reis->fetchAll();
                                
                                foreach($result_reis as $row_reis)
                                {

                                    echo "<tr><td data-header='Plaats'>".$row_reis['beginplaats']."</td></tr>";
                                
                                }

                                
                                $sql_hotel= "SELECT
                                        *
                                    FROM
                                        overnachten
                                    WHERE overnachten_dag = :dag                        

                                    ORDER BY
                                        overnachten_dag ASC"
;
                            $stmt_hotel = $pdo->prepare($sql_hotel);
                            $stmt_hotel->bindParam(':dag', $dag, PDO::PARAM_STR);
                            $stmt_hotel->execute();
                            $result_hotel = $stmt_hotel->fetchAll();
                                
                                foreach($result_hotel as $row_hotel)
                                {

                                    echo "<tr><td data-header='Plaats'>".$row_hotel['hostel']."</td></tr>";
                                
                                }

                                
                                $sql_activiteit= "SELECT
                                        *
                                    FROM
                                        activiteit
                                    WHERE activiteit_dag = :dag                        

                                    ORDER BY
                                        activiteit_dag ASC"
;
                            $stmt_activiteit = $pdo->prepare($sql_activiteit);
                            $stmt_activiteit->bindParam(':dag', $dag, PDO::PARAM_STR);
                            $stmt_activiteit->execute();
                            $result_activiteit = $stmt_activiteit->fetchAll();
                                
                                foreach($result_activiteit as $row_activiteit)
                                {

                                    echo "<tr><td data-header='Plaats'>".$row_activiteit['titel']."</td></tr>";
                                
                                }

                                        echo "</table>";
                                }

                                    
                                    
                                
?>
 



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.