fout remove

Status
Niet open voor verdere reacties.

pascallino

Gebruiker
Lid geworden
29 dec 2009
Berichten
167
Ik ben bezig met een script voor een producten lijst met MySQL
Nu moet mijn script een rij uit de db verwijderen.
Dit is mijn code:
Code:
<?php 
If(isset($_POST['submit']))
{
    If($_POST['select'] == "")
    {
         echo "Je moet een keuze maken voordat je iets kan verwijderen!";
    }
    else
    {
    include 'connect.php';
    Mysql_query("DELETE FROM 'producten' WHERE naam='".$_POST['select']."';") or die("Er is iet fout gegaan. Foutmelding: ".mysql_error());
    mysql_close();
    echo "Product sucsesvol verwijderd.";
    }
}
else
{
include 'connect.php';
$query = mysql_query("SELECT naam FROM producten;") or die("Er is iets fout gegaan. Foutmelding: ".mysql_error());
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<select name="select">
<?php
while( $inhoud = mysql_fetch_assoc( $query ) )
{
?>
<option value="<?php echo $inhoud['naam']; ?>"><?php echo $inhoud['naam']; ?></option>
<?php
}
}
?>
</select>
<input type="submit" value="submit" />
</form>
Alleen als ik op "Submit" klik.
Gebeurt er helemaal niks.
Kan iemand mij helpen???
Mvg. Pascallino
 
Al aan het debuggen geweest?
Dus kijken wat er in $_post staat?
 
Het is me gelukt.
Was vergeten de submit button een naam te geven.
Bedankt.
 
Ik heb nog wel een paar opmerkingen over je code.

PHP:
If(isset($_POST['submit']))
Dit is geen betrouwbare manier om te controleren of het formulier verzonden is. Niet alle browsers sturen dit in alle gevallen mee. De enige betrouwbare manier is
PHP:
if ($_SERVER['REQUEST_METHOD'] == "POST")


PHP:
Mysql_query("DELETE FROM 'producten' WHERE naam='".$_POST['select']."';") or die("Er is iet fout gegaan. Foutmelding: ".mysql_error());
Deze query is kwetsbaar voor een SQL-injectie.
Om dat op te lossen moet je mysql_real_escape_string gebruiken
PHP:
mysql_query("DELETE FROM 'producten' WHERE naam='". mysql_real_escape_string($_POST['select']) ."';") or die("Er is iet fout gegaan. Foutmelding: ".mysql_error());
Verder zou ik de uitvoer van mysql_error() niet laten weergeven bij een fout. Gewone bezoekers zijn niet geïnteresseerd in de technische details en kwaadwillende bezoekers wil je die details niet geven.


Het viel me ook op dat je vaak "zinnen" begint met hoofdletters (If, Mysql_query). Dat is, blijkbaar, niet fout, maar het ziet er wel vreemd uit.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan