Ik heb een vraagje over een knop die ik wil gebruiken om iets uit de database te verwijderen. Het probleem is echter dat op de pagina al een variabele in de URL zit. Deze variabele wordt gebruikt om te kijken welke gebruiker verwijderd moet worden, dat wordt namelijk bepaald op de vorige pagina en op deze manier kan de informatie worden doorgegeven.

Tot zover prima, maar om knoppen af te handelen zet ik ook iets in de URL. Hier gaat het fout want de knop werkt. Ik heb ook getest met print, en de knop werkt niet. Moet ik een andere vorm van knop afhandelen gebruiken? Zo ja welke?

Ik ken verder alleen de manier van FORM, maar dan wordt de pagina toch gerefresht? En dan ben ik dus de id uit de URL weer kwijt.

$klant = $_GET['id'];

Code om de klant id uit de URL te halen. Dit werkt.


if(isset($_GET['actie']))
{
	if($_GET['actie'] == 'verwijder')
	{
		$query = "DELETE FROM gebruikers WHERE email = '".$klant."'";
		// Voer SQL uit 
		mysql_query($query) or die( mysql_error() ); 
		$error = "hoi";
		}
}

Dit is de afhandeling van de knop, die dus niet werkt. Die $error was even om te testen of hij het deed. Wordt later op de pagina met print afgedrukt, maar dat gebeurd dus niet.

<a href="?actie=verwijderen">Klik hier om de klant te verwijderen.</a>

En dit is een simpele knop. Maar dat moet dus waarschijnlijk niet via de URL gaan.

Alvast bedankt voor reacties.
Je zult het id van de klant ook best meegeven.
?id=klantid&actie=verwijderen

Overigens doe je zo'n dingen best via een post, dit is veiliger ivm hackers enzo.
Als die een linkje maakt met http://uwsite.nl/admin.php?id=13&actie=verwijder en jij bent ingelogd op je site en je klikt er toevallig op, is je klant verdwenen, wat vast niet gewenst is...
<a href="?id=$klant&actie=verwijderen">Klik hier om de klant te verwijderen.</a>


Ik heb dit geprobeerd, maar dat werkt ook niet. Waarschijnlijk omdat hij de pagina refresht en dan weet hij niet meer wat $klant is? En er is geen andere manier om de id mee sturen.

En hoe doe ik zoiets via post? Ik ken post alleen maar via een formulier versturen, maar dan moet hij ook de pagina refreshen... en dan weet hij de id dus ook niet meer.
je kan altijd kijken of de GET variabelen wel bestaan. Om alle get waarden op te halen doe je

<?php print_r($_GET); ?>

De pagina refresh indd. Dat moet ook, de url moet immers veranderen naar een url waarin de juiste GET variabelen staan. In dit geval zou ik zeker niet met POST werken, dan moet je allemaal formulieren maken en dat is in dit geval nergens voor nodig.

Er is geen groot verschil tussen GET en POST, het ene haal je uit de url -> GET, de ander uit een formulier ->POST

Het afvangen van variabelen gaat daarna allemaal op dezelfde manier:

<?php
if(isset($_GET['getvariabele'])){
echo $_GET['getvariabele'];
}elseif(isset($_POST['postvariabele'])){
echo $_POST['postvariabele'];
}else{
echo 'geen variabele kunnen opvangen';
}
?>
Als je al variabelen in de url hebt, en je wilt dat die na een POST bewaard blijven, doe je:

<form method="post" accept-charset="UTF8" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
Crispijn, voordat ik op de knop druk geeft 'ie:
Array ( [id] => [email protected] , dus dat klopt.

Nadat ik op de knop druk:
Array ( [id] => $klant [actie] => verwijderen

Dus hij weet niet meer wat $ klant is. Best logisch want klant is:
$klant = $_GET['id'];

Maar hoe los ik dit op?
Dan moet je zoals jan in zijn voorbeeld geeft <?php echo $_SERVER['REQUEST_URI']; ?> in je form action gebruiken. Dan gebruikt hij opnieuw de get variabelen.

Als dit niet lukt kan je de url gewoon nabootsen dus

<form action="?id=<?php echo $_GET['klant'];?>&actie=verwijderen">
Ik ken die manier niet... en snap hem niet helemaal. Hoezo met echo?

Ik heb er dit van gemaakt:

<html>
<form action="?id=<?php echo $_GET['klant'];?>&actie=verwijderen">  
<input type="submit" name="submit" value="tekst">
</form>
</html>


Hij handelt de knop nu wel af (getest met iets printen), maar daarna verdwijnen de GETS. De array met GET is nu namelijk: Array ( [submit] => tekst ). Hij onthoud wat in die submit knop staat... en niet die zin erboven.
Klopt, een action bij een GET-formulier kan geen GET parameters bevatten.


<form method="GET" action="<?php echo $_SERVER['REQUEST_URI']; ?>">
<input type="hidden" name="id" value="<?php echo $_GET['klant']; ?>" />
<input type="hidden" name="actie" value="verwijderen" />
<input type="submit" value="tekst" />
</form>


Dat zal wel werken ;-).
Als je van je method "post" maakt en daarna gewoon mijn voorbeeld volgt is er niets aan het handje.
Jan, ik had het geprobeerd maar dat lukte ook niet. Ik zal vast iets fout hebben gedaan dan.

Methode van Jezpur werkt in elk geval! :) Type = hidden ook nog nooit gebruikt. Moet nog veel leren haha.

Super bedankt voor alle reacties in elk geval !!!

Reageren