Indien geen GET dan automatisch een waarde

Overzicht

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 volgende »

Kees Mulder

Kees Mulder

06/08/2012 09:43:24
Anchor link
Ik heb een pagina die een overzicht moet geven met items. Deze heet items.php. Als je deze gewoon in de browser intikt dan krijg je niet te zien. Maar als je een link doet bijv. items?page=1&filter%5B%5D=2103&searched=searched kan krijg je wel het overzicht met de items.

Nu wil ik als de pagina items geen link krijgt maar gewoon items.php krijgt dat hij toch een waarde kiest.

Het zal dus iets moeten worden als (hieronder) maar hoe krijg ik dan die waarde over.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php

if(empty($_GET))
{
    
}


else {
}


?>



Dit is het begin van de pagina items.php

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
<?php
session_start();
if(isset($_GET['filter']))
{
    
    $_SESSION['filter'] = $_GET['filter'];
 header( 'Location: /items?page=1', true, 303 );
    exit( );
}


    elseif(!isset($_GET['filter']) and isset($_GET['page']))
    {

        if($_GET['page'] == 1)
        {

            if(isset($_GET['searched']))
            {

                unset($_SESSION['filter']);
            }
    else
                {
                    $_SESSION['filter'] = $_SESSION['filter'];
                }
        }
    else
            {
                $_SESSION['filter'] = $_SESSION['filter'];
            }
    }
    else
        {
            unset($_SESSION['filter']);
}

?>
 
PHP hulp

PHP hulp

19/04/2024 18:47:12
 
Chris PHP

Chris PHP

06/08/2012 10:14:12
Anchor link
Je hebt 3 $_GET waardes namelijk: page, filter en searched. Zijn deze dan alle 3 leeg?
 
Kees Mulder

Kees Mulder

06/08/2012 10:16:56
Anchor link
het moet inderdaad zo zijn als alle drie de $_GET leeg zijn dat hij dan de waarde moet doorgeven.

Dus zoiets als:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php

if(empty($_GET)) {
        $_GET['filter'] = "2103";
    $_GET['page'] = "1";
    $_GET['searched'] = "searched";

}


else
{
}

?>
Gewijzigd op 06/08/2012 10:17:47 door Kees Mulder
 
Chris PHP

Chris PHP

06/08/2012 10:19:58
Anchor link
Waarom gebruik je $_REQUEST ipv $_GET?
 
Kees Mulder

Kees Mulder

06/08/2012 10:20:57
Anchor link
sorry, had het niet goed staan en heb het gewijzigd... maar bij bovenstaande met de GET dan krijg ik nog steeds geen overzicht.
 
Chris PHP

Chris PHP

06/08/2012 10:24:03
Anchor link
Nee volgens mij is $_GET namelijk nooit echt 'leeg'. Wat krijg je als je zoiets als dit gebruikt?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
if ($_GET['filter'] == "" && $_GET['page'] == "" && $_GET['searched'] == "") {

//Doe hier je ding, wanneer de waardes leeg zijn.

} esle {

// Doe hier je ding, wanneer de waardes wel gevult zijn
};
?>
Gewijzigd op 06/08/2012 10:38:35 door Chris PHP
 
Kees Mulder

Kees Mulder

06/08/2012 10:29:17
Anchor link
Oke maar hoe krijg ik de waardes nu gevult dat hij wel het overzicht geeft?
 
Chris PHP

Chris PHP

06/08/2012 10:34:57
Anchor link
Zoals je boven al deed, alleen dan in de if statement.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
if ($_GET['filter'] == "" && $_GET['page'] == "" && $_GET['searched'] == "") {

 $_GET['filter'] = "2103";
 $_GET['page'] = "1";
 $_GET['searched'] = "searched";

}
esle {

// Doe hier je ding, wanneer de waardes wel gevult zijn
};
?>


Let wel dat je hier de 1 als string wegzet en niet als integer (cijfer). Je kunt daar ook gewoon 1 neerzetten zonder de "", dan is het wel een integer.
Gewijzigd op 06/08/2012 10:38:20 door Chris PHP
 
Kris Peeters

Kris Peeters

06/08/2012 10:35:53
Anchor link
Ik veronderstel dat je dit bedoelt?

if ($_GET['filter'] == "" && $_GET['page'] == "" && $_GET['searched'] == "") {
Gewijzigd op 06/08/2012 10:36:07 door Kris Peeters
 
Chris PHP

Chris PHP

06/08/2012 10:37:30
Anchor link
Kris Peeters op 06/08/2012 10:35:53:
Ik veronderstel dat je dit bedoelt?

if ($_GET['filter'] == "" && $_GET['page'] == "" && $_GET['searched'] == "") {


Is dat niet precies het zelfde als wat ik zeg?
 
Kees Mulder

Kees Mulder

06/08/2012 10:40:06
Anchor link
Als ik dat doe met de waardes doorgeven dan geeft hij verder op een foutmelding:

Warning: Invalid argument supplied for foreach() in items.php on line 400

en de regel is dan:

foreach( $_SESSION['filter'] as $sFilter )
 
Kris Peeters

Kris Peeters

06/08/2012 10:47:15
Anchor link
Chris NVT op 06/08/2012 10:37:30:
Kris Peeters op 06/08/2012 10:35:53:
Ik veronderstel dat je dit bedoelt?

if ($_GET['filter'] == "" && $_GET['page'] == "" && $_GET['searched'] == "") {


Is dat niet precies het zelfde als wat ik zeg?


Nee, daar stonden enkele = tekens
 
Eddy E

Eddy E

06/08/2012 10:48:33
Anchor link
Ik doe het meestal zelf zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$filter
= 2103;
$page = 1;
$searched = 'searched';

if(isset($_GET))
 {

 foreach($_GET as $key => $val)
    {

    $$key = $val;
    }
 }
 
Chris PHP

Chris PHP

06/08/2012 10:49:37
Anchor link
Piet Mulder op 06/08/2012 10:40:06:
Als ik dat doe met de waardes doorgeven dan geeft hij verder op een foutmelding:

Warning: Invalid argument supplied for foreach() in items.php on line 400

en de regel is dan:

foreach( $_SESSION['filter'] as $sFilter )


Dat komt omdat je in je script session gebruikt daarvooer, dus zul je dat ook in dat stukje mee moeten nemen. Anders krijg je dus die foutmelding.

Toevoeging op 06/08/2012 10:50:32:

Kris Peeters op 06/08/2012 10:47:15:
Chris NVT op 06/08/2012 10:37:30:
Kris Peeters op 06/08/2012 10:35:53:
Ik veronderstel dat je dit bedoelt?

if ($_GET['filter'] == "" && $_GET['page'] == "" && $_GET['searched'] == "") {


Is dat niet precies het zelfde als wat ik zeg?


Nee, daar stonden enkele = tekens



Sorry maar ik zie toch echt dubbele ==, en ik heb er alleen maar typefouten verbeterd, niets aan de code.
 
Kees Mulder

Kees Mulder

06/08/2012 11:02:03
Anchor link
heb dan nu het volgende overgenomen maar nog steeds geen overzicht?

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

$filter
= "2103";
$page = "1";
$searched = "searched";

if(isset($_GET))
 {

 foreach($_GET as $key => $val)
    {

    $key = $val;
    }
 }


?>
 
Chris PHP

Chris PHP

06/08/2012 11:03:32
Anchor link
Piet Mulder op 06/08/2012 11:02:03:
heb dan nu het volgende overgenomen maar nog steeds geen overzicht?

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

$filter
= "2103";
$page = "1";
$searched = "searched";

if(isset($_GET))
 {

 foreach($_GET as $key => $val)
    {

    $key = $val;
    }
 }


?>


Omdat dit ook niet werkt. Je 'standaard' waardes worden nergens weergegeven.

Toevoeging op 06/08/2012 11:03:57:

P.S. Waarom spring je van een methode compleet over naar een andere?
 
Kees Mulder

Kees Mulder

06/08/2012 11:09:54
Anchor link
Omdat ik het zelf niet weet hoe ik het moet oplossen. Ben nu weer terug bij het oude, maar dan blijf ik de error op regel 400 houden. Hoe kan ik dat oplossen?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
if ($_GET['filter'] == "" && $_GET['page'] == "" && $_GET['searched'] == "") {

 $_GET['filter'] = "2103";
 $_GET['page'] = "1";
 $_GET['searched'] = "searched";

}
else {

// Doe hier je ding, wanneer de waardes wel gevult zijn
};
?>
 
Chris PHP

Chris PHP

06/08/2012 11:30:36
Anchor link
Kijk naar je $_SESSION, die is nu dus leeg, en kan hij geen foreach uitvoeren.

Dus probeer het zo eens.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
if ($_GET['filter'] == "" && $_GET['page'] == "" && $_GET['searched'] == "") {

 $_GET['filter'] = "2103";
 $_GET['page'] = "1";
 $_GET['searched'] = "searched";
 $_SESSION['filter'] = $_GET['filter'];

}
else {

// Doe hier je ding, wanneer de waardes wel gevult zijn
};
?>
 
Kees Mulder

Kees Mulder

06/08/2012 11:41:37
Anchor link
Als ik bovenstaande doe dan krijg ik de error en geen overzicht:

Notice: Undefined index: filter in items.php on line 2
 
Chris PHP

Chris PHP

06/08/2012 11:44:41
Anchor link
dat is een notice, je kunt je error_reporting uit zetten of het niveau aanpassen zodat hij geen notices laat zien.

Met een notice zou het wel gewoon kunnen werken.
 
Eddy E

Eddy E

06/08/2012 11:51:30
Anchor link
Je moet die else{} weghalen.

Nu zeg je: als er geen $_GET is... maak die aan. Klaar :D
Als er wel een $_GET is... ga dan allerlei dingen doen en etc.

Jij moet dus hebben:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
if ($_GET['filter'] == "" && $_GET['page'] == "" && $_GET['searched'] == "") {

 $_SESSION['filter'] = $_GET['filter'] = 2103;
 $_GET['page'] = 1;
 $_GET['searched'] = "searched";

}


// Doe hier je ding, wanneer de waardes wel gevult zijn
?>


Dus zonder de else{}.
En kijk even wat ik doe met $_SESSION['filter'] en $_GET['filter']...
Gewijzigd op 06/08/2012 11:52:52 door Eddy E
 

Pagina: 1 2 3 volgende »

 

Dit topic is gesloten.



Overzicht

 
 

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.