Query in Query of Inner Join?
persoon
-id
-naam
film
-id
-titel
bezetting
-persoonid
-testfilmid
-karakter
Nu komt het volgende ik roep op de pagina persoon.php alle gegevens uit de tabel 'persoon' aan via ?id= en $_GET['id']. Dit werkt gewoon naar behoren. Nu komt het volgende. Nu wil ik alle films laten zien waar de persoon inzit. Dit gebeurt uiteraard via het tabel 'bezetting'.
Momenteel gebruik ik deze code (ik gebruik if omdat niet alle personen in een film spelen):
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<ol>
<?php
include 'config.php';
mysql_select_db("databasenaam", $con);
$result = mysql_query("SELECT filmid, karakternaam, FROM bezetting WHERE persoonid='" . $_GET['id'] . "'");
while($row = mysql_fetch_array($result))
{
if($row[persoonid])
{
echo '<li>' . $row["filmid"] . ' - ' . $row["karakternaam"] . '<br>';
}
}
mysql_close($con);
?>
</ol>
<?php
include 'config.php';
mysql_select_db("databasenaam", $con);
$result = mysql_query("SELECT filmid, karakternaam, FROM bezetting WHERE persoonid='" . $_GET['id'] . "'");
while($row = mysql_fetch_array($result))
{
if($row[persoonid])
{
echo '<li>' . $row["filmid"] . ' - ' . $row["karakternaam"] . '<br>';
}
}
mysql_close($con);
?>
</ol>
Nu laat hij dus het filmid nummer zien. Echter wil ik dat hij de filmtitel laat zien! Ik heb een vermoeden dat dit met INNER JOIN werkt? Of zit ik dan helemaal fout? Ik loop helemaal vast. Tevens heb ik nog 1 vraag... Ik wil tevens dat als een persoon in een film gespeeld heeft, er "Films:" bovenaan het lijstje komt. Hoe doe ik dit? Wederom met een IF? Ik hoop dat jullie mijn beide vragen begrijpen...
Wie kan me verder helpen?
Gewijzigd op 01/01/1970 01:00:00 door Kevin Stoove
als niemand me voor is, post ik hem vandaag nog
Het volgende zou je moeten doen..
In je while maak je een connectie met die andere tabel en daar vraag je het id op van je $row['id'] en als goed is heb je dan de gegevens.. Zoiets wordt de query dan.
Code (php)
1
2
3
2
3
<?php
$select_info = mysql_query("SELECT * FROM persoon WHERE id='".intval($row['id'])."'");
?>
$select_info = mysql_query("SELECT * FROM persoon WHERE id='".intval($row['id'])."'");
?>
Dat zet je dus na je while loop
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
SELECT
f.id AS film_id,
f.titel AS titel,
b.karakternaam AS karakternaam
FROM
bezetting AS b
JOIN
film AS f
ON
b.film_id = f.id
WHERE b.persoonid='" . $_GET['id'] . "'");
f.id AS film_id,
f.titel AS titel,
b.karakternaam AS karakternaam
FROM
bezetting AS b
JOIN
film AS f
ON
b.film_id = f.id
WHERE b.persoonid='" . $_GET['id'] . "'");
Gewijzigd op 01/01/1970 01:00:00 door Lauren Zonneveld
@Niels: Je begrijpt niet wat ik wil ben ik bang.
@Lauren: Ik heb dit gebruikt en dus zo verwerkt:
Code (php)
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
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
<?php
include 'config.php';
mysql_select_db("data", $con);
$result = mysql_query("SELECT
f.id AS film_id,
f.titel AS titel,
b.karakter AS karakter
FROM
bezetting AS b
JOIN
testfilm AS f
ON
b.testfilm = f.id
WHERE b.persoonid='" . $_GET['id'] . "'");
while($row = mysql_fetch_array($result))
{
if($row[b.persoonid])
{
echo '<li><a href=film.php?id=' . $row["film_id"] . '>' . $row["titel"] . '</a> - ' . $row["karakter"] . '<br>';
}
}
mysql_close($con);
?>
include 'config.php';
mysql_select_db("data", $con);
$result = mysql_query("SELECT
f.id AS film_id,
f.titel AS titel,
b.karakter AS karakter
FROM
bezetting AS b
JOIN
testfilm AS f
ON
b.testfilm = f.id
WHERE b.persoonid='" . $_GET['id'] . "'");
while($row = mysql_fetch_array($result))
{
if($row[b.persoonid])
{
echo '<li><a href=film.php?id=' . $row["film_id"] . '>' . $row["titel"] . '</a> - ' . $row["karakter"] . '<br>';
}
}
mysql_close($con);
?>
Echter werkt het niet. en krijg ik een error! Namelijk:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/scarafax/domains/scarafax.com/public_html/dataadmin/test2.php on line 19
Ik snap dit niet! Kan iemand mij uitleggen wat hiermee bedoelt word en hoe ik het kan oplossen?
Gewijzigd op 01/01/1970 01:00:00 door Kevin Stoove
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$query = '
SELECT
f.id AS film_id,
f.titel AS titel,
b.karakter AS karakter
FROM
bezetting AS b
JOIN
testfilm AS f
ON
b.testfilm = f.id
WHERE b.persoonid="'. $_GET['id'] .'"';
$result = mysql_query($query) or die($query.'<br>'.mysyql_error());
?>
$query = '
SELECT
f.id AS film_id,
f.titel AS titel,
b.karakter AS karakter
FROM
bezetting AS b
JOIN
testfilm AS f
ON
b.testfilm = f.id
WHERE b.persoonid="'. $_GET['id'] .'"';
$result = mysql_query($query) or die($query.'<br>'.mysyql_error());
?>
Gewijzigd op 01/01/1970 01:00:00 door Lauren Zonneveld
Fatal error: Call to undefined function msyql_error() in /home/scarafax/domains/scarafax.com/public_html/dataadmin/test2.php on line 17
...dat is een typfout... het moet zijn mysql_error()... de post hierboven zal ik iets editen.
b.testfilm = f.id
en dat moest zijn:
b.testfilmid = f.id
En nu is de error weg. Excuses hiervoor. Echter weergeeft hij niets verder... terwijl de database vol staat met info.
Gewijzigd op 01/01/1970 01:00:00 door Kevin Stoove
msyql_error(); moet zijn mysql_error();
Weet ik, maar goed nu geen error meer dus (had het al veranderd die msyql en mysql. Maar hij weergeeft dus gewoon niets, terwijl de database vol staat met info?!?!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$query = '
SELECT
f.id AS film_id,
f.titel AS titel,
b.karakter AS karakter
FROM
bezetting AS b
JOIN
testfilm AS f
ON
b.testfilm = f.id
WHERE
b.persoonid="'. $_GET['id'] .'"';
$result = mysql_query($query) or die($query.'<br>'.mysyql_error());
while($row = mysql_fetch_array($result)) {
echo '<li><a href=film.php?id=' . $row["film_id"] . '>' . $row["titel"] . '</a> - ' . $row["karakter"] . '<br>';
?>
$query = '
SELECT
f.id AS film_id,
f.titel AS titel,
b.karakter AS karakter
FROM
bezetting AS b
JOIN
testfilm AS f
ON
b.testfilm = f.id
WHERE
b.persoonid="'. $_GET['id'] .'"';
$result = mysql_query($query) or die($query.'<br>'.mysyql_error());
while($row = mysql_fetch_array($result)) {
echo '<li><a href=film.php?id=' . $row["film_id"] . '>' . $row["titel"] . '</a> - ' . $row["karakter"] . '<br>';
?>
Dit zou moeten werken...
Dus dat er alleen
===
Films:
hier de lijst
===
(de tekst Films:) word geweergeeft indien er dus films zijn met de persoon in de hoofdrol. Ik had het eerst zo gedaan:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
while($row = mysql_fetch_array($result))
{
if($row[b.persoonid])
echo 'Films:';
{
echo '<li><a href=film.php?id=' . $row["film_id"] . '>' . $row["titel"] . '</a> - ' . $row["karakter"] . '<br>';
}
}
{
if($row[b.persoonid])
echo 'Films:';
{
echo '<li><a href=film.php?id=' . $row["film_id"] . '>' . $row["titel"] . '</a> - ' . $row["karakter"] . '<br>';
}
}
echter als ik dit zo doe weergeeft hij op elke rij "Films:" terwijl ik het maar 1x wil bovenaan het lijstje. Wie weet de oplossing hiervoor? Een IF in een IF?
Gewijzigd op 01/01/1970 01:00:00 door Kevin Stoove
Code (php)
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
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
<?php
$query = '
SELECT
f.id AS film_id,
f.titel AS titel,
b.karakter AS karakter
FROM
bezetting AS b
JOIN
testfilm AS f
ON
b.testfilm = f.id
WHERE
b.persoonid="'. $_GET['id'] .'"';
$result = mysql_query($query) or die($query.'<br>'.mysyql_error());
if(mysql_num_rows($result) > 0) {
echo '<h2>Films</h2>';
echo '<ul>';
while($row = mysql_fetch_array($result)) {
echo '<li><a href="film.php?id=' . $row["film_id"] . '">' . $row["titel"] . '</a> - ' . $row["karakter"] . '</li>';
}
echo '</ul>';
}
?>
$query = '
SELECT
f.id AS film_id,
f.titel AS titel,
b.karakter AS karakter
FROM
bezetting AS b
JOIN
testfilm AS f
ON
b.testfilm = f.id
WHERE
b.persoonid="'. $_GET['id'] .'"';
$result = mysql_query($query) or die($query.'<br>'.mysyql_error());
if(mysql_num_rows($result) > 0) {
echo '<h2>Films</h2>';
echo '<ul>';
while($row = mysql_fetch_array($result)) {
echo '<li><a href="film.php?id=' . $row["film_id"] . '">' . $row["titel"] . '</a> - ' . $row["karakter"] . '</li>';
}
echo '</ul>';
}
?>
Slordigheidje .... regel 16 => mysyql_error()