Delete Functie (werkt niet)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeroen J

Jeroen J

07/06/2007 11:06:00
Quote Anchor link
Jo ik heb een nieuws script dat ik van hier heb gehaald en een beetje heb aangepast maar ik heb een delete functie ingevoegd en deze zegt dat hij het verwijderd heeft hij vind ook de id die hij moet verwijderen ,maar het verwijderd het niet. iemand die is kan nazien en eventuele opmerkingen

scripting is niet zo proper

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
ob_start();
session_start();
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>

</head>
<body>
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php
if(!isset($_SESSION["naam"])){
$text = "u bent ni ingelogd dus ik zou <a href=\"../login/login.php\">naar hier gaan </a>";
echo($text);
}

else{
if($_SESSION["level"] == 13){
    include("config.php");
    if($_POST["submit"]){
        if($_POST["submit"] && isset($_SESSION["naam"]) && !empty($_POST["bericht"]) && !empty($_POST["titel"])){
            include("config.php");
            $datum = date("Y-m-d H:i:s");
            $query = "INSERT INTO nieuws (naam, bericht, titel, datum)";
            $query .= "VALUES ('".$_SESSION["naam"]."' , '".$_POST["bericht"]."' , '".$_POST["titel"]."' , '".$datum."');";
            $result = mysql_query($query);
    
            if(!empty($result)){
                echo "uw bericht is toegevoegd -- u wordt doorverbonden of klik hier";
                echo "<a href=\"" . $_SERVER['PHP_SELF'] . "\" title=\"Berichten overzicht\">overzicht</a>";
                header("Refresh: 3; URL=nieuws.php");
            }

            else{
                echo "oei probke me de db ofzo bericht is ni toegevoegd srry";
            }
        }

        else{
            echo "foutje bij het invullen --> <a href=\"" . $_SERVER['PHP_SELF'] . "?show=add\">vul in</a>";
        }
    }

    elseif($_GET['show'] == "add"){
        echo "voeg een bericht toe";
        echo "Toon mij <a href=\"begin.php\" title=\"Berichten in gastenboek\">alle berichten in het gastenboek</a><br /><br />";
        echo "<form method=\"post\" action=\"" . $_SERVER['PHP_SELF'] . "\">";
        echo "Titel:<br>";
        echo "<input type=\"text\" name=\"titel\" maxlenght=\"100\">";  
        echo "Bericht:<br>";
        echo "<textarea name=\"bericht\" rows=\"5\" cols=\"35\"></textarea><br>";
        echo "<input type=\"submit\" name=\"submit\" value=\"Bericht plaatsen!\">";
        echo "</form>";
    }

    elseif($_GET['show'] == "delete"){
        $query = "DELETE FROM nieuws WHERE id ='".$rij['id']."'";
        $result = mysql_query($query) or die("error");
        echo "verwijderd oke!!!!";
        header("Refresh: 3; URL=nieuws.php");
        }

    else{
        echo "bericht toevoegen";
        echo "Voeg een <a href=\"" . $_SERVER['PHP_SELF'] . "?show=add\">nieuw bericht</a> toe aan het gastenboek.";
    
        $query = "SELECT id,naam,bericht,titel,DATE_FORMAT(datum, '%d.%m.%Y %H.%i.%s') as datum FROM nieuws ORDER BY datum DESC";
        $result = mysql_query($query);
        if(mysql_num_rows($result) >= 1){
            while($rij = mysql_fetch_array($result)){
                
            
                echo "<br><br><b>" . $rij['naam'] . "</b> ::::: <b>" . $rij['titel'] . "</b> schreef op <i>" . $rij['datum'] . "</i>: ::::::: <a href=\"".$_SERVER['PHP_SELF']."?id=".$rij['id']."&show=delete\">delete</a><br>";
                echo "<hr />";
                echo $rij["bericht"]. "<hr />";
            }
        }

        else{
            echo "nog geen berichten in nieuws";
        }
    }
}

else{
    echo "u heeft hier geen rechten voor";
}
}

?>

</body>
</html>
Gewijzigd op 01/01/1970 01:00:00 door Jeroen J
 
