Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Daten aus MySql-Datenbank per Button löschen

Frage Entwicklung PHP

Mitglied: manuel5

manuel5 (Level 1) - Jetzt verbinden

03.02.2009, aktualisiert 09:04 Uhr, 10575 Aufrufe, 12 Kommentare

Guten Morgen,

habe eine Select-Box mit Anbindung an einer MySql-DB. Hier wähle ich Daten aus der Db aus und möchte diese ausgewählten dann über/durch den Button löschen.

01.
<?php 
02.
 
03.
$host = "localhost"; 
04.
$user = "user"; 
05.
$password = "password"; 
06.
$dbname = "dbname"; 
07.
$tabelle ="tabelle"; 
08.
 
09.
$dbverbindung = mysql_connect ($host, $user, $password); 
10.
 
11.
$dbanfrage = "SELECT * from $tabelle"; 
12.
$result = mysql_db_query ($dbname, $dbanfrage, $dbverbindung); 
13.
$options = ""; 
14.
echo "<select>\n"; 
15.
while ($ausgabe = mysql_fetch_array ($result)) 
16.
17.
    $option = "<option>".$ausgabe[Nachname]. " " .$ausgabe[Vorname]." " .$ausgabe[Id]."</option>\n"; 
18.
echo $option; 
19.
20.
echo "</select>\n"; 
21.
 
22.
$ID=$_POST["loeschen"];      
23.
if (isset($_POST["loeschen"])) {  
24.
    $abfrage_loeschen="DELETE from $tabelle WHERE id=.$ausgabe[Id].";   
25.
    mysql_db_query ($dbname, $dbanfrage_loeschen, $dbverbindung); 
26.
27.
mysql_close ($dbverbindung)
Sodala, die Selcet-Box funktioniert - es wird mit so angezeigt wie ich es haben will.
Nur das löschen selber funktioniert noch nicht.

Er bringt mir keine Fehlermeldung und tut auch sonst nuescht.

Jemand ne Idee?
Den Button habe ich "loeschen" genannt.

Gruß Manuel
Mitglied: godlie
03.02.2009 um 09:32 Uhr
Auweh Auweh.
Also erstmal:
ganz oben am Anfang nach <?php
01.
error_reporting(E_ALL);
dann
1

und dann lesen und lernen.

ein kleiner hinweis:

01.
mysql_query("") or die( mysql_error() );
Bitte warten ..
Mitglied: manuel5
03.02.2009 um 11:49 Uhr
Servus,

ok, hat mir da gleich mal n paar Fehlermeldungen erzeugt!
Die habe ich nun verbessert, doch das Problem bleibt.
Er löscht mir die Daten nicht aus der Sql-DB.

Mit deinem Link ansich kann ich nicht wirklich was anfangen, das behandelt ja mein Problem nicht wirklich.

Gruß Manuel
Bitte warten ..
Mitglied: godlie
03.02.2009 um 11:59 Uhr
Ich glaube kaum das du auch nur eine Seite davon gelesen hast.
Sonst hättest du gesehen das ab Kapitel 27 das Thema MySql behandelt wird.

Nachfolgend sind dann ein paar Beispiele was man alles mit einer Datenbank anstellen kann.
Nebenbei würd ich dir auch mal das hier zum lesen empfehlen:

2

Denn du weist ja nicht mal wie ein select auszusehen hat, geschweige denn wie du ihn ansprechen kannst.

Lesen,lernen, üben,lesen,lernen,üben..... oder las die Finger vom Programmieren.
Bitte warten ..
Mitglied: dog
03.02.2009 um 13:15 Uhr
godlie, komm mal wieder runter.
A) Es ist noch kein Genie vom Himmel gefallen.
B) Sind in deinen Beispielen auch gefährliche Fehler.

Gehen wir es also mal wieder Stück für Stück durch:

Tastsächlich sollte ganz am Anfang einer PHP-Seite folgendes stehen:

01.
<?php 
02.
error_reporting(E_ALL | E_NOTICE); 
03.
ini_set('display_errors','On');
ABER: Das gilt NUR für den Entwicklungsserver. In einer produktiven Umgebung MUSS aus dem On ein Off werden!

