2 tabellen en 1 query

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3 volgende »

Lissy Pixel

Lissy Pixel

06/10/2006 11:16:00
Quote Anchor link
@ Blanche : Ja ik zie het en veranderd. Nu zou het in principe voor dit gebeuren goed moeten gaan. Wat ik nu begrijp en wat ik niet door had is dat dit:

f.id, etc. een soort van sleutel is die je dan terug kan laten komen in je query om de gegevens eruit te krijgen en/of om de gegevens te koppelen.
Klopt he...

Eerder gaf je me dit voor de LEFT JOIN en heb ik bewaard *BIG SMILE*:
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
<?php
Maar stel nu dat je gegevens van alle fokkers op wilt halen,
dus ook van degene welke nog geen nestje hebben.
Je gebruikt dan een LEFT JOIN:

SELECT
    f.naam,
    n.id
FROM
    beardie_fokker AS f
LEFT JOIN
    beardie_nest AS n
ON
    f.id = n.fokker_id
?>
 
PHP hulp

PHP hulp

18/11/2024 14:39:39
 
Lissy Pixel

Lissy Pixel

06/10/2006 11:22:00
Quote Anchor link
@ Robert: HIER de link. Er komt een lege pagina en in de database is 1 fokker ingevoerd bij beardie_nest en 2 fokkers bij beardie_fokkers.

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
<?php
session_start();

// Zo begin je met een nieuw script!
ini_set ('display_errors', 1);
error_reporting (E_ALL);

// de functie om de tekst te halen uit de database
function display_inhoud()
{

// het path waar de plaatjes staan
$imgpath = '../fokkers/pic/';

// de query
$sql = "
SELECT
    f.id,
    f.kennelnaam,
    f.naam,
    f.telnr,
    f.email,
    f.website
    n.id,
    n.fokker_id
    n.geboortedatum,
    n.moeder,
    n.vader,
    n.geslacht_kleur,
    n.betaald
FROM
    beardie_fokkers AS f,
    beardie_nest AS n
WHERE
    f.id = n.fokker_id
    "
;

$res = mysql_query($sql);

if ($res && mysql_num_rows($res) >= 1)
    {

        while ($row = mysql_fetch_array($res))
        {

            // de output
            $fullpath        = $imgpath . $row['id'].'.jpg';
            $kennelnaam        = $row['kennelnaam'];
            $naam            = $row['naam'];
            $telnr            = $row['telnr'];
            $email            = $row['email'];
            $website        = $row['website'];
            $geboortedatum    = $row['geboortedatum'];
            $moeder            = $row['moeder'];
            $vader            = $row['vader'];
            $geslacht_kleur    = $row['geslacht_kleur'];
            $betaald        = $row['betaald'];
            
            echo '<p align=center><br /><img src="../../images/div1.gif" alt=sbcc>';
            echo '<br />';
            
            echo '<table width=500 border=2 cellpadding=1 cellspacing=1 class= teksttabel>';
            echo '<tr><td>';
            //echo '<p><image src="' . $fullpath . '"><br />';
            echo '<p><a href="' . $row['website'] . "\" target=\"_blank\">" . '<image src="' . $fullpath . '"></a>';
            echo '</td>';
            //echo '<td><p><br /><b>' . $kennelnaam . '</b><br />';
            echo '<td><p><a href="' . $row['website'] . "\" target=\"_blank\"><b>" . $kennelnaam . '</b></a><br />';
            echo '<p>' . $naam . '<br />';
            echo 'tel.nr: ' . $telnr . '<br />';
            //echo 'email: ' . $email . '<br />';
            echo 'email: <a href=mailto:' . $email . '>' . $naam . '</a><br />';
                        
            echo 'site: <a href="' . $row['website'] . "\" target=\"_blank\">" . $row['kennelnaam'] . '</a><br />';
            //echo '<br /><img src="../../images/div1.gif" alt=sbcc>';
            echo '</td></tr></table>';
            echo '</p>';
        }
    }
}


// geeft de tekst zoals in de functie aangevraagd weer
display_inhoud();
?>
 
Joren de Wit

Joren de Wit

