BlackBoard (http://www.black-board.net/index.php)
- Design, Programmierung & Entwicklung (http://www.black-board.net/board.php?boardid=55)
-- Programmieren (http://www.black-board.net/board.php?boardid=4)
--- PHP [erledigt] Problem: mysql_query("DELETE... (http://www.black-board.net/thread.php?threadid=21127)


Geschrieben von jojo am 17.09.2005 um 09:21:

  [erledigt] Problem: mysql_query("DELETE...

hi

ich weiss ja, dass ich keine ahnung hab, aber müsste das nicht eigentlich funktionieren?
code:
1:
2:
3:
4:
$DatabasePointer = mysql_connect(ok ich glaub, das schreib ich nicht) or die("Fehler beim kontaktieren der Datenbank. Bitte versuchs nochmal");
mysql_select_db(oder?, $DatabasePointer);
mysql_query("DELETE FROM kasten WHERE id='$id'", $DatabasePointer);

wenn nein, was ist falsch daran'?

schon mal danke im vorraus

mfg jojo

funktioniert mit
php:
1:
2:
3:
4:
5:
"<form action=\"del.php\">",
"<input name=\"id\" type=\"button\" value=\"Beitrag löschen\" onClick=\"self.location.href='del.php?&id=",
$Result->id,
"'\">",
"</form>",


del.php:
php:
1:
mysql_query("DELETE FROM kasten WHERE id='$id'")



Geschrieben von Compuholic am 17.09.2005 um 10:45:

 

Dein Problem liegt in der letzten Zeile Deines Codes.

Du mußt für die einfachen Anführungszeichen eine Escape-Sequenz verwenden. Denn PHP interpretiert diese sonst als Symbole.

Versuchs mal damit:
code:
1:
mysql_query("DELETE FROM kasten WHERE id=\'$id\'", $DatabasePointer



Geschrieben von LX am 17.09.2005 um 10:55:

 

In dem Fall musst du die einfachen Anführungszeichen auch nicht escapen. Das ist nur nötig, wenn die äußeren Anführungen die gleichen sind wie die inneren.

Da es sich bei der ID auch höchstwahrscheinlich um eine Zahl bzw. einen Integer handeln wird, brauchst du innen nicht mal Quotes.

Oh, und solange du nur eine einzige Datenbankverbindung offen hast, genügen mysql_select_db() und mysql_query() auch ein einziger Parameter. Ganz vereinfacht sieht das dann also so aus:

php:
1:
2:
3:
4:
5:
6:
<?php
$DatabasePointer mysql_connect($HOST$USER$PASS) or die ('Mist...');
mysql_select_db($NAME);
mysql_query("DELETE * FROM kasten WHERE id=$id");
mysql_close($DatabasePointer);
?>



Geschrieben von jojo am 17.09.2005 um 14:59:

 

sorry, aber entweder bin ich viel zu blöd dazu oder das funktioniert echt nicht (beides)

vielleicht hab ich aber auch was ganz falsch gemacht, das muss in der tabelle kasten gelöscht werden und zwar da wo id (in der tabelle) gleich einer varieable $id sein

es ist nur mysql-verbindung offen

aber ich verstehe nicht, was dabei nicht funktioniert



Geschrieben von Robi am 17.09.2005 um 15:01:

 

hast du denn eine variable $id gesetzt?



Geschrieben von LX am 17.09.2005 um 15:07:

 

Hänge doch mal ein
or die(mysql_error());
an alle mySQL-Befehle an (also auch an mysql_select_db() und mysql_query()).



Geschrieben von jojo am 17.09.2005 um 15:22:

 

jo, normal ist die gesetzt, aber irgentwie scheit das nicht zu klappen, hab mir mal ne mail schicken lassen, wo der mir die $id schickt und das war leer, dann ist alles klar

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:

<?php
$ResultPointer mysql_query("SELECT id, titel, inhalt FROM kasten"$DatabasePointer);

if(mysql_num_rows($ResultPointer)>0)
{
    for($i=0$i<mysql_num_rows($ResultPointer); $i++)
    {
        $Result mysql_fetch_object($ResultPointer);

            "<form action=\"del.php\" method=\"post\">",
            "<input name=\"id\" type=\"hidden\" value=\"",
            $Result->ID,
            "\">",
            "<td><input name=\"Send\" type=\"submit\" value=\"Beitrag löschen\"></td>",
            "</form>",
    }
}
?>


da im formular muss dann wo der fehler sein, aber wo?



Geschrieben von LX am 17.09.2005 um 16:25:

 

Objektattribute sind case sensitive, $Result->ID ist also nicht gleich $Result->id. Prüfe also mal, ob die Spalte groß oder klein geschrieben wird. Du kannst ja außerdem im Quellcode der Seite erkennen, ob da ein Wert eingetragen wurde oder nicht.

Wenn dies der Fall sein sollte, kann es auch an der Übertragung liegen. Wenn du im auswertenden Script direkt auf $id zugreifst, impliziert das, dass der PHP-Parameter register_globals auf ON steht. Ist dies nicht der Fall, musst du via $_POST['id'] auf die Variable zugreifen.


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH