Variabele verdwijnen na een druk op een link
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
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="text" name="zoekterm" value="<?php if(isset($_POST['zoekterm']))
echo htmlentities($_POST['zoekterm']); ?>">
<input type="submit" name="submit" value="Zoeken">
</form>
<?php
if ($a < $b){
echo '<li><a href= "'.$_SERVER['PHP_SELF'].'?pagina=c"</a></li>';}
?>
Gewijzigd op 19/04/2016 23:54:31 door Jac E
De ins&outs zijn mij een beetje onduidelijk maar wat mij als eerste opvalt is dat je $_GET en $_POST door elkaar gebruikt....
punt 2 omdat je de oude zoekwaarde weer invult kun je deze zo weer opnieuw versturen. Al is de zoektekst misschien hetzelfde, het wordt opnieuw aangeleverd in de $_POST en je mag het dus zien als een nieuwe waarde.
Je formulier wordt verstuurd in de POST method. De snelkoppeling is altijd een GET method en dus worden er geen POST variabelen meegestuurd.
Je zult dus een workaround moeten bedenken. Meerdere mogelijkheden zijn mogelijk.
Een van de mogelijkheden is de zoektekst in de sessie op te slaan en als de $_GET['pagina'] bestaat dan is men dus naar de volgende (of vorige) pagina aan het navigeren en dan kun je de zoektekst wederom uit de sessie halen.
Schematisch:
overzicht.php (GET): zoektekst uit de sessie verwijderen (reset), de <input> wordt zonder zoektekst weergegeven
overzicht.php (POST): zoektekst is verstuurd en staat in de $_POST array. Deze waarde moet naar de sessie geschreven worden.
overzicht.php?pagina=123 (GET): zoektekst wordt niet meegestuurd dus moet uit de sessie gelezen worden en wederom in de <input> gezet worden.
Toevoeging op 20/04/2016 00:33:27:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
session_start();
$zoekterm = '';
if($_SERVER['REQUEST_METHOD') == 'POST') {
// nieuwe zoekterm
$zoekterm = $_POST['zoekterm'];
} else {
// REQUEST_METHOD == GET
if(isset($_GET['pagina']) && isset($_SESSION['zoekterm'])) {
// pagina navigatie
$zoekterm = $_SESSION['zoekterm'];
}
}
// schrijf naar de sessie
$_SESSION['zoekterm'] = $zoekterm;
?>
<form method="post" action>
<input type="text" name="zoekterm" value="<?php echo htmlspecialchars($zoekterm); ?>">
<button type="submit">Zoeken</button>
</form>
session_start();
$zoekterm = '';
if($_SERVER['REQUEST_METHOD') == 'POST') {
// nieuwe zoekterm
$zoekterm = $_POST['zoekterm'];
} else {
// REQUEST_METHOD == GET
if(isset($_GET['pagina']) && isset($_SESSION['zoekterm'])) {
// pagina navigatie
$zoekterm = $_SESSION['zoekterm'];
}
}
// schrijf naar de sessie
$_SESSION['zoekterm'] = $zoekterm;
?>
<form method="post" action>
<input type="text" name="zoekterm" value="<?php echo htmlspecialchars($zoekterm); ?>">
<button type="submit">Zoeken</button>
</form>
Toevoeging op 20/04/2016 01:05:01:
p.s. Gebruik htmlspecialchars in combinatie met UTF-8 character encoding
http://stackoverflow.com/questions/6249151/how-to-properly-escape-html-form-input-default-values-in-php
Gewijzigd op 20/04/2016 01:02:45 door Frank Nietbelangrijk
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
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
<?php
session_start();
$zoekterm = '';
if($_SERVER['REQUEST_METHOD'] == 'POST') {
// nieuwe zoekterm
$zoekterm = $_POST['zoekterm'];
} else {
// REQUEST_METHOD == GET
if(isset($_GET['pagina']) && isset($_SESSION['zoekterm'])) {
// pagina navigatie
$zoekterm = $_SESSION['zoekterm'];
}
}
// schrijf naar de sessie
$_SESSION['zoekterm'] = $zoekterm;
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input class="textveld_administratie" type="text" name="zoekterm" value="<?php echo htmlspecialchars($zoekterm); ?>">
<input type="submit" name="submit" value="Zoeken">
</form>
<?php
echo '<li><a href= "'.$_SERVER['PHP_SELF'].'?pagina='.($pagina+1).'"<>Volgende pagina</a></li>';}
?>
session_start();
$zoekterm = '';
if($_SERVER['REQUEST_METHOD'] == 'POST') {
// nieuwe zoekterm
$zoekterm = $_POST['zoekterm'];
} else {
// REQUEST_METHOD == GET
if(isset($_GET['pagina']) && isset($_SESSION['zoekterm'])) {
// pagina navigatie
$zoekterm = $_SESSION['zoekterm'];
}
}
// schrijf naar de sessie
$_SESSION['zoekterm'] = $zoekterm;
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input class="textveld_administratie" type="text" name="zoekterm" value="<?php echo htmlspecialchars($zoekterm); ?>">
<input type="submit" name="submit" value="Zoeken">
</form>
<?php
echo '<li><a href= "'.$_SERVER['PHP_SELF'].'?pagina='.($pagina+1).'"<>Volgende pagina</a></li>';}
?>
Hoe ziet je query er uit? Mij lijkt dat het daar fout gaat.
Die wordt dan op regel 12 uit de sessie gehaald.
Frank: had je "hulp" code niet helemaal in het begin van het script en daarom werd $zoekterm toch gevuld met lege informatie na een submit. Weer wat geleerd. Super bedankt!
In zijn algemeenheid is het volgens mij stukken makkelijker om zoekfunctionaliteit altijd te implementeren via GET, je kunt dan ook zoekresultaten bookmarken, vooruit en achteruit navigeren zonder irritante meldingen over het her-verzenden van een formulier et cetera.
Bedankt ook voor de tip Thomas!