06/10/2006 11:23:00
Quote Anchor link
lissy:
f.id, etc. een soort van sleutel is die je dan terug kan laten komen in je query om de gegevens eruit te krijgen en/of om de gegevens te koppelen.
Klopt he...


Die f is een alias voor de tabel beardie_fokkers (zodat je niet elke keer de hele naam hoeft uit te schrijven) en het id van die tabel is inderdaad de primary key van die tabel.

Het veld fokker_id in de tabel beardie_nest wordt een foreign key genoemd, omdat deze verwijst naar een veld in een andere tabel...

Met deze twee keys kun je tabellen inderdaad op een juiste manier aan elkaar koppelen.

ps.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
ini_set ('display_errors', 1);
error_reporting (E_ALL);
?>

komt echt helemaal bovenaan je script, dus zelfs nog voor de session_start(). Dat mag, want deze regels geven geen output naar de browser.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Lissy Pixel

Lissy Pixel

06/10/2006 11:26:00
Quote Anchor link
@ Blanche : ik krijg er alleen niet uit wat ik hoopte (zie mijn comment aan Robert...) Zie jij waar ik nu fout ga?

edit :
ik heb een echo "test"; neergezet en die zie je wel.
edit 2 :
Heb de foutmelding bovenaan gezet en zie alleen test en verder niets ook geen foutmelding... ik weet niet wat er fout gaat of waar ik wat zou kunnen wijzigen...
Gewijzigd op 01/01/1970 01:00:00 door Lissy Pixel
 
Robert Deiman

Robert Deiman

06/10/2006 11:33:00
Quote Anchor link
Lissy, kan je eens een tabeldump maken, dan kan ik hier lokaal ook eens gaan testen (scheelt mij die tabellen inkloppen) ik wil dan graag eens kijken of ik de fout in de query kan vinden, want hij komt niet in de while lus, wat bij jouw script betekend dat die geen resultaten vind.
 
Joren de Wit

Joren de Wit

06/10/2006 11:34:00
Quote Anchor link
Waar heb je die echo 'test'; neergezet?
 
Lissy Pixel

Lissy Pixel

06/10/2006 11:35:00
Quote Anchor link
Hier komen ze:

--
-- Tabel structuur voor tabel `beardie_fokkers`
--

CREATE TABLE `beardie_fokkers` (
`id` int(11) NOT NULL auto_increment,
`kennelnaam` varchar(255) NOT NULL default '',
`plaatje` varchar(255) NOT NULL default '',
`naam` varchar(150) NOT NULL default '',
`adres` varchar(255) NOT NULL default '',
`postcode` varchar(10) NOT NULL default '',
`woonplaats` varchar(255) NOT NULL default '',
`telnr` varchar(15) NOT NULL default '',
`email` varchar(100) NOT NULL default '',
`website` varchar(50) NOT NULL default '',
`bericht` text NOT NULL,
`inschrijfdatum` datetime NOT NULL default '0000-00-00 00:00:00',
`aanmeld_ip` varchar(15) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=3 ;

--
-- Gegevens worden uitgevoerd voor tabel `beardie_fokkers`
--

INSERT INTO `beardie_fokkers` VALUES (1, 'Bearded Collie Kennel Voorbeeld', '1.jpg', 'Jan en Miep Voorbeeld', 'Voorbeeldweg 1', '1000 AA', 'Voorbeeldstad', '0123-456789', '[email protected]', 'http://www.voorbeeld.nl', '<p align="center"><i><b><font size=+2 color=red>\r\n<marquee behavior="alternate", width="65%">Hier zijn puppies geboren !!!</marquee></font></b></i></p>', '2006-10-05 00:00:00', '89.146.9.165');
INSERT INTO `beardie_fokkers` VALUES (2, 'Bearded Collie Kennel Viervoeter', '2.jpg', 'Bep en Joost Geluk', 'Geluklaan 1', '4500 BL', 'Gelukstad', '0102-455789', '[email protected]', 'http://www.viervoeter.nl', '', '2006-10-01 00:00:00', '');


--
-- Tabel structuur voor tabel `beardie_nest`
--

CREATE TABLE `beardie_nest` (
`id` int(11) NOT NULL auto_increment,
`fokker_id` int(11) NOT NULL default '0',
`geboortedatum` date NOT NULL default '0000-00-00',
`moeder` varchar(255) NOT NULL default '0',
`vader` varchar(255) NOT NULL default '0',
`geslacht_kleur` varchar(255) NOT NULL default '',
`betaald` enum('ja','nee') default NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=2 ;

--
-- Gegevens worden uitgevoerd voor tabel `beardie_nest`
--

INSERT INTO `beardie_nest` VALUES (1, 1, '2006-10-08', 'Plusbeaus First Autumn Breeze', 'Celtsdale Dream for Plusbeaus', '3 Zwart-wit Reutjes en 3 Blauw-wit Teefjes en 3 Bruin-wit Reutjes en 1 Fawn-wit Teefje', 'ja');
 
Lissy Pixel

Lissy Pixel

06/10/2006 11:36:00
Quote Anchor link
Blanche:
Waar heb je die echo 'test'; neergezet?


Zie script:

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
84
<?php
// Zo begin je met een nieuw script!
ini_set ('display_errors', 1);
error_reporting (E_ALL);

session_start();

// de functie om de tekst te halen uit de database
function display_inhoud()
{

// het path waar de plaatjes staan
$imgpath = '../fokkers/pic/';

// de tekst boven aan de pagina
echo "<p>test</p>";

// de query
$sql = "
SELECT
    f.id,
    f.kennelnaam,
    f.naam,
    f.telnr,
    f.email,
    f.website
    n.id,
    n.fokker_id
    n.geboortedatum,
    n.moeder,
    n.vader,
    n.geslacht_kleur,
    n.betaald
FROM
    beardie_fokkers AS f,
    beardie_nest AS n
WHERE
    f.id = n.fokker_id
    "
;

$res = mysql_query($sql);

if ($res && mysql_num_rows($res) >= 1)
    {

        while ($row = mysql_fetch_array($res))
        {

            // de output
            $fullpath        = $imgpath . $row['id'].'.jpg';
            $kennelnaam        = $row['kennelnaam'];
            $naam            = $row['naam'];
            $telnr            = $row['telnr'];
            $email            = $row['email'];
            $website        = $row['website'];
            $geboortedatum    = $row['geboortedatum'];
            $moeder            = $row['moeder'];
            $vader            = $row['vader'];
            $geslacht_kleur    = $row['geslacht_kleur'];
            $betaald        = $row['betaald'];
            
            echo '<p align=center><br /><img src="../../images/div1.gif" alt=sbcc>';
            echo '<br />';
            
            echo '<table width=500 border=2 cellpadding=1 cellspacing=1 class= teksttabel>';
            echo '<tr><td>';
            //echo '<p><image src="' . $fullpath . '"><br />';
            echo '<p><a href="' . $row['website'] . "\" target=\"_blank\">" . '<image src="' . $fullpath . '"></a>';
            echo '</td>';
            //echo '<td><p><br /><b>' . $kennelnaam . '</b><br />';
            echo '<td><p><a href="' . $row['website'] . "\" target=\"_blank\"><b>" . $kennelnaam . '</b></a><br />';
            echo '<p>' . $naam . '<br />';
            echo 'tel.nr: ' . $telnr . '<br />';
            //echo 'email: ' . $email . '<br />';
            echo 'email: <a href=mailto:' . $email . '>' . $naam . '</a><br />';
                        
            echo 'site: <a href="' . $row['website'] . "\" target=\"_blank\">" . $row['kennelnaam'] . '</a><br />';
            //echo '<br /><img src="../../images/div1.gif" alt=sbcc>';
            echo '</td></tr></table>';
            echo '</p>';
        }
    }
}


// geeft de tekst zoals in de functie aangevraagd weer
display_inhoud();
?>
 
Joren de Wit

Joren de Wit

06/10/2006 11:39:00
Quote Anchor link
Zorg even voor een goede foutafhandeling. Ik gok namelijk dat

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
($res && mysql_num_rows($res) >= 1) == false
?>


waardoor alles binnen dat if-statement niet meer uitgevoerd wordt. Zorg dus dat je achter elke if ook weer een else hebt met een alternatief...

Je script, met een stukje foutafhandeling:
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
84
85
<?php
// Zo begin je met een nieuw script!
ini_set ('display_errors', 1);
error_reporting (E_ALL);

session_start();

// de functie om de tekst te halen uit de database
function display_inhoud()
{

    // het path waar de plaatjes staan
    $imgpath = '../fokkers/pic/';
    
    // de query
    $sql = "
    SELECT
        f.id,
        f.kennelnaam,
        f.naam,
        f.telnr,
        f.email,
        f.website
        n.id,
        n.fokker_id
        n.geboortedatum,
        n.moeder,
        n.vader,
        n.geslacht_kleur,
        n.betaald
    FROM
        beardie_fokkers AS f,
        beardie_nest AS n
    WHERE
        f.id = n.fokker_id
        "
;
    
    $res = mysql_query($sql) or die(mysql_error()); //Als de query niet lukt, geef dan een error
    
    if ($res && mysql_num_rows($res) >= 1)
    {

        while ($row = mysql_fetch_array($res))
        {

            // de output
            $fullpath        = $imgpath . $row['id'].'.jpg';
            $kennelnaam        = $row['kennelnaam'];
            $naam            = $row['naam'];
            $telnr            = $row['telnr'];
            $email            = $row['email'];
            $website        = $row['website'];
            $geboortedatum    = $row['geboortedatum'];
            $moeder            = $row['moeder'];
            $vader            = $row['vader'];
            $geslacht_kleur    = $row['geslacht_kleur'];
            $betaald        = $row['betaald'];
            
            echo '<p align=center><br /><img src="../../images/div1.gif" alt=sbcc>';
            echo '<br />';
            
            echo '<table width=500 border=2 cellpadding=1 cellspacing=1 class= teksttabel>';
            echo '<tr><td>';
            //echo '<p><image src="' . $fullpath . '"><br />';
            echo '<p><a href="' . $row['website'] . "\" target=\"_blank\">" . '<image src="' . $fullpath . '"></a>';
            echo '</td>';
            //echo '<td><p><br /><b>' . $kennelnaam . '</b><br />';
            echo '<td><p><a href="' . $row['website'] . "\" target=\"_blank\"><b>" . $kennelnaam . '</b></a><br />';
            echo '<p>' . $naam . '<br />';
            echo 'tel.nr: ' . $telnr . '<br />';
            //echo 'email: ' . $email . '<br />';
            echo 'email: <a href=mailto:' . $email . '>' . $naam . '</a><br />';
                        
            echo 'site: <a href="' . $row['website'] . "\" target=\"_blank\">" . $row['kennelnaam'] . '</a><br />';
            //echo '<br /><img src="../../images/div1.gif" alt=sbcc>';
            echo '</td></tr></table>';
            echo '</p>';
        }
    }

    else
    {
        echo 'Of de query is niet gelukt, of er was geen resultaat.';
    }
}


// geeft de tekst zoals in de functie aangevraagd weer
display_inhoud();
?>
 
Lissy Pixel

Lissy Pixel

06/10/2006 11:45:00
Quote Anchor link
Dus de else erbij met vermelding en dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
($res && mysql_num_rows($res) >= 1) == true
?>


nee toch? of wat doe ik daar?
Gewijzigd op 01/01/1970 01:00:00 door Lissy Pixel
 
Joren de Wit

Joren de Wit

06/10/2006 11:45:00
Quote Anchor link
Nee, dat bedoelde ik niet. Ik bedoelde dat die conditie niet true was waardoor je if-statement niet uitgevoerd wordt ;)
 
Lissy Pixel

Lissy Pixel

06/10/2006 11:48:00
Quote Anchor link
Ohhh zo dus zo laten...ik ga is kijken en meld me.

Er is een foutmelding met deze tekst:

You have an error in your SQL syntax near '.id, n.fokker_id n.geboortedatum, n.moeder, n.vader, n.geslacht_kleur,' at line 9
Gewijzigd op 01/01/1970 01:00:00 door Lissy Pixel
 
Joren de Wit

Joren de Wit

06/10/2006 11:51:00
Quote Anchor link
Lokaal getest, en ik heb de fout. Het zit in je mysql query, die moet als volgt zijn:

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
SELECT
    f.id,
    f.kennelnaam,
    f.naam,
    f.telnr,
    f.email,
    f.website,
    n.id,
    n.fokker_id,
    n.geboortedatum,
    n.moeder,
    n.vader,
    n.geslacht_kleur,
    n.betaald
FROM
    beardie_fokkers AS f,
    beardie_nest AS n
WHERE
    f.id = n.fokker_id


Er ontbraken 2 komma's in je query, achter f.website en n.fokker_id ;)

ps. Als je het script runt zoals ik je in mijn post van 11.39 geeft, zul je zien dat je MSYQL Syntax error krijgt...
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Robert Deiman

Robert Deiman

06/10/2006 11:54:00
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
SELECT f.id,
      f.kennelnaam,
      f.naam,
      f.telnr,
      f.email,
      f.website,
      n.id,
      n.fokker_id,
      n.geboortedatum,
      n.moeder,
      n.vader,
      n.geslacht_kleur,
      n.betaald
FROM beardie_fokkers AS f,
      beardie_nest AS n
WHERE f.id = n.fokker_id
 
Lissy Pixel

Lissy Pixel

06/10/2006 11:59:00
Quote Anchor link
YESSSSS en ook nog de verbinding gemaakt maar goed hij doet het nu en echoot wat :))))
Dit vergeet ik dus noooooooooooooooooooooooit meer en heel veel geleerd en antwoorden op vragen die ik al maaaaaaanden bij me droeg :))))))
 
