Ik heb nu twee tabellen waar ik happy mee ben.
Dit zijn twee queries die ik heb gemaakt:

// de is query voor de tabel: beardie_fokkers
$sql = "SELECT fokker_id, fokker_kennelnaam, fokker_naam, fokker_telnr, fokker_email, fokker_website FROM beardie_fokkers";

// de query voor de tabel: beardie_nest
$sql = "SELECT nest_id, nest_geboortedatum, nest_nest_moeder, nest_vader, nest_geslacht_kleur, nest_betaald FROM beardie_nest";

Wat ik mis is dat ze beide aan elkaar worden gemaakt (gelinkt) tot 1 query en ik weet niet hoe dit te doen. Dus dat ik uiteindelijk 1 query krijg welke ùit beide tabellen de velden haalt zoals in beide queries vraag.

Uitgeschreven met de bijbehorende velden van betreffende tabellen:
$sql = 'SELECT fokker_kennelnaam, fokker_naam, fokker_telnr, fokker_email, fokker_website FROM beardie_fokkers WHERE fokker_id=nest_id';

Maar ik weet dat dit niet goed gaat maar zie even niet hoe op te lossen. Wie weet raad?
@ 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*:
<?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
?>
@ 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.

<?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();
?>
lissy schreef op 06.10.2006 11:16
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.
<?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.
@ 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...
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.
Waar heb je die echo 'test'; neergezet?
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');
Blanche schreef op 06.10.2006 11:34
Waar heb je die echo 'test'; neergezet?


Zie script:

<?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();
?>
Zorg even voor een goede foutafhandeling. Ik gok namelijk dat

<?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:
<?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();
?>
Dus de else erbij met vermelding en dit:

<?php
($res && mysql_num_rows($res) >= 1) == true
?>

nee toch? of wat doe ik daar?

Reageren