Ik wil dat een geregistreerde gebruiker een regel kan verwijderen uit een database.
tot nu toe heb ik dit, maar dat werkt niet:
<?php
$host = "localhost";
$dbusername = "root";
$password = "";
$db = "testbase";

mysql_connect("$host", "$dbusername", "$password") or die ("niet gelukt te connecten");
mysql_select_db("$db") or die ("het lukt niet");
?>

<html>
<body>
<h2> wat wil je verwijderen</h2>
<form id="form1" name="form1" method="post" >
<label>
<input type="text" id="naam" />
</label>
<label>
<input type="submit" name="Submit" value="Submit" />
</label>
</form>
</body>
</html>

<?php
//Hier roep ik de tabel aan en nu zou de regel met de geselecteerde naam moeten verdwijnen.
$query= "DELETE FROM namen WHERE naam = '$naam'";
mysql_query($query) or die("niet geslaagd !!!");
echo "database is bijgewerkt";

?>

Wat krijg ik voor een melding ? gewoon niets.

alvast bedankt.
klopt weinig van het script.
in je query moet je zoiezo $_POST['naam'] gebruiken.
in je input veld van naam ben je name="" vergeten.

en variabelen buiten quotes houden
name, dat klopt.

Maar ik had daar name staan en dat werkte niet.
Kun je me helpen WAAR in de querie dan $_POST['naam'] moet staan ?
omdat k zo aardig ben:

<?php  
  $host = "localhost";
  $dbusername = "root";
  $password = "";
  $db = "testbase";

mysql_connect($host, $dbusername, $password) or die ("niet gelukt te connecten");
mysql_select_db($db) or die ("het lukt niet");

if($_POST['submit'])
{
//Hier roep ik de tabel aan en nu zou de regel met de geselecteerde naam moeten verdwijnen.
$query= "DELETE FROM namen WHERE naam = '".mysql_real_escape_string($_POST['naam'])."'";   
mysql_query($query) or die(mysql_error());
echo "database is bijgewerkt";
}
?> 
<html>
<body>
<h2> wat wil je verwijderen</h2>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" >
<label>
<input type="text" id="naam" />
</label>
<label>
<input type="submit" name="submit" value="Verwijderen" />
</label>
</form>
</body>
</html>

Tip: kijk en probeer te begrijpen wat er nu staat, als je iets niet snapt, vraag het dan gelijk ;)

edit: Typo
Het werkt nog niet, maar krijg nu wel de melding dat de database is bijgewerkt.

begrijp eigenlijk <?php echo $_SERVER['PHP_SELF'];?> ook niet .

Wat wordt hier eigenlijk in gewoon hollands gedaan?
Die superglobal verwijst naar het huidige bestand.
Verwijst naar het bestand of naar de database?

Het moet toch kunnen om met een formulier een variabele te benoemen, die vervolgens in een querie zet zonder zoveel poespas ?

Ik heb het volgende gedaan

SELECT FROM namen WHERE naam is "pietjepuk"

Deze Querie op zich is goed, want als ik dit in de querie zet werkt het zelfs zonder op submit te drukken.

Hetgene dat dus nog niet lukt is de variabele aan de querie toe te voegen.
patrick schreef op 02.09.2006 18:37
Verwijst naar het bestand of naar de database?


In een form statement noteer je de methode - in dit geval POST - en de file waar hij je informatie naar moet toe sturen. Je kunt dus bijvoorbeeld bij action dit neer zetten:


<form method="post" action="jenaamvanjebestand.php">

</form>
Maar als je je bestanden gaat verhuizen of je gaat iets anders doen kan de locatie niet meer kloppen. Daarvoor heb je de global:


<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">

</form>



Die verwijst dus naar jou bestand. In dit geval dus jenaamvanjebestand.php.


Het moet toch kunnen om met een formulier een variabele te benoemen, die vervolgens in een querie zet zonder zoveel poespas ?

Ik heb het volgende gedaan

SELECT FROM namen WHERE naam is "pietjepuk"

Deze Querie op zich is goed, want als ik dit in de querie zet werkt het zelfs zonder op submit te drukken.

Hetgene dat dus nog niet lukt is de variabele aan de querie toe te voegen.


En dit is arabish. Kan je niet een beetje ABN schrijven? Jij wilt dat wij jou helpen, neem dan tenminste de tijd om een fatsoenlijke reactie te schrijven.
excusez,

Ik zal het posten:
<?php
$host = "localhost";
$dbusername = "root";
$password = "";
$db = "testbase";

mysql_connect($host, $dbusername, $password) or die ("niet gelukt te connecten");
mysql_select_db($db) or die ("het lukt niet");

if($_POST['submit'])
{
//Hier roep ik de tabel aan en nu zou de regel met de geselecteerde naam moeten verdwijnen.
$query= "DELETE FROM namen WHERE naam = 'jones'";
mysql_query($query) or die(mysql_error());
echo "database is bijgewerkt";
}
?>
<html>
<body>
<h2> wat wil je verwijderen</h2>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" >
<label>
<input type="text" naam="naam" />
</label>
<label>
<input type="submit" name="submit" value="Verwijderen" />
</label>
</form>
</body>
</html>

Vervolgens gebeurt dit.
De rij van Jones wordt nu verwijderd uit de database.
Voeg ik echter : '".mysql_real_escape_string($_POST['naam'])."'"
In de querie in,in plaats van de naam Jones en typ ik Jones in het formulier, druk op submit dan gebeurt er niets.
Dus het toevoegen van de variabele "Jones", die ik heb ingetypt in het formulier, aan de querie gaat niet goed.

Hopelijk is het zo wel duidelijk,
Werkt dit?:


<?php 
error_reporting(E_ALL);
?>

<html>
<head><title>Database bijwerker</title></head>
<body>

<?php
  
  $host = "localhost";
  $dbusername = "root";
  $password = "";
  $db = "testbase";

mysql_connect($host, $dbusername, $password) or die ("niet gelukt te connecten");
mysql_select_db($db) or die(mysql_error());

if($_SERVER["REQUEST_METHOD"] == "POST")
 {
//Hier roep ik de tabel aan en nu zou de regel met de geselecteerde naam moeten verdwijnen.
$query= "DELETE FROM namen WHERE naam = '".mysql_real_escape_string($_POST['naam'])."'";   
mysql_query($query) or die(mysql_error());
echo "Database is bijgewerkt.";
 }
else
 {
   ?>
   <h2> Wat wil je verwijderen?</h2>
   <form action="<?php echo $_SERVER['PHP_SELF']; ?> " method="post">
   <label>
   <input type="text" naam="naam" />
   </label>
   <label>
   <input type="submit" value="Verwijderen" />
   </label>
   </form>
  <?php
 }
?>
</body>
</html>


Als het goed is zou dit moeten werken..
Helaas,

Parse error: parse error, unexpected T_IF in D:\phpmap\xampp\htdocs\xampp\delete2.php on line 19

Ik wilde dit perse in 1 pagina afhandelen, maar ik vraag me af of dat handig is.

Reageren