Archiv verlassen und diese Seite im Standarddesign anzeigen : Selektives Löschen nach ID
Ich habe eine Seite, welche mir sämtliche Mitglieder auflistet.
Hinter jedem Mitglied ein Icon zum Editieren und eins zum Löschen. Das Icon ist jeweils verlinkt mit Übergabe der ID des Eintrages.
Nun möchte ich eine Delete Seite machen, welche anhand der übergeben ID den Eintrag aus der DB entfernt.
Ich habe es wie folgt probiert. leider ohne Erfolg.
<?PHP
//include("incl/menue.inc");
include("incl/database.inc");
$connect = MYSQL_CONNECT(DB_HOST,DB_USER,DB_PASS);
if ($connect) { MYSQL_SELECT_DB(DB_NAME, $connect); }
else { include("incl/database_error.inc"); }
$id = $HTTP_GET_VARS['id'];
$query = MYSQL_QUERY("DELETE FROM 'tipp_mitglieder' WHERE id = ".$id." LIMIT 1");
MYSQL_CLOSE($connect);
?>
Es kommt eine weiße Seite ohne Fehler (Parse etc)
Aber der Eintrag in der db ist nach wie vor da.
Kann mir einer helfen und sagen was ich falsch mache?
Vielen Dank
Xyla
Hallo Xyla,
nimm mal aus Deinem MySQL Query das LIMIT 1 raus und versuchs nochmal.
Im übrigen kannste des Query auch direkt absetzen ohne es an ne Variable zu übergeben, denn ein delete kommando kann auf ne variable nix zurückgeben.
Falls es dann auch nicht geht, poste mal bitte Deine beiden include files.
mfg Znaper
Also das LIMIT1 hab ich rausgenommen.
Die include Files sind ja nur die Daten für den MySQL Zugang bzw. die Fehleranzeige bei nicht erfolgtem Connect.
Da ich die gleichen Scriptzeilen auch bei der Auflistung benutze, müßte das auch stimmen.
Was für ne PHP Version hast Du bei Dir aufm Server?
Versuchs mal so, aber nur wenn Du PHP4 in ner höheren Version hast:
<?PHP
//include("incl/menue.inc");
include("incl/database.inc");
$connect = MYSQL_CONNECT(DB_HOST,DB_USER,DB_PASS);
if ($connect) {
MYSQL_SELECT_DB(DB_NAME, $connect);
} else {
include("incl/database_error.inc");
exit;
}
MYSQL_QUERY("DELETE FROM 'tipp_mitglieder' WHERE id = '".intval($_REQUEST['id'])."'");
MYSQL_CLOSE($connect);
?>
Kleine Anregung am Rande, ich würde die Variable durch ne Prüfroutine laufen lassen, bevor Du Sie als MySQL Query los lässt. ;)
mfg Znaper
Also das Teil liegt bei Puretec, also PHP4.x ist schon installiert.
Aber auch Dein Code funzt nicht :-(
Das kann doch nicht sein ?!?!?!
Original geschrieben von Xyla
Also das Teil liegt bei Puretec, also PHP4.x ist schon installiert.
Aber auch Dein Code funzt nicht :-(
Das kann doch nicht sein ?!?!?!
PHP 4 ist bei Puretec drauf, aber auch PHP3 und als Dateiendung verwendest Du .php3 so laufen die Scripts durch den PHP3 Parser! ;)
mfg Znaper
Ergo sollte ich die Ext. auf PHP4 setzen ?
nein auch mit der PHP4 Extension gehts nicht :-(
versuch das:
<?php
$id = '';
## .inc dateien kann jeder vom server laden, da sollte nichts wichtiges drin sein.
## ansonsten in database.inc.php umbennenen.
require_once './incl/database.inc';
$connect = @mysql_connect(DB_HOST, DB_USER, DB_PASS) or die(mysql_error());
@mysql_select_db(DB_NAME, $connect) or die(mysql_error());
$id = intval($_GET['id']);
$query = @mysql_query("DELETE FROM 'tipp_mitglieder'
WHERE id = ".$id."
LIMIT 1")
or die(mysql_error());
@mysql_close($connect);
?>
You have an error in your SQL syntax near ''tipp_mitglieder' WHERE id = 67 LIMIT 1' at line 1
Shit, das kann so schwer doch nicht sein ;) Ich bekomm noch ne Krise.
Also nehm ich das letzte or die weg, kommt die Fehlermeldung nicht mehr , aber den Eintrag löscht es trotzdem nicht;(
Xyla
Nimm mal das von martin und mache die Hochkommas hier weg:
DELETE FROM 'tipp_mitglieder'
-> DELETE FROM tipp_mitglieder
auch nicht :(
Mann oh mann, da ist bestimmt ein ganz blöder Fehler von mir drin, sicher mega simpel und ich seh Ihn einfach nicht.
Das dumme nur, ich bekomm keinerlei Fehlermeldung.
Naja und mit MyAdmin kann ich es ganz einfach löschen, also gehen tut es ;)
Xyla
bist du sicher, dass du die zu löschende ID per GET überträgst, nicht per POST?
wenn die nicht per GET übertragen wird, wäre die grundsätzlich einfach 0.
solange du in der datenbank keinen datensatz mit der id 0 hast, wird nichts gelöscht, aber es entsteht auch kein fehler.
du kannst das
$id = intval($_GET['id']);
durch
$id = intval($_POST['id']);
ersetzen und ausprobieren.
und darunter die id mit
echo $id;
zum testen ausgeben.
ja das hab ich schon alles durch.
Ich hab sogar schon die harte Sache id = 67 eingetragen und trotzdem keinen Erfolg gehabt :(
Xyla
SO nach viel probieren hab ich es "gelöst".
Fragt mich nicht warum oder wiese, aber so klappt es irgendwie.
<?php
$id = '';
## .inc dateien kann jeder vom server laden, da sollte nichts wichtiges drin sein.
## ansonsten in database.inc.php umbennenen.
require_once './incl/database.inc.php';
$connect = @mysql_connect(DB_HOST, DB_USER, DB_PASS) or die(mysql_error());
@mysql_select_db(DB_NAME, $connect) or die(mysql_error());
$id = intval($_GET['od']);
$sql = "DELETE FROM tipp_mitglieder WHERE id=$id";
$result = mysql_query ($sql);
echo $result;
@mysql_close($connect);
?>
vBulletin® v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.