Meerdere variabelen meegeven in url

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

George van Baasbank

George van Baasbank

11/01/2014 11:15:32
Quote Anchor link
Hallo allemaal,

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php

if($rowAuditant['akkoord'] == 0 ) {
   $cAfwijzing = "afwijzing.php";
}
else {
   $cAfwijzing = "error.php?error=1&relatie='xyz'";
}

?>

<form action="<?php echo $cAfwijzing ; ?>" method="POST">
   <p class="midden"><input type="submit" name="submit" value="Afwijzen" /></p>
</form>


Vraag: Is deze gedachtengang juist???

En nu aan de inkomende kant van de pagina error.php

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
if($_GET['error']) {
    $cError = $_GET['error'];
}


Hoe krijg ik nu de tweede variabele ingelezen??

Wie geeft mij een suggestie??
 
PHP hulp

PHP hulp

22/12/2024 07:49:21
 
Willem vp

Willem vp

11/01/2014 11:19:51
Quote Anchor link
Is het heel erg moeilijk om te bedenken dat dat $_GET['relatie'] zal zijn? ;-)
 
Erwin H

Erwin H

11/01/2014 11:37:18
Quote Anchor link
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??

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.
 
George van Baasbank

George van Baasbank

11/01/2014 11:41:45
Quote Anchor link
IK heb het op deze manier opgelost in error.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
<?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);
}

?>


en het html-gedeelte:

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


En het werkt ook nog.

Zijn hier nog verbeteringen op??
Gewijzigd op 11/01/2014 11:42:47 door George van Baasbank
 
Willem vp

Willem vp

11/01/2014 11:49:20
Quote Anchor link
Wat me opvalt in je code, is dat je POST en GET requests mixt. Is op zich niks mis mee, maar zoals de situatie nu is geef je alle informatie door via een GET request (dus via de URL) en is de POST requestdata eigenlijk leeg.

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.
 
Erwin H

Erwin H

11/01/2014 11:56:21
Quote Anchor link
Maar daar zit een addertje onder het gras Willem. Neem dit form:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<form action="getForm.php?id=1" method="GET">
  <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
 
Willem vp

Willem vp

14/01/2014 11:02:40
Quote Anchor link
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
 



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.