Joren de Wit

Joren de Wit

06/10/2006 12:01:00
Quote Anchor link
Hehe, zo zie je maar. Vragen moet je gewoon stellen, anders kom je niet verder :P
 
Robert Deiman

Robert Deiman

06/10/2006 12:03:00
Quote Anchor link
Blanche, je was sneller dan ik.. :) Maargoed, het werkt nu perfect ;) Ik zal ook eens kijken of ik met de JOIN variant de boel zo krijg als dit, dat is eigenlijk nog mooier :)
 
Lissy Pixel

Lissy Pixel

06/10/2006 12:07:00
Quote Anchor link
@ Robert : Ja en ik ben altijd benieuwd naar nieuwe varianten en dan ook de uitleg waarom. Dus kom maar op ;-)

@ Blanche : ik heb nog zoveel vragen want dit onderdeeltje is van een project wat voor een non-profit stichting is en ik ben ook bezig met een soort van admin voor iemand die echt alleen maar administratief dingen kan maar verder niets van PC's afweet.
Dit CRMtje dient echt heeeeeeeel simpel en gebruiksvriendelijk te zijn. Ik meld me zeker weer om mijn overige vragen te stellen.

Voor beide heren: dank jullie wel voor jullie geduld en inzet voor mij!!!
 
Robert Deiman

