info uit verschillende tables halen in mijn database??
Ik ben in het bezit van een script van een watch series site.
Ik wil nu de laatst 20 toegevoegde episodes uit de database halen. Dit is geen probleem.
Het probleem is, in mijn episodes table in de database heb ik een series veld. De waarde hiervan is een id.
Ik heb een aparte series table die ook een id veld heeft, maar ook een serie name veld.
Nu wil ik de laatste 20 episodes uit mijn episodes table halen, maar ik krijg dan natuurlijk als serie naam een getal te zien.
Nu wil ik een if functie gebruiken om toch de naam van die serie te krijgen inplaats van het id.
Ik maak gebruik van deze code:
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
31
32
33
34
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
<?php
$sql = "SELECT *
FROM episodes
ORDER BY id
DESC LIMIT 20";
$result = mysql_query($sql);
$season = array();
while($row = mysql_fetch_assoc($result))
{
if($row2['series'] == 'id')
{
$seriesid = $row['name'];
$sql2 = "SELECT *
FROM series
WHERE id = $seriesid";
$result2 = mysql_query($sql2);
$row = mysql_fetch_assoc($result2);
}
echo '
' . $row['series'] . ' Season ' . $row['season'] . ' Episode ' . $row['episode'] . ': ' . $row['name'] . '
</br>';
}
?>
$sql = "SELECT *
FROM episodes
ORDER BY id
DESC LIMIT 20";
$result = mysql_query($sql);
$season = array();
while($row = mysql_fetch_assoc($result))
{
if($row2['series'] == 'id')
{
$seriesid = $row['name'];
$sql2 = "SELECT *
FROM series
WHERE id = $seriesid";
$result2 = mysql_query($sql2);
$row = mysql_fetch_assoc($result2);
}
echo '
' . $row['series'] . ' Season ' . $row['season'] . ' Episode ' . $row['episode'] . ': ' . $row['name'] . '
</br>';
}
?>
Ik ben er van bewust dat dit niet gaat werken. Heeft iemand misschien een oplossing of een ander idee?
Thanks! Ruud
Bekijk deze link is:
http://dev.mysql.com/doc/refman/5.0/en/join.html
Hier zit de "inner join" functie tussen. Deze kan gebruikt worden om uit 2 tabellen informatie te halen waar bijv. 2 id's gelijk aan elkaar zijn.
Hoop dat je er iets aan hebt.
Rick
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$sql = "SELECT *
FROM episodes INNER JOIN series ON episodes.series=series.id
ORDER BY id
DESC LIMIT 20";
$result = mysql_query($sql);
while($row = mysql_fetch_assoc($result))
{
echo '
' . $row['series'] . ' Season ' . $row['season'] . ' Episode ' . $row['episode'] . ': ' . $row['name'] . '
</br>';
}
?>
$sql = "SELECT *
FROM episodes INNER JOIN series ON episodes.series=series.id
ORDER BY id
DESC LIMIT 20";
$result = mysql_query($sql);
while($row = mysql_fetch_assoc($result))
{
echo '
' . $row['series'] . ' Season ' . $row['season'] . ' Episode ' . $row['episode'] . ': ' . $row['name'] . '
</br>';
}
?>
Dan krijg ik namelijk deze error: Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/trebo/public_html/temp/index.php on line 218
Heel erg bedankt voor je hulp!
Gewijzigd op 16/06/2011 10:40:02 door Ruud bos
Bovendien gebruik je nooit * in een query, en zeker niet bij het gebruik van JOINS. In combinatie met dubbele veldnamen kan dit leuke foutmeldingen opleveren die je in mysql_error() terug kan vinden.
Gewijzigd op 16/06/2011 10:43:06 door - Ariën -
Heb de * verwijderd, maar blijf de foutmelding krijgen.
- Aar - op 16/06/2011 10:42:01:
Je mist foutafhandeling in je mysql_query.
Bouw dit eerst eens in. Dan ga je zien wat de fout is.
als je de asterisk (*) verwijdert, moet je wel alle kolomnamen specificeren;)
Ben nog niet echt verder gekomen, want hij blijft een error geven en ik weet ook niet of ik de INNER JOIN functie wel goed gebruik.
Ik ben een php newbie en probeer het te leren, maar dit is iets te hoog gegrepen denk ik.
Iemand nog tips?
- SanThe - op 16/06/2011 17:32:00:
Bouw dit eerst eens in. Dan ga je zien wat de fout is.
- Aar - op 16/06/2011 10:42:01:
Je mist foutafhandeling in je mysql_query.
Bouw dit eerst eens in. Dan ga je zien wat de fout is.
Apart dat er in de tabel episodes een veld series zit.