_GET ?id=1 probleem

Status
Niet open voor verdere reacties.

jensiboyke

Gebruiker
Lid geworden
4 jul 2010
Berichten
43
Ik zou namelijk het volgende willen doen:

Ik zou graag wanneer ik op het potloodje duw (edit knop)
YgR7IkB.png


het volgende te zien krijgen. in m'n url. /admin/aanpassingen-klanten.php?id=1
Daarna ga ik naar deze pagina
ypK1oZo.png


Daar zouden de gegevens moeten ingevult worden. (dat snap ik :p en lever ik ook niet bij als snippet alleen indien gevraagt)

Het volgende heb ik in php
PHP:
include '../config/config.php';
              
              $_GET['klant_id']= 1;
              $query = mysqli_query($con, "SELECT  * FROM klanten WHERE klant_id = '" . $_GET['klant_id'] . "' ");
              $fetch = mysqli_fetch_assoc($query);

Maar hoe moet ik $_GET['klant_id']= 1; aanpassen zodat ik via het klikken van de edit knop de waarde "dynamisch" krijg?

De HTML code van de edit / remove knop:
HTML:
<td class="table-action">
                  <a href="#"><i class="fa fa-pencil"></i></a>
                  <a href="#" class="delete-row"><i class="fa fa-trash-o"></i></a>
</td>

Met vriendelijke groeten.
 
Laatst bewerkt:
$_GET-variabelen moet je niet in je code declareren, die horen juist vanuit de URL te komen ;)

Dus haal je declaratie weg, verander de variabele in je query naar $_GET['id'] (doe wel wat controles op die variabele om SQL-injection te voorkomen) en zorg dat bij het weergeven van elke rij in je overzicht de url opgebouwd wordt met de ID
 
Als ik uw vraag goed begrijp, dan zou u het volgende in de html code doen :

Code:
<td class="table-action">
<?php

 $query = mysqli_query($con, "SELECT  * FROM klanten");
 while($row = mysqli_fetch_assoc($query)){
     echo "<a href=\"aanpassingen-klanten.php?id=". $row["id"] ."\"><i class=\"fa fa-pencil\"></i></a>";
     echo "<a href=\"#\" class=\"delete-row\"><i class=\"fa fa-trash-o\"></i></a>";
}

?>
</td>

En dan als u op de pencil naast de eerste klant klikt, zal uw url op de volgende manier eruit zien .../aanpassingen-klanten.php?id=1

En dan in aanpassingen-klanten.php file kunt u $_GET["id"] gebruiken...
 
Bedankt mannen! Dit ga ik nu testen. Indien opgelost laat ik het weten ;).

De html werkt zoals ik wou @Magneticweb en @Tha Devil bedankt hiervoor!



EDIT: De fout zelf opgelost. Ik heb een controle ingestoken
PHP:
 if (isset($_GET['klant_id']))
              {
                $id = $_GET['klant_id'];
              }

Daarna in de html stond de link naar id ipv klant_id. Dat loste alles op.
Bedankt allen!
 
Laatst bewerkt:
Die check voegt niet veel toe. Je controleert alleen of hij bestaat en zo ja ga je hem in een aparte variabele stoppen (Dubbel gebruik van je geheugen aangezien hij al in de $_GET-array staat ;))

Je zult nog steeds een foutmelding krijgen wanneer je nu die pagina aan gaat roepen zonder ?klant_id= lijkt mij?

Verder is SQL-injection nu nog steeds mogelijk, controleer dus zinvol: Is klant_id een integer?
 
Klant_id is inderdaad een integer. Die check is er ondertussen al uit en heb ik de code geoptimaliseerd voor verhinder van SQL-Injection.

Inderdaad Tha Devil. Dat was m'n 2de fout die ik deze avond poste. De oplossing was zoals je weergeeft ?klant_id= ipv ?id :P
 
Klant_id is inderdaad een integer.
Het was niet zozeer een vraag van mijn kant maar de check die gedaan moet worden "Is klant_id een integer" ;)

Anders kun je er gewoon ?klant_id=helpmij (Of SQL queries) van maken.

Inderdaad Tha Devil. Dat was m'n 2de fout die ik deze avond poste. De oplossing was zoals je weergeeft ?klant_id= ipv ?id :P

Refereer je naar dit?
PHP:
if (isset($_GET['klant_id']))
              {
                $id = $_GET['klant_id'];
              }
Dit is onnodige code, je gaat nu $id vullen met waarde die toch al in een variabele staat.

Draai de check dan om en geef een foutmelding wanneer $_GET['klant_id'] niet bestaat.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan