Meerdere variabelen meegeven in url
Voor mijn website ben ik een error-afhandeling aan het ontwikkelen. Hiervoor roep ik een php-pagina op met in de url het errornummer en ik wil ook een extra info meegeven.
Bijvoorbeeld:
Ik heb een errornummer 1 en een relatienummer xyz
Dan denk ik dat ik het volgende moet opgeven:
Code (php)
Vraag: Is deze gedachtengang juist???
En nu aan de inkomende kant van de pagina error.php
Hoe krijg ik nu de tweede variabele ingelezen??
Wie geeft mij een suggestie??
Is het heel erg moeilijk om te bedenken dat dat $_GET['relatie'] zal zijn? ;-)
George van Baasbank op 11/01/2014 11:15:32:
Vraag: Is deze gedachtengang juist???
Ja.
George van Baasbank op 11/01/2014 11:15:32:
Hoe krijg ik nu de tweede variabele ingelezen??
Wie geeft mij een suggestie??
Wie geeft mij een suggestie??
Willem geeft natuurlijk het antwoord al, maar het is altijd een goed idee om bij twijfel gewoon even de GET en POST arrays middels een print_r naar het scherm te schrijven. Zie je direct wat er beschikbaar is in welke array.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
if($_GET['id']) {
$cRelatie = $_GET['id'];
}
if($_GET['error']) {
$cError = $_GET['error'];
include "include/connectie.inc.php";
$sql = "SELECT * FROM sys__error WHERE error = '$cError'";
$cResultError = mysqli_query($verbinding,$sql);
$rowError = mysqli_fetch_array($cResultError);
$cUrl = $rowError['url'];
eval("\$cUrl = \"$cUrl\";");
mysqli_data_seek($cResultError,0);
mysqli_close($verbinding);
}
?>
if($_GET['id']) {
$cRelatie = $_GET['id'];
}
if($_GET['error']) {
$cError = $_GET['error'];
include "include/connectie.inc.php";
$sql = "SELECT * FROM sys__error WHERE error = '$cError'";
$cResultError = mysqli_query($verbinding,$sql);
$rowError = mysqli_fetch_array($cResultError);
$cUrl = $rowError['url'];
eval("\$cUrl = \"$cUrl\";");
mysqli_data_seek($cResultError,0);
mysqli_close($verbinding);
}
?>
en het html-gedeelte:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<article class="<?php echo $cBox2 ;?>" id="home_featured21">
<!-- Vanaf hier de content -->
<p class="headertekst midden">Foutmelding</p>
<div class="regelhoogte25"></div>
<div class="box3">
<p class="headertekst midden"><?php echo $rowError['melding1'] ; ?></p>
<p class="headertekst midden"><?php echo $rowError['melding2'] ; ?></p>
<div class="regelhoogte25"></div>
<form action="<?php echo $cUrl ; ?>" method="POST">
<p class="midden"><input type="submit" name="submit" value="<?php echo $rowError['knoptekst'] ; ?>" /></p>
</form>
</div>
<!-- Tot hier de content -->
<div class="clear"></div>
</article>
<!-- Vanaf hier de content -->
<p class="headertekst midden">Foutmelding</p>
<div class="regelhoogte25"></div>
<div class="box3">
<p class="headertekst midden"><?php echo $rowError['melding1'] ; ?></p>
<p class="headertekst midden"><?php echo $rowError['melding2'] ; ?></p>
<div class="regelhoogte25"></div>
<form action="<?php echo $cUrl ; ?>" method="POST">
<p class="midden"><input type="submit" name="submit" value="<?php echo $rowError['knoptekst'] ; ?>" /></p>
</form>
</div>
<!-- Tot hier de content -->
<div class="clear"></div>
</article>
En het werkt ook nog.
Zijn hier nog verbeteringen op??
Gewijzigd op 11/01/2014 11:42:47 door George van Baasbank
Tenzij het een bewuste afweging is om POST te gebruiken (wellicht omdat je later via input-tags nog data aan het formulier gaat toevoegen) zou ik de method van je form naar GET wijzigen.
Code (php)
1
2
3
4
2
3
4
<form action="getForm.php?id=1" method="GET">
<input type="text" name="username">
<input type="submit" value="click" name="button">
</form>
<input type="text" name="username">
<input type="submit" value="click" name="button">
</form>
Welke parameters denk je nu in je GET array te krijgen? id, username en button? Dan heb je het mis. De query string wordt nu overschreven met de parameters vanuit het form en het id wordt dus niet meegegeven. Wil je ook id meegeven dan zal dat in een hidden input moeten en niet in de url.
Verander je de methode naar post dan gaat het wel goed en worden username en button in de POST array gestopt en id in de GET array.
Gewijzigd op 11/01/2014 12:08:12 door Erwin H
Erwin H op 11/01/2014 11:56:21:
De query string wordt nu overschreven met de parameters vanuit het form en het id wordt dus niet meegegeven.
Inderdaad, dat blijkt zo te werken. Vreemd, want dat lijkt in tegenspraak met wat in de HTML-standaard staat:
Quote:
With the HTTP "get" method, the form data set is appended to the URI specified by the action attribute