Query in Query of Inner Join?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Kevin Stoove

Kevin Stoove

03/11/2009 12:43:00
Quote Anchor link
Goedendag mensen, ik heb even een vraag. Ik heb 3 databases:

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)
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
<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
 
PHP hulp

PHP hulp

08/09/2024 03:13:52
 
Koen

koen

03/11/2009 13:08:00
Quote Anchor link
dit is te realiseren, alleen kom nu even niet op de query...
als niemand me voor is, post ik hem vandaag nog
 
Niels K

Niels K

03/11/2009 13:31:00
Quote Anchor link
Ik ben opzich een beginner in PHP, maar ik zou het zo opgelost hebben. Het kan sneller maar dat moet je niet aan mijn vragen:P Maar dan ben je in ieder geval uit de brand:)

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
  $select_info
= mysql_query("SELECT * FROM persoon WHERE id='".intval($row['id'])."'");
?>

Dat zet je dus na je while loop
 
Lauren Zonneveld

Lauren Zonneveld

03/11/2009 13:42: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
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'] . "'");
Gewijzigd op 01/01/1970 01:00:00 door Lauren Zonneveld
 
Kevin Stoove

Kevin Stoove

04/11/2009 08:44:00
Quote Anchor link
Sorry dat ik gisteren niet meer gereageerd heb, had het erg druk. Maar goed...

@Niels: Je begrijpt niet wat ik wil ben ik bang.

@Lauren: Ik heb dit gebruikt en dus zo verwerkt:

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
<?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);
?>


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
 
Lauren Zonneveld

Lauren Zonneveld

04/11/2009 08:48:00
Quote Anchor link
Je query blijkt niet juist te zijn. Maak dit er even van om te debuggen en post dan de error:
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
$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
 
Kevin Stoove

Kevin Stoove

04/11/2009 08:50:00
Quote Anchor link
Gedaan. Bij deze de error:

Fatal error: Call to undefined function msyql_error() in /home/scarafax/domains/scarafax.com/public_html/dataadmin/test2.php on line 17
 
Lauren Zonneveld

Lauren Zonneveld

04/11/2009 08:53:00
Quote Anchor link
...dat is een typfout... het moet zijn mysql_error()... de post hierboven zal ik iets editen.
 
Kevin Stoove

Kevin Stoove

04/11/2009 08:53:00
Quote Anchor link
De error heb ik in ieder geval weggewerkt. Ik had:

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
 
Jaron T

Jaron T

04/11/2009 08:56:00
Quote Anchor link
De error is wel weg, maar je kreeg geen mysql error omdat je de functie verkeerd had getypt:
msyql_error(); moet zijn mysql_error();
 
Kevin Stoove

Kevin Stoove

04/11/2009 08:58:00
Quote Anchor link
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?!?!
 
Lauren Zonneveld

Lauren Zonneveld

04/11/2009 08:59: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
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>';

?>


Dit zou moeten werken...
 
Kevin Stoove

Kevin Stoove

04/11/2009 09:09:00
Quote Anchor link
Dat werkt inderdaad, echter moet ik nu nog de tekst "Films:" weergeven INDIEN er dus gegevens in b.testfilmid. Hoe krijg ik dat voor elkaar?

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)
PHP script in nieuw venster Selecteer het PHP script
1
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>';
}

}

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
 
Koen

koen

04/11/2009 09:11:00
Quote Anchor link
je
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo 'Films:';

boven de loop zetten...
Gewijzigd op 01/01/1970 01:00:00 door koen
 
Lauren Zonneveld

Lauren Zonneveld

04/11/2009 09:31: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
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>';

}

?>
 
- SanThe -

- SanThe -

04/11/2009 09:57:00
Quote Anchor link
Slordigheidje .... regel 16 => mysyql_error()
 



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.