SQL Get varible uit url
Code (php)
1
2
3
4
5
2
3
4
5
<?
$unData = mysql_real_escape_string($_REQUEST['jaar']);
$media = mysql_query("SELECT * FROM `videos` WHERE jaar = '".$_GET['jaar']."' ORDER BY ID DESC LIMIT 24") or die (mysql_error());
while($spelen = mysql_fetch_assoc($media)){
?>
$unData = mysql_real_escape_string($_REQUEST['jaar']);
$media = mysql_query("SELECT * FROM `videos` WHERE jaar = '".$_GET['jaar']."' ORDER BY ID DESC LIMIT 24") or die (mysql_error());
while($spelen = mysql_fetch_assoc($media)){
?>
Dus wanneer ik naar ?pagina=videos&jaar=2013 ga, komen alle videos uit het jaar 2013.
Maar ik wil graag dat wanneer ik naar ?pagina=videos ga dat alle videos er komen te staan, weet iemand hoe ik dat moet doen?
Gewijzigd op 12/01/2013 08:58:07 door Yesyah Deli
Ik heb het nu voor je voorgekauwd, maar 't zou mooi zijn als je er zelf wat van leert.
Dus lees al het commentaar per regel goed door. Snap wat ik doe. Snap je iets niet: vragen.
En je weet: domme vragen bestaan niet. O jawel: niet-gestelde vragen!
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
35
36
37
38
39
40
41
42
43
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
<?php
// gebruik van < ? is afgeraden, gebruik altijd < ?php !
// kijk hier of er een jaar is
if(isset($_GET['jaar']))
{
$jaar = intval($_GET['jaar']);
// $_REQUEST niet gebruiken, gebruik $_GET. En het is een int, dus: intval()!
}
// als er dus geen jaar is opgegeven
else
{
$jaar = 'jaar';
// dan krijg je WHERE jaar = jaar, wat altijd waar is
}
$sql = "SELECT id, titel, link, meer, extra
FROM videos
WHERE jaar = " . $jaar . "'
ORDER BY id DESC
LIMIT 24";
// gebruik geen * maar noem alles wat je wilt
// gebruik geen ` (backticks)!
// gebruik om (hele) getallen geen enkele haakjes, maar gewoon niets
// je kan beter eerst je SQL maken. Die kan je dan echoën als je wilt
// echo $sql;
// zoals hierboven ;)
$res = mysql_query($sql);
// voer je query uit
// laat je script niet doodgaan als dit even niet lukt
// kijk of je query gelukt is
if($res !== false)
{
// query gelukt, loop rijen af (die HOEVEN er niet te zijn)
while($spelen = mysql_fetch_assoc($res))
{
// hier dus je while-loop
}
}
?>
// gebruik van < ? is afgeraden, gebruik altijd < ?php !
// kijk hier of er een jaar is
if(isset($_GET['jaar']))
{
$jaar = intval($_GET['jaar']);
// $_REQUEST niet gebruiken, gebruik $_GET. En het is een int, dus: intval()!
}
// als er dus geen jaar is opgegeven
else
{
$jaar = 'jaar';
// dan krijg je WHERE jaar = jaar, wat altijd waar is
}
$sql = "SELECT id, titel, link, meer, extra
FROM videos
WHERE jaar = " . $jaar . "'
ORDER BY id DESC
LIMIT 24";
// gebruik geen * maar noem alles wat je wilt
// gebruik geen ` (backticks)!
// gebruik om (hele) getallen geen enkele haakjes, maar gewoon niets
// je kan beter eerst je SQL maken. Die kan je dan echoën als je wilt
// echo $sql;
// zoals hierboven ;)
$res = mysql_query($sql);
// voer je query uit
// laat je script niet doodgaan als dit even niet lukt
// kijk of je query gelukt is
if($res !== false)
{
// query gelukt, loop rijen af (die HOEVEN er niet te zijn)
while($spelen = mysql_fetch_assoc($res))
{
// hier dus je while-loop
}
}
?>
Ja ik heb een paar vragen ik ben nog nieuw met dit, waarom is het beter om t op jou manier te doen?
En je code doet het verder niet bij mij, ik heb het voorheen altijd zo gedaan:
Code (php)
1
2
3
4
5
2
3
4
5
<?
$unData = mysql_real_escape_string($_REQUEST['jaar']);
$media = mysql_query("SELECT * FROM `videos` WHERE jaar = '".$_GET['jaar']."' ORDER BY ID DESC LIMIT 24") or die (mysql_error());
while($spelen = mysql_fetch_assoc($media)){
?>
$unData = mysql_real_escape_string($_REQUEST['jaar']);
$media = mysql_query("SELECT * FROM `videos` WHERE jaar = '".$_GET['jaar']."' ORDER BY ID DESC LIMIT 24") or die (mysql_error());
while($spelen = mysql_fetch_assoc($media)){
?>
$_REQUEST kan zowel $_POST als $_GET zijn en welke wil je nou? Defineer duidelijk hoe en wat.
<!php werkt op alle platformen. Als je je website verhuist naar een andere server waarop <! niet werkt zit je met de gebakken peren.
<!=$spelen;!> is prima, want dat is dan weer een short-tag die geen echo nodig heeft. Een uitzondelijk geval dus!
Kijk eerst of $_GET['jaar'] wel bestaat: zo ja: gebruik die. Zo nee: standaard.
De volgorde kan ook andersom, maar meestal toon je de primaire (de actie waarop je hoopt en die je kan verwachten) als eerste.
Soms ook andersom, maar net hoe en wat. Bij functies wil je juist de return helemaal op het eind, tenzij het een foutmelding is.
Mijn script werkt niet zeg je: krijg je nog iets van een melding?
Echo $sql eens... is die wel correct?
Let wel dat ik daar zomaar wat kolomnamen verzonnen heb. Ik ken jouw tabel natuurlijk niet!!
Ik krijg een lege pagina zonder resultaten
En Danny, wat dacht je daar mee te gaan bereiken? Een ongelijkheid in het wilde weg....
Yesyah Deli op 12/01/2013 11:45:02:
Ik krijg een lege pagina zonder resultaten
Kortom: de fout-controle moet uitgebreider:
Vervang:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
// kijk of je query gelukt is
if($res !== false)
{
// query gelukt, loop rijen af (die HOEVEN er niet te zijn)
while($spelen = mysql_fetch_assoc($res))
{
// hier dus je while-loop
}
}
?>
// kijk of je query gelukt is
if($res !== false)
{
// query gelukt, loop rijen af (die HOEVEN er niet te zijn)
while($spelen = mysql_fetch_assoc($res))
{
// hier dus je while-loop
}
}
?>
Door
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
// kijk of je query gelukt is
if($res === false)
{
echo 'Query ' . $sql . ' is misluktt: ' . mysql_error();
}
// als de query wel gelukt is, kijk of er resultaten zijn
elseif(mysql_num_rows($res) == 0)
{
echo 'De query is gelukt, maar er zijn geen resultaten';
}
// in het laatste geval, dus als de query niet mislukt is en er zijn meer dan 0
// rijen...
else
{
while($spelen = mysql_fetch_assoc($res))
{
// hier dus je while-loop
}
}
?>
// kijk of je query gelukt is
if($res === false)
{
echo 'Query ' . $sql . ' is misluktt: ' . mysql_error();
}
// als de query wel gelukt is, kijk of er resultaten zijn
elseif(mysql_num_rows($res) == 0)
{
echo 'De query is gelukt, maar er zijn geen resultaten';
}
// in het laatste geval, dus als de query niet mislukt is en er zijn meer dan 0
// rijen...
else
{
while($spelen = mysql_fetch_assoc($res))
{
// hier dus je while-loop
}
}
?>
Sorry ik had verkeerd gelezen :)
Dit is de foutmelding die ik krijg: De query is gelukt, maar er zijn geen resultaten
Ik begrijp alleen niet waarom $jaar = 'jaar' altijd waar is?
Eddy E op 12/01/2013 09:24:01:
Die enkele quote hoort daar niet.
Toevoeging op 12/01/2013 19:38:44:
Tim Slootweg op 12/01/2013 18:59:39:
@eddy,
Ik begrijp alleen niet waarom $jaar = 'jaar' altijd waar is?
Ik begrijp alleen niet waarom $jaar = 'jaar' altijd waar is?
Zonder quotes dus: jaar = jaar
Geeft altijd bij beiden hetzelfde resultaat.