Robert Deiman

06/10/2006 12:13:00
Quote Anchor link
Goed Lissy, komt die dan he :)

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
SELECT
    f.id,
    f.kennelnaam,
    f.naam,
    f.telnr,
    f.email,
    f.website,
    n.id,
    n.fokker_id,
    n.geboortedatum,
    n.moeder,
    n.vader,
    n.geslacht_kleur,
    n.betaald
FROM
    beardie_fokkers AS f
LEFT JOIN
    beardie_nest AS n
ON
    f.id = n.fokker_id


Wat het verschil is met de query zoals je hem nu had, is dat ook bekende fokkers waar op het moment geen bekende nesten van zijn worden getoond.
Edit:

De velden die dus niet over de fokker gaan, maar over de nesten, worden met NULL gevuld.
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
 
Joren de Wit

Joren de Wit

06/10/2006 12:13:00
Quote Anchor link
@Robert: de query zoals hij hierboven staat is een voorbeeld van een INNER JOIN. Je zou hem kunnen herschrijven als:

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
SELECT
    f.id,
    f.kennelnaam,
    f.naam,
    f.telnr,
    f.email,
    f.website,
    n.id,
    n.fokker_id,
    n.geboortedatum,
    n.moeder,
    n.vader,
    n.geslacht_kleur,
    n.betaald
FROM
    beardie_fokkers AS f
INNER JOIN
    beardie_nest AS n
ON
    f.id = n.fokker_id


Maarja, niet echt nuttig in dit geval...
 

Pagina: « vorige 1 2 3 volgende »



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.