SQL Get varible uit url

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Yesyah Deli

Yesyah Deli

12/01/2013 08:56:33
Quote Anchor link
Ik heb dus dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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)){
    ?>

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

PHP hulp

16/11/2024 00:38:51
 
Eddy E

Eddy E

12/01/2013 09:24:01
Quote Anchor link
Lees even alle commentaar GOED door.
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)
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
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
        }
    }

?>
 
Yesyah Deli

Yesyah Deli

12/01/2013 09:38:23
Quote Anchor link
Bedankt!
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)
PHP script in nieuw venster Selecteer het PHP script
1
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)){
    ?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?=$spelen['jaar'];?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
    }
    ?>
 
Eddy E

Eddy E

12/01/2013 10:36:50
Quote Anchor link
Netjes scripten (en consequent zijn) is handig als je later (zeg: over 2 jaar) wat wil veranderen.
$_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!!
 
Yesyah Deli

Yesyah Deli

12/01/2013 11:45:02
Quote Anchor link
Oké bedankt voor de tips, ik heb het geprobeerd maar nog steeds krijg ik het niet werkend

Ik krijg een lege pagina zonder resultaten
 
D B

D B

12/01/2013 12:11:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?
else {
$jaar != '';
}

?>


Volgens mij staat er namelijk geen jaar in de tabel.
Gewijzigd op 12/01/2013 12:11:54 door D B
 
Erwin H

Erwin H

12/01/2013 14:04:48
Quote Anchor link
En Danny, wat dacht je daar mee te gaan bereiken? Een ongelijkheid in het wilde weg....
 
Eddy E

Eddy E

12/01/2013 14:12:33
Quote Anchor link
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)
PHP script in nieuw venster Selecteer het PHP script
1
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
        }
    }

?>


Door
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
<?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
        }
    }

?>
 
D B

D B

12/01/2013 14:43:34
Quote Anchor link
@eddy
Sorry ik had verkeerd gelezen :)
 
Yesyah Deli

Yesyah Deli

12/01/2013 18:33:51
Quote Anchor link
Dit is de foutmelding die ik krijg: De query is gelukt, maar er zijn geen resultaten
 
Tim S

Tim S

12/01/2013 18:59:39
Quote Anchor link
@eddy,

Ik begrijp alleen niet waarom $jaar = 'jaar' altijd waar is?
 
- SanThe -

- SanThe -

12/01/2013 19:37:07
Quote Anchor link
Eddy E op 12/01/2013 09:24:01:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
    $sql
= "SELECT id, titel, link, meer, extra
    FROM videos
    WHERE jaar = "
. $jaar . "' <====HIER=====
    ORDER BY id DESC
    LIMIT 24"
;
?>


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?


Zonder quotes dus: jaar = jaar
Geeft altijd bij beiden hetzelfde resultaat.
 



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.