PHP hulp

PHP hulp

25/11/2024 02:23:12
 
Joren de Wit

Joren de Wit

07/06/2007 11:33:00
Quote Anchor link
Controleer na het uitvoeren van je query met behulp van mysql_affected_rows() of er ook daadwerkelijk iets veranderd is in je database. Zo nee, echo dan je query eens, hoogstwaarschijnlijk zie je dan wel wat er al fout gaat.

Ikzelf gok dat het hem zit in de variabele voor het id, $rij['id']. Waar komt die vandaan?
 
Jeroen J

Jeroen J

07/06/2007 11:36:00
Quote Anchor link
die $rij['id'] komt van onder

als je niet doet toont hij alle berichten wat onderaan het script staat en vandaar uit haalt hij de id

en hij haalt hem boven dat heb ik al gemerkt


mysql_affected_rows toont hij 0
en als ik de query uitvoer toont hij 1
Gewijzigd op 01/01/1970 01:00:00 door Jeroen J
 
- wes  -

- wes -

07/06/2007 11:48:00
Quote Anchor link
@joose,

php werkt in een vaste volgorde door je script , van boven naar onder. Het is niet mogelijk een waarde uit een variabele al te gebruiken voor deze uberhaupt bestaat.

en haal dat ob_start() meuk weg, werk je alleen maar om een probleem heen ipv deze op te lossen
 
Jeroen J

Jeroen J

07/06/2007 11:55:00
Quote Anchor link
ik heb het er al onder gezet maar dan doet hij niets van die delete functie hij toont zelfs geen error niets

ob_start(); weggehaalt en geen error ivm de delete functie
Gewijzigd op 01/01/1970 01:00:00 door Jeroen J
 
Joren de Wit

Joren de Wit

07/06/2007 12:12:00
Quote Anchor link
Ja, maar zodra jij op die link klikt om te verwijderen is de variabele $rij['id'] natuurlijk niet meer beschikbaar! Je geeft deze variabele mee in de url en als gevolg wordt het een GET variabele en zul je hem ook op die manier op moeten halen.

Dus gebruik $_GET['id'] ipv $rij['id']. En ik zou bovendien nog wel een stukje controle invoeren voordat je zomaar dingen uit een database verwijderd. Bijvoorbeeld of de gebruiker wel iets mag verwijderen en op zijn minst ook controleren of het id wel numeriek is. Dit om SQL injectie te voorkomen.
 
Jeroen J

Jeroen J

07/06/2007 13:06:00
Quote Anchor link
ja ik ben nu nog wel niet zo'n super kenner
maar die controle zou je mss iets verder moeten uitleggen

en hoe ik die id uit die rij in die $_GET['id']

srry he ni zo'ne kenner
 
Joren de Wit

Joren de Wit

07/06/2007 13:16:00
Quote Anchor link
Nou dat laatste doe je in principe al zelf:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<a href=\"".$_SERVER['PHP_SELF']."?id=".$rij['id']."&show=delete\">delete</a>


Je geeft $rij['id'] al mee als GET variabele dus die kun je gewoon ophalen met $_GET['id']. Je gebruikt toch ook
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
elseif($_GET['show'] == 'delete')
?>

Dat is precies hetzelfde. Eigenlijk hoor je hier nog wel met isset() te controleren of de GET variabele 'show' wel bestaat. Als deze namelijk niet in de url staat zal je script een foutmelding opleveren.

En wat die controle betreft:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
if(isset($_GET['id']) && ctype_digit($_GET['id']))
{

    // Het id is numeriek en kan gebruikt worden
}
else
{
    // Er is geen geldig id meegegeven in de url
}
?>
 
Jeroen J

Jeroen J

07/06/2007 18:26:00
Quote Anchor link
oke
ik zal da is tjecken
ja ik heb nog ni de kennis om zonder een voorbeeldje te snappen hoe ik da zou moeten plaatsen

alvast bedankt

edit = het werkt dikke merci
Gewijzigd op 01/01/1970 01:00:00 door Jeroen J
 



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.