01.
mysql_query("") or die( mysql_error() );
So steht es im PHP-Handbuch und so ist es totaler Quark.
Alles was du damit erreichst ist eine Sicherheitslücke durch Information Disclosure, weil ein Hacker so ganz schnell sehen kann wann er einen Angriffspunkt in deinem System gefunden hat.
mysql_error() darf NIE über einen Weg wie die() oder echo() verwendet werden! (außer du hast eine Prüfung implementiert, die zwischen Entwicklungs- und Produktionsumgebung unterscheidet).

Und zu Manuels Problem: Wenn du meinen ersten Tipp beherzigst wird dich PHP mit einer Fehlermeldung beglücken, die dir deinen Fehler zeigt.
Wenn du aber faul bist, hier die Lösung:

01.
$abfrage_loeschen="DELETE from $tabelle WHERE id=.$ausgabe[Id].";  
In der Praxis würde die erzeugte Abfrage so aussehen:

DELETE FROM meinetabelle WHERE id=.12.

(Beachte die beiden Punkte - die gehören hier nicht hin )
Korrekterweise hättest du folgendes schreiben müssen:

01.
$abfrage_loeschen = sprintf('DELETE from %s WHERE id = %u',$tabelle,$ausgabe['Id']);  
Warum ich hier sprintf() und nicht Concatenation verwende erschließt sich dir, wenn du folgendes durchliest: http://de.wikipedia.org/wiki/SQL-Injection (BITTE nimm das ernst, und versuche es wirklich zu verstehen - das ist WICHTIG!)

Außerdem gehören um die alphanumerischen Indizes eines Arrays Anzuführungszeichen. Auf Deutsch:

Immer wenn du $array[abc] schreibst hättest du $array['abc'] schreiben müssen.

(Ob doppelte oder einfache Anführungszeichen ist hier erstmal egal, Einfache können von PHP schneller verarbeitet werden und sind immer dann vorzuziehen, wenn eine Zeichenkette KEINE Variable enthält.)

Grüße

Max
Bitte warten ..
Mitglied: godlie
03.02.2009 um 13:28 Uhr
@dog

Na gut das mag ein wenig forsch geklungen haben, aber wenn du sein Beispiel genau ansiehst und nicht überfliegst wie ich es im ersten post habe, dann wird dir auffalen, dass der select über keinen Namen verfügt.

Somit kann $ausgabe[Id] <-- irgendiwe nix leifern oder?

Also ich für meinen Teil kenne da net grad so nen gemütlichen Weg darauf dann zuzugreifen.. ( Stichwort DOM )
Bitte warten ..
Mitglied: dog
03.02.2009 um 13:43 Uhr
Nun ja, strenggenommen liefert $ausgabe['Id'] schon was: nämlich immer genau den letzten Eintrag der Tabelle $tabelle.
Das würde immerhin schon für ein LIFO-System reichen ;)

Was meinst du denn mit dem Namen von SELECT?
Bitte warten ..
Mitglied: godlie
03.02.2009 um 13:52 Uhr
hm damit hast du recht.

naja schau dir mal diesen code an:
01.
echo "<select>\n";  
02.
while ($ausgabe = mysql_fetch_array ($result))  
03.
{  
04.
$option = "<option>".$ausgabe[Nachname]. " " .$ausgabe[Vorname]." " .$ausgabe[Id]."</option>\n";  
05.
echo $option;  
06.
}  
07.
echo "</select>\n"; 
sollte da nicht irgendwie bei select ein name attribut dabei sein? damit es per $_POST[] ansprechbar wird?
Bitte warten ..
Mitglied: dog
03.02.2009 um 14:00 Uhr
Ach DAS select meinst du - ich dachte du beziehst dich auf das SQL-SELECT.
Ja, damit ein <form> Subelement wie <select> über PHPs $POST-Superglobale ansprechbar ist muss man auch das name="" Attribut angeben.

Ich habe erstmal nur den offensichtlichen Fehler im PHP/SQL-Code korrigiert, wenn manuel hier aber auf das ausgewählte Element der select-Gruppe zugreifen will, dann ist tatsächlich noch einige Grundlagenarbeit notwendig.
Da sollte dann das hier weiterhelfen:

http://de3.php.net/manual/de/language.variables.external.php
http://de.selfhtml.org/html/formulare/auswahl.htm#listen
Bitte warten ..
Mitglied: manuel5
03.02.2009 um 19:35 Uhr
Ok, ok, habt ja recht.



ich glaub ich les noch n bischen......

Gruß Manuel
Bitte warten ..
Mitglied: Guenni
05.02.2009 um 21:11 Uhr
Hi manuel5,

die ID des Datensatzes, den du löschen willst, übergibst du dem Parameter "value"

im Option-Tag der select-Box.

01.
 
02.
Formularaufbau: 
03.
 
04.
<form> 
05.
. . . 
06.
. . . 
07.
 
08.
<select name="to_delete"
09.
<?php 
10.
while($row=mysql_fetch_array($result,MYSQL_ASSOC)){ 
11.
 ?> 
12.
 <option value="<?php echo $row['id'];?>"><?php echo $row['Nachname'].", ".$row['Vorname'];?></option>; 
13.
 <?php 
14.
15.
?> 
16.
</select> 
17.
 
18.
. . . 
19.
. . . 
20.
</form>
Nun steht im POST-Array die ID des Datensatzes, was du mit . . .

echo $_POST['to_delete'];

. . . nach Absenden des Formulars überprüfen kannst.


Mit . . .

01.
 
02.
$query="delete from tabelle where id=".$_POST['to_delete']; 
03.
 
04.
mysql_query($query); 
05.
 
. . . wird dann der ausgewählte Datensatz gelöscht.


Gruß
Günni
Bitte warten ..
Mitglied: manuel5
06.02.2009 um 10:43 Uhr
Hallo Günni,

genau das hab ich gesucht. Den "Hinweis" darauf das ich die ID seperat ausgeben soll/muss.
Das ja dann doch logisch ist.

Es funktioniert zwar noch nicht wirklich, aber zumindest ist der Weg nun klarer!

Danke und Gruß
Manuel
Bitte warten ..
Mitglied: manuel5
06.02.2009 um 14:10 Uhr
Joap,

noch ein bischen angepasst und es funktioniert!
Danke Euch alle!

Gruß Manuel
Bitte warten ..
Ähnliche Inhalte
PHP
Daten via PHP aus mysql Datenbank auslesen und löschen
gelöst Frage von KyrinjaPHP5 Kommentare

Guten Morgen liebe Leute, ich verzweifle! Ich versuche Daten aus einer DB auszulesen und hinter den Daten einen Löschenbutton ...

VB for Applications
Feld mit CSV-Daten aus MySQL-Datenbank einlesen
gelöst Frage von Andreas.HH1VB for Applications3 Kommentare

Hallo zusammen, ich bin neu hier und verfüge nur über eher schwache Grundkenntnisse. Ich hoffe daher, Ihr entschuldigt die ...

PHP
PHP und Mysql aus Datenbank auslesen und geänderte Daten einfügen
gelöst Frage von gamerffPHP4 Kommentare

Hallo Forum, könntet ihr mir bitte weiterhelfen, ich habe ein php Code mit dem ich einen Datensatz auslesen möchte, ...

PHP
Suchfeld mit Abfrage auf eine MySQL-Datenbank
gelöst Frage von SaschaRDPHP6 Kommentare

Hallo zusammen, ich steh mal wieder auf dem Schlauch. Bin dabei ein Suchfeld auf die Webseite zu bringen. Jedoch ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 19 StundenBatch & Shell8 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 21 StundenHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 1 TagMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 1 TagSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server17 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows 10
Bitlocker nach Verschlüsselung nicht mehr aufrufbar!
gelöst Frage von alexlazaWindows 1013 Kommentare

Hallo, ich besitze ein HP ZBook 17 G4 mit einem Windows 10 Pro Betriebssystem. Bei diesem Problem handelt sich, ...

Off Topic
Fachkräftemangel in Deutschland? - Talentschmiede schreibt alle 2 Tage die gleichen Stellen aus
Frage von Penny.CilinOff Topic12 Kommentare

Hallo, haben wir in Deutschland Fachkräftemangel? Die Talentschmiede schreibt gefühlt alle zwei Tage dieselben Stellen aus. Und das schon ...

Windows Server
Sichere Remote Desktop Verbindung wie?
gelöst Frage von nuss33Windows Server11 Kommentare

Hallo zusammen, eins vorweg: Ich besitze einen privaten Windows Server 2008 R2 zu Hause im Netzwerk er wird nicht ...