Indien geen GET dan automatisch een waarde
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.
Dit is het begin van de pagina items.php
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.
Dit is het begin van de pagina items.php
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
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']);
}
?>
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']);
}
?>
Je hebt 3 $_GET waardes namelijk: page, filter en searched. Zijn deze dan alle 3 leeg?
het moet inderdaad zo zijn als alle drie de $_GET leeg zijn dat hij dan de waarde moet doorgeven.
Dus zoiets als:
Dus zoiets als:
Code (php)
Gewijzigd op 06/08/2012 10:17:47 door Kees Mulder
Waarom gebruik je $_REQUEST ipv $_GET?
sorry, had het niet goed staan en heb het gewijzigd... maar bij bovenstaande met de GET dan krijg ik nog steeds geen overzicht.
Nee volgens mij is $_GET namelijk nooit echt 'leeg'. Wat krijg je als je zoiets als dit gebruikt?
Code (php)
1
2
3
4
5
6
7
8
9
10
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
};
?>
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
Oke maar hoe krijg ik de waardes nu gevult dat hij wel het overzicht geeft?
Zoals je boven al deed, alleen dan in de if statement.
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.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
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
};
?>
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
Ik veronderstel dat je dit bedoelt?
if ($_GET['filter'] == "" && $_GET['page'] == "" && $_GET['searched'] == "") {
if ($_GET['filter'] == "" && $_GET['page'] == "" && $_GET['searched'] == "") {
Gewijzigd op 06/08/2012 10:36:07 door Kris Peeters
Kris Peeters op 06/08/2012 10:35:53:
Ik veronderstel dat je dit bedoelt?
if ($_GET['filter'] == "" && $_GET['page'] == "" && $_GET['searched'] == "") {
if ($_GET['filter'] == "" && $_GET['page'] == "" && $_GET['searched'] == "") {
Is dat niet precies het zelfde als wat ik zeg?
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 )
Warning: Invalid argument supplied for foreach() in items.php on line 400
en de regel is dan:
foreach( $_SESSION['filter'] as $sFilter )
Chris NVT op 06/08/2012 10:37:30:
Is dat niet precies het zelfde als wat ik zeg?
Kris Peeters op 06/08/2012 10:35:53:
Ik veronderstel dat je dit bedoelt?
if ($_GET['filter'] == "" && $_GET['page'] == "" && $_GET['searched'] == "") {
if ($_GET['filter'] == "" && $_GET['page'] == "" && $_GET['searched'] == "") {
Is dat niet precies het zelfde als wat ik zeg?
Nee, daar stonden enkele = tekens
Ik doe het meestal zelf zo:
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 )
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:
Nee, daar stonden enkele = tekens
Chris NVT op 06/08/2012 10:37:30:
Is dat niet precies het zelfde als wat ik zeg?
Kris Peeters op 06/08/2012 10:35:53:
Ik veronderstel dat je dit bedoelt?
if ($_GET['filter'] == "" && $_GET['page'] == "" && $_GET['searched'] == "") {
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.
heb dan nu het volgende overgenomen maar nog steeds geen overzicht?
Piet Mulder op 06/08/2012 11:02:03:
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?
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?
Kijk naar je $_SESSION, die is nu dus leeg, en kan hij geen foreach uitvoeren.
Dus probeer het zo eens.
Dus probeer het zo eens.
Als ik bovenstaande doe dan krijg ik de error en geen overzicht:
Notice: Undefined index: filter in items.php on line 2
Notice: Undefined index: filter in items.php on line 2
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.
Met een notice zou het wel gewoon kunnen werken.
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:
Dus zonder de else{}.
En kijk even wat ik doe met $_SESSION['filter'] en $_GET['filter']...
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)
1
2
3
4
5
6
7
8
9
10
11
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
?>
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



