probleem met gegevens uit meerdere tabellen selecteren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeffrey Tukker

Jeffrey Tukker

18/08/2010 18:38:29
Quote Anchor link
Hallo Pro's,

Ik heb een probleem maar kan de oplossing der niet voor vinden mischien dat jullie de oplossing weten.

Ik heb in een database 2 tabellen 1 tabel waarin curssussen en lessen staan en een andere tabel waarin de bedrijfsgegevens staan van de aanbieder. Als men inlogt wordt een sessie gestart waarna het emailadres als sessiekenmerk word geregistreerd. als men een nieuwe curssus plaatst komt de email van de plaatser in mijn database van cursussen terecht zodat ik kan zien wie de cursus geplaatst heeft.

Ook is er een overzicht met lessen waar men op de lesnaam kan klikken en dan informatie krijgt over de cursus en de aanbieder dus van de aanbieder de naam van de aanbieder en het adres enzovoort.

maar nou krijg ik het maar niet voor mekaar om de pagina te maken waar de cursusinformatie en aanbiederinformatie op word weergegeven.

Ik heb geprobeerd om 2 selectquery's te doen waar alle gegevens worden geselecteerd maar dat wil niet lukken hoe doen jullie dat als jullie gegevens uit 2 tabellen willen
halen waarbij uit tabel 1 een gegeven word gehaald die in tabel 2 moet worden vergeleken.

onderstaande code heb ik geprobeerd:

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
<?php
// Connectie + header importeren
include_once 'includes/connection2.php';
include_once 'includes/header.php';



// selecteer de les dmv id en GET dit deel werkt tot onder aan de streep
//waarbij ik de bedrijfgegevens wil ophalen door de het mailadres te vergelijken

$query = "SELECT * FROM les where id=$_GET[id]";

    // Kijken of de Query gelukt is
    if( $result = mysql_query( $query ) )
    {

        // While loop om gegevens een variabele te geven
        while( $row = mysql_fetch_assoc( $result ) )
        {

            $naamcursus=$row['naamles'];
            $email=$row['emailplaatser'];
        }
    }

    else
    {
        // Foutmelding geven dat de Query niet gelukt is
        echo 'Er is een fout opgetreden bij het uitvoeren van de query.';
    }

////////////////////////////////////////////////////////////////////////////////////////////////    

// selecteer de les dmv id en GET

$query = "SELECT * FROM bedrijven where email=global $email";

    // Kijken of de Query gelukt is
    if( $result = mysql_query( $query ) )
    {

        // While loop om gegevens een variabele te geven
        while( $row = mysql_fetch_assoc( $result ) )
        {

            $bedrijfsnaam=$row['bedrijfsnaam'];
            //meer adresgegevens ophalen
        }
    }

    else
    {
        // Foutmelding geven dat de Query niet gelukt is
        echo 'Er is een fout opgetreden bij het uitvoeren van de query.';
    }


echo 'global $bedrijfsnaam'
echo 'global $naamcursus'
?>
 
PHP hulp

PHP hulp

29/11/2024 06:47:35
 

18/08/2010 18:41:30
Quote Anchor link
Variabelen buiten quotes, selecteer wat je wilt hebben, gebruik niet *. Op regel 18 en 19 overschrijf je de variabelen steeds als er meerder resultaten zijn. Zelfde geldt voor regel 38. Gebruik geen global (je gebruikt het niet, maar het is dus niet handig).
Volgens mij moet je naar joins kijken.
 
Noppes Homeland

Noppes Homeland

18/08/2010 18:46:23
Quote Anchor link
vraag 1:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
echo 'global $bedrijfsnaam'
echo 'global $naamcursus'
?>

wat verwacht je hier als resultaat? ik vindt het een stukje onzinnigheid
- PHP variabeen buiten quites
- maak geen overbodige variabelen aan!!
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $bedrijfsnaam=$row['bedrijfsnaam']; ?>


vraag 2:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query
= "SELECT * FROM les where id=$_GET[id]";
?>

wat denk je dat hier kan gebeuren?
- je controleert niet
- je valideert niet
- je beschermt je niet tegen sql injectie

vraag 3:
waarom stel je deze vraag eigenlijk, nooit gehoort van:
http://www.w3schools.com/Sql/sql_join.asp
wat in feite tot de basis kennis behoort
Gewijzigd op 18/08/2010 18:48:26 door Noppes Homeland
 
Jeffrey Tukker

Jeffrey Tukker

18/08/2010 18:47:12
Quote Anchor link
maar bij join kan ik inderdaad heel mooi de 2 tabellen samenvoegen maar dan niet waar id gelijk is aan getid en email gelijk is aan emailplaatser toch ?
 

18/08/2010 18:48:54
Quote Anchor link
Ga maar eerst die andere fixen.
 
Noppes Homeland

Noppes Homeland

18/08/2010 18:54:40
Quote Anchor link
Ik weet niet wat je loopt te wauwelen, maak nu eerst gewoon 1 query die het resultaat oplevert hetgeen je nodig hebt voor presentatie.

Karl Karl op 18/08/2010 18:48:54:
Ga maar eerst die andere fixen.


scheijnt een goed idee te zijn.
Gewijzigd op 18/08/2010 18:55:41 door Noppes Homeland
 

18/08/2010 18:58:03
Quote Anchor link
Noppes Homeland op 18/08/2010 18:54:40:
Ik weet niet wat je loopt te wauwelen, maak nu eerst gewoon 1 query die het resultaat oplevert hetgeen je nodig hebt voor presentatie.

Karl Karl op 18/08/2010 18:48:54:
Ga maar eerst die andere fixen.


scheijnt een goed idee te zijn.

Misschien een beetje kromme zin van mij. Ik bedoel ga eerst maar eens de opgenoemde punten fixen. En stap voor stap een join maken. En ja, je kunt vast wel een ingewikkelde join ervoor bedenken.
 
Jeffrey Tukker

Jeffrey Tukker

18/08/2010 19:04:44
Quote Anchor link
oke ik ben bezig met die punten aan te passen maar ja een ingewikkelde join als beginner die nog geen maand bezig is met php en mysql :P ik doe me best jongens zodra ik het verbeterd heb laat ik het weten

Toevoeging op 18/08/2010 19:18:48:

oke volgens mij heb ik nu alles aangepast wat ik aan moest passen maar ik kom niet uit join

al zou dit werken heb ik de adresgegevens onderaanstaan daarom wou ik het in variabelen doen waarna ik de volgorde van de variabelen kon veranderen omdat ik dacht dat ik eerst het email adres van de gene die de les geplaatst heb moet binnenhalen waarna ik dan pas de selectie kan maken welk bedrijf het heeft gedaan zodat ik dan de adresgegevens er uit kan halen

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
<?php
// Connectie + header importeren
include_once 'includes/connection2.php';
include_once 'includes/header.php';

// selecteer de les dmv id en GET
$query = "SELECT les, provincie, uren, lesomschrijving, emailplaatser FROM les where id=$_GET[id]";

    // Kijken of de Query gelukt is
    if( $result = mysql_query( $query ) )
    {

        // While loop om gegevens een variabele te geven
        while( $row = mysql_fetch_assoc( $result ) )
        {

                    echo'naamcursus: $row['naamles']';
            echo'provincie: $row['provincie']';
            echo'uren: $row['uren']';
            echo'lesomschrijving: $row['lesomschrijving']';
            echo'voor informatie en beschikbaarheid email: $row['emailplaatser']';
        }
    }

    else
    {
        // Foutmelding geven dat de Query niet gelukt is
        echo 'Er is een fout opgetreden bij het uitvoeren van de query.';
    }


// selecteer de bedrijfgegevens
$query2 = "SELECT bedrijfsnaam, straat, nummer, postcode, stad, telefoonnummer FROM bedrijven where email=$row['emailplaatser']";

    // Kijken of de Query gelukt is
    if( $result2 = mysql_query( $query2 ) )
    {

        // While loop om gegevens een variabele te geven
        while( $row2 = mysql_fetch_assoc( $result2 ) )
        {

            
            echo'bedrijfsnaam: $row2['bedrijfsnaam']';
            echo'straatnaam: $row2['straat']';
            echo'nummer: $row2['nummer']';
            echo'nummer: $row2['postcode']';
            echo'stad: $row2['stad']';
            echo'telefoon: $row2['telefoonnummer']';
            
        }
    }

    else
    {
        // Foutmelding geven dat de Query niet gelukt is
        echo 'Er is een fout opgetreden bij het uitvoeren van de query.';
    }


?>
 
Obelix Idefix

Obelix Idefix

18/08/2010 19:29:28
Quote Anchor link
Zoek een goede tut over hoe een join werkt. Heel basic is te vinden op bv http://www.tizag.com/mysqlTutorial/mysqljoins.php
Zelf (nog) niet gelezen: http://www.websitemaken.be/index.php?page=show_item&id=621

Zorg daarnaast dat je een goede controle inbouwt.
$_GET['id'] is vragen om problemen.
 
Jeffrey Tukker

Jeffrey Tukker

18/08/2010 19:54:20
Quote Anchor link
dankje voor de links ik ga dit eens grondig bestuderen

Toevoeging op 18/08/2010 23:26:22:

oke ik heb het allemaal bestudeerd en kom tot de onderstaande code alleen werkt mijn query niet ziet iemand wat ik fout doe en hebben jullie eventueel nog commentaar op de code ik selecteer nu alles maar wil later echt de velden selecteren die ik nodig heb en wil ik de &_GET[id] vervangen maar eerst maar is zorgen dat ik dit werkend heb.

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
<?php
// Connectie + header importeren
include_once 'includes/connection2.php';
include_once 'includes/header.php';

// selecteer de les dmv id en GET
$query = "SELECT * FROM lessen LEFT JOIN bedrijven ON les.emailplaatser=bedrijven.email
WHERE id=$_GET[id]"
;

    // Kijken of de Query gelukt is
    if( $result = mysql_query( $query ) )
    {

        // While loop
        while( $row = mysql_fetch_assoc( $result ) )
        {

        echo '$row['naamles'].';
        }
    }

    else
    {
        // Foutmelding geven dat de Query niet gelukt is
        echo 'Er is een fout opgetreden bij het uitvoeren van de query.';
    }

?>


Toevoeging op 19/08/2010 10:21:50:

uiteindelijk na de hele tijd proberen is het gelukt met de volgende code en nog bedankt!

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
<?php
// Connectie + header importeren
include_once 'includes/connection2.php';
include_once 'includes/header.php';

// Construct our join query
$query = "SELECT lessen.naamlessen, bedrijven.bedrijfsnaam ".
 "FROM lessen LEFT JOIN bedrijven ".
    "ON les.emailplaatser = bedrijven.email WHERE lid=$_GET[id]";
    
    
        // Kijken of de Query gelukt is
    if( $result = mysql_query( $query ) )
    {

        // While loop
       while($row = mysql_fetch_array($result)){
    echo("<h4>bedrijfsnaam:</h4>". $row['bedrijfsnaam'] . "</b><br>");
    echo("<h4>lesnaam:</h4>". $row['naamles'] . "</b><br>");
        }
    }

    else
    {
        // Foutmelding geven dat de Query niet gelukt is
        echo 'Er is een fout opgetreden bij het uitvoeren van de query.';
    }


?>
 



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.