php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 13.07.2008, 12:57  
Neuer Benutzer
 
Registriert seit: 13.07.2008
Beiträge: 5
Repli befindet sich auf einem aufstrebenden Ast
Standard MySQL DELETE From funktioniert nicht - Warum ?

Hallo Zusammen,

ich habe eine Userliste in MySQL angelegt und möchte nun alle User mit Id Name und Mailadresse ausgeben lassen. Das klappt auch schon wunderbar, nur weiß ich noch nicht wie ich es umsetzen soll, dass man die Checkboxen anklickt von den Usern, die man löschen möchte und die User dann auch gelöscht werden. Ich habe es folgendermaßen schon probiert:

1.php:
PHP-Code:
 <?php 
include("config.php"); 
mysql_connect($dbhost$dbuser$dbpass); 
mysql_select_db($dbname); 

$abfrage "SELECT * FROM ".$dbprefix."_user ORDER BY id"
$ergebnis mysql_query($abfrage); 
?> 
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 
<?php echo '<table border="0" cellspacing="0" cellpadding="0">'
while(
$row mysql_fetch_object($ergebnis)) 
    { 
    echo 
'<tr><td align="left">'.$row->id.'.</td>'
    echo 
'<td align left><input type="checkbox" name="loeschen[]" value="">&nbsp;</td>'
    echo 
'<td align="left">'.$row->name.'&nbsp;&nbsp;</td>'
    echo 
'<td align="left">'.$row->mail.'</td>'
    echo 
'</tr>'
    } 
echo 
'</table><input type="hidden" value="1" name="t"><input type="submit" value="Delete" name="submit"></form>'

$delete[] = $_POST['loeschen[]']; 
$send $_POST['t']; 
if (
$send '1'

foreach (
$delete as $value

    
$deltext "DELETE FROM ".$dbprefix."_user WHERE id = '".$value."'"
    
$del mysql_query($deltext); 


mysql_close(); 
?>
Wo liegt mein Fehler ?

Vielen Dank im Voraus
Gruß
Repli
Repli ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 13.07.2008, 13:15  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Hallo und willkommen im Forum!

Als erstes das hier auf alle Fälle vermeiden weil XSS anfällig!

PHP-Code:
<?php echo $_SERVER['PHP_SELF']; ?>
 
//so schreiben
 
<?php echo htmlentities($_SERVER['SCRIPT_NAME']); ?
oder das action Atribut einfach leer lassen!

Zum 2 machst du mit deinem hidden Feld was falsch


<input type="hidden" value="1" name="t">

Da muss die id aus der DB rein zum Beispiel so

<input type="hidden" value="<?php echo $row->id ?>" name="t">

Weil du willst ja nach id löschen,du hast aber 1 im value drin stehen gehabt und wenn dann aus der DB ein anderer Wert als 1 auftritt dann wird nichts mehr gelöscht.

Dein delete Statement hat noch einen Fehler. Du darfst nicht nach dem value Wert löschen musst den Namen des hidden Feldes dazu verwenden

PHP-Code:
//falsch
$deltext "DELETE FROM ".$dbprefix."_user WHERE id = '".$value."'"
 
//richtig
$deltext "DELETE FROM ".$dbprefix."_user WHERE id = '".$_POST['t']."'"
Und das hidden Feld musst auch mit in die while Schleife rein schreiben sonst kannst nicht mehrere Datensätze löschen!
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de

Geändert von litterauspirna (13.07.2008 um 13:19 Uhr).
litterauspirna ist offline   Mit Zitat antworten
Alt 13.07.2008, 14:27  
Neuer Benutzer
 
Registriert seit: 13.07.2008
Beiträge: 5
Repli befindet sich auf einem aufstrebenden Ast
Standard

Okay schon mal vielen Dank, habe versucht deine Verbesserungen so gut wie es geht umzusetzen, doch es klappt immer noch nicht

1.php
PHP-Code:
<?php
include("config.php");
mysql_connect($dbhost$dbuser$dbpass);
mysql_select_db($dbname);

$abfrage "SELECT * FROM ".$dbprefix."_user ORDER BY id";
$ergebnis mysql_query($abfrage);

echo 
'<form action="" method="post"><table border="0" cellspacing="0" cellpadding="0">';
while(
$row mysql_fetch_object($ergebnis))
    {
    echo 
'<tr><td align="left">'.$row->id.'.</td>';
    echo 
'<input type="hidden" value="<?php echo $row->id ?>" name="t">';
    echo 
'<td align left><input type="checkbox" name="loeschen[]" value="">&nbsp;</td>';
    echo 
'<td align="left">'.$row->name.'&nbsp;&nbsp;</td>';
    echo 
'<td align="left">'.$row->mail.'</td>';
    echo 
'</tr>';
    }
echo 
'</table><input type="hidden" value="1" name="st"><input type="submit" value="Delete" name="submit"></form>';

$delete[] = $_POST['loeschen[]'];
$send $_POST['st'];
if (
$send '1')
{
foreach (
$delete as $value)
{
    
$deltext "DELETE FROM ".$dbprefix."_user WHERE id = '".$_POST['t']."'";
    
$del mysql_query($deltext);
}
}
mysql_close();
?>
Wo liegt denn jetzt mein Fehler ?
Repli ist offline   Mit Zitat antworten
Alt 13.07.2008, 15:29  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Schaue dir mal diese Zeile an.

echo '<input type="hidden" value="<?php echo $row->id ?>" name="t">';

Normalerweise müsste PHP dir eine Fehlermeldung bringen!

Du müsstest deiner Checkbox auch einen Value geben zum Beispiel mit 1 und eine IF Abfrage machen wo du sagst nur die angehakten sollen gelöscht werden!
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de

Geändert von litterauspirna (13.07.2008 um 15:33 Uhr).
litterauspirna ist offline   Mit Zitat antworten
Alt 13.07.2008, 19:37  
Neuer Benutzer
 
Registriert seit: 13.07.2008
Beiträge: 5
Repli befindet sich auf einem aufstrebenden Ast
Standard

Stimmt, da war noch ein Fehler! Habe ihn ausgebessert und kann mit folgendem Code jetzt immer einzeln löschen.

Mein Problem jetzt: Ich muss die Seite mit F5 refreshen um zu sehen, dass der User gelöscht wurde und ich kann nicht mehrere User löschen.

Wo ist mein Fehler ?

1.php:
PHP-Code:
<?php
include("config.php");
mysql_connect($dbhost$dbuser$dbpass);
mysql_select_db($dbname);

$abfrage "SELECT * FROM ".$dbprefix."_user ORDER BY id";
$ergebnis mysql_query($abfrage);

echo 
'<form action="" method="post"><table border="0" cellspacing="0" cellpadding="0">';
while(
$row mysql_fetch_object($ergebnis))
    {
    echo 
'<tr><td align="left">'.$row->id.'.</td>';
    echo 
'<input type="hidden" value="'.$row->id.'" name="t">';
    echo 
'<td align left><input type="checkbox" name="loeschen[]" value="">&nbsp;</td>';
    echo 
'<td align="left">'.$row->name.'&nbsp;&nbsp;</td>';
    echo 
'<td align="left">'.$row->mail.'</td>';
    echo 
'</tr>';
    }
echo 
'</table><input type="hidden" value="1" name="st"><input type="submit" value="Delete" name="submit"></form>';

$delete[] = $_POST['loeschen[]'];
$send $_POST['st'];
if (
$send '1')
{
foreach (
$delete as $value)
{
    
$deltext "DELETE FROM ".$dbprefix."_user WHERE id = '".$_POST['t']."'";
    
$del mysql_query($deltext);
}
}
mysql_close();
?>
Repli ist offline   Mit Zitat antworten
Alt 13.07.2008, 21:13  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Mach da mal ein richtiges Affenformular draus. Script über dem HTML Teil und das Formular ruft beim Absenden die gleiche Seite auf.
Im PHP-Teil machst du eine Abfrage, ob eine ID gePOSTet wurde, und mit der nimmst du den Datensatz dann raus. Danach werden die restlichen Sätze wieder unten angezeigt und du kannst weitere löschen.

Infos zum Them Affenformular findest du in Wikipedia und über die Forensuchfunktion.
Wolla ist offline   Mit Zitat antworten
Alt 13.07.2008, 22:55  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.265
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Zitat:
<input type="hidden" value="'.$row->id.'" name="t">
Dies wird bei jedem Schleifendurchlauf ueberschrieben.

Zitat:
<input type="checkbox" name="loeschen[]" value="">
Was soll das?

Bitte bau dir ein Affenformular, du stocherst doch nur rum und weisst eigentlich garnicht wie HTML-Formulare funktionieren.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 14.07.2008, 08:29  
Neuer Benutzer
 
Registriert seit: 13.07.2008
Beiträge: 5
Repli befindet sich auf einem aufstrebenden Ast
Standard

Ich sehe noch keinen Sinn im Affenformular! Was genau soll mir diese Struktur bringen? Denn das Formular komplett in HTML aufzubauen macht für mich keinen Sinn, da doch in der while-Schleife der größte Teil des Formulars mit ID, Name und Mailadresse gefüllt werden. Das wäre doch quasie der HTML-Teil des Affenformulars und danach beginnt der PHP Teil.
Repli ist offline   Mit Zitat antworten
Alt 14.07.2008, 09:14  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von Repli Beitrag anzeigen
Mein Problem jetzt: Ich muss die Seite mit F5 refreshen um zu sehen, dass der User gelöscht wurde.
Das kannst du mit einer einfachen header("Location:"); abschaffen,da wirst authomatisch wieder umgeleitet auf die selbe Seite und sie wird neu geladen!
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline   Mit Zitat antworten
Alt 14.07.2008, 09:27  
Neuer Benutzer
 
Registriert seit: 13.07.2008
Beiträge: 5
Repli befindet sich auf einem aufstrebenden Ast
Standard

Danke an alle, die mir hier wirklich weiter geholfen haben.
Habe es jetzt endlich geschafft und bin fertig alles funktioniert
Habe es jetzt nur etwas anders gelöst.

1.php:
PHP-Code:
<?php
include("config.php");
mysql_connect($dbhost$dbuser$dbpass);
mysql_select_db($dbname);

$abfrage "SELECT * FROM ".$dbprefix."_user ORDER BY id";
$ergebnis mysql_query($abfrage);
?>
<form action="" method="post"><table border="0" cellspacing="0" cellpadding="0">
<?php 
while($row mysql_fetch_object($ergebnis))
    {
    echo 
'<tr><td align="left">'.$row->id.'.</td>';
    echo 
'<td align left><input type="checkbox" name="t[]" value="'.$row->id.'">&nbsp;</td>';
    echo 
'<td align="left">'.$row->name.'&nbsp;&nbsp;</td>';
    echo 
'<td align="left">'.$row->mail.'</td>';
    echo 
'</tr>';
    } 
?>
</table><input type="hidden" value="1" name="st"><input type="submit" value="Delete" name="submit"></form>
<?php 
$delete 
$_POST["t"];
$send $_POST['st'];
if (
$send 1)
{
    
$anzahl=count($delete);
    for(
$i=0;$i<$anzahl;$i++)
    {
        
$deltext "DELETE FROM ".$dbprefix."_user WHERE id = '".$t[$i]."'";
        
$del mysql_query($deltext);
    }
    if(
$i $anzahl)
    {
        echo 
'<head><meta http-equiv="refresh" content="0; url=delete.php"></head>';
    }
}
mysql_close();
?>
Vielen Dank nochmals
Gruß
Repli
Repli ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
mysql insert funktioniert net Smilerr PHP Tipps 2008 4 08.03.2009 14:02
[Erledigt] Zu blöd um MySQL in PHP einzurichten? Apache Server PHP Tipps 2006 18 30.01.2006 23:39
DELETE FROM warenkorb WHERE zeitstempel... Datenbanken 5 13.11.2005 12:03
Wieso funktioniert mein MySQL nicht mehr ? Skazi Datenbanken 1 09.11.2005 14:49
Schnittstelle zwischen PHP und MySQL klappt net !!! Datenbanken 16 16.10.2005 14:24
DELETE FROM... warum funktioniert's nicht? Calli PHP Tipps 2005-2 12 03.08.2005 11:55
Delete From Problem 'progman' Datenbanken 3 19.07.2005 11:40
libmysqlclient.so.10 is needed Datenbanken 11 20.06.2005 15:27
Problem bei Delete from ... Script LA-Finest PHP Tipps 2005 12 27.05.2005 14:34
[Erledigt] Xampp - Mysql Shutdown funktioniert nicht Server, Hosting und Workstations 7 02.04.2005 16:59
Datumssortierung funktioniert bei MySQL nicht richtig PHP Tipps 2005 2 01.04.2005 14:00
Warum Funktioniert diese Funktion nich (mySQL) PHP Tipps 2005 10 04.03.2005 16:36
Schreiben in die Datenbank (MySQL) funktioniert nicht PHP Tipps 2005 3 28.02.2005 01:01
MySQL Error aber es funktioniert trotzdem PHP Tipps 2005 3 27.02.2005 04:16
delete from Befehl ...... 'progman' PHP Tipps 2005 49 14.02.2005 08:13

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql delete, mysql delete from, php mysql delete, delete mysql, delete from mysql, mysql delete from table, mysql delete row, php delete, php delete from, mysql delete php, mysql delete * from, delete from php, mysql php delete, php delete mysql, php mysql delete from, mysql delete from where, delete mysql php, php mysql delete funktioniert nicht, sql php delete, delete php

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:51 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum