| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| as_alien Registriert seit: Feb 2005
Beiträge: 27
| Zeile aus mySql Tabelle löschen
Hi, hab ein Problem mit einem PHP-script. Ich versuche aus Flash bei Buttonclick einen bestimmten Eintrag zu löschen, klappt aber leider nicht. Kann mir vielleicht jemand einen Tip geben ? Bin PHP-newbie, beschäftige mich erst seit zwei Tagen mit PHP. in Flash habe ich folgenden code: Code: b_del.onRelease = function ()
{
var delete_lv = new LoadVars ();
delete_lv.vorname = "jiri";
delete_lv.sendAndLoad("https://127.0.0.1/test/delete_test.php", delete_lv, "POST");
trace("delete_clicked");
}; Code: <?php $dbserver = "localhost"; $nutzer = "root"; $passwort = "pass"; $dbname = "test1"; $dbtab = "liste1"; $db = mysql_connect($dbserver,$nutzer,$passwort); mysql_select_db($dbname,$db); $loeschen = "DELETE FROM $dbtab vorname '$_POST["vorname"]'"; $loesch = mysql_query($loeschen); ?> |
| | |
| | #2 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.326
|
$loeschen = "DELETE FROM ".$dbtab." WHERE vorname='".$_POST["vorname"]."'"; löscht dann übrigens alle einträge mit diesem vornamen. dir ist schon klar, das man das so niemals machen darf! da könnte dir jeder alles löschen oder noch schlimmeres. da gibt es keine sicherheit/abfrage, ob der löscher löschen darf und kein test, das dir da nicht jemand unerlaubte befehle sendet. sende auf jeden fall eine bestätigung zurück, ob das löschen funktioniert hat oder nicht. und wenn nicht, dann z.b. die fehlermeldungen vom php bzw. mysql senden. funktioniert das php ohne flash? sende einfach mal einen passenden url von einem browserfenster aus. im flash unbedingt ein onLoad ergänzen, indem du die antwort erhältst und entsprechend reagieren kannst. zum testen ein textfeld auf der bühne anlegen und da die rückmeldung vom onLoad anzeigen lassen. während dem programmieren interessieren natürlich eventuelle fehlermeldungen.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (02-08-2007 um 16:56 Uhr) |
| | |
| | #3 (permalink) |
| as_alien Registriert seit: Feb 2005
Beiträge: 27
|
danke für Deine Antwort. Funktioniert aber leider immer noch nicht, auch wenn ich nur die php.datei vom Browser aus starte. Nur wenn ich direkt den Namen in die php.datei schreibe gehts. z.B: so PHP-Code: Flash aus ändern - also an die php.datei senden. Sicherheitstechnisch muss man da sicherlich noch was machen, aber erstmal muss das Löschen auch funktionieren. Hab auch mal die Punkte vor und hinter den Variablen weggelassen, hat aber auch nichts gebracht |
| | |
| | #4 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.326
|
wenn das da geht: $loeschen = "DELETE FROM $dbtab WHERE vorname = 'jiri'"; und das da nicht: $loeschen = "DELETE FROM ".$dbtab." WHERE vorname='".$_POST["vorname"]."'"; dann steht in $_POST["vorname"] nicht 'jiri' drinn !? p.s. vom browser aus ist das natürlich $_GET["vorname"] falls du das an den url drannhängst. für POST musst du eine html-seite mit einem form erstellen.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (03-08-2007 um 01:07 Uhr) |
| | |
| | #5 (permalink) |
| as_alien Registriert seit: Feb 2005
Beiträge: 27
|
wie kann ich das denn prüfen, ob die variable ("jiri") da ankommt? das mit GET verstehe ich jetzt nicht - kann ich mir damit die Variable, die übergeben werden soll im Browser anzeigen? Und wenn die da nicht ankommt, ist denn dann in meinem as.code was falsch? |
| | |
| | #6 (permalink) | |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.326
| echo("POST: ".$_POST["vorname"]); echo("GET: ".$_GET["vorname"]); Zitat:
das ist GET. kann jeder sehen, ändern und ist in der datenmenge beschränkt POST wird nicht direkt an den URL angehängt das versuchen wir ja gerade heraus zu bekommen, indem wir dein php ohne flash aufrufen. zuerst mal muss das php funktionieren. dann sehn wir nach, was mit dem as ist.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (03-08-2007 um 13:52 Uhr) | |
| | |
| | #7 (permalink) |
| as_alien Registriert seit: Feb 2005
Beiträge: 27
|
also wenn ich echo("POST: ".$_POST["vorname"]); echo("GET: ".$_GET["vorname"]); mit in die delete_test.php reinschreibe, steht da nur POST GET wenn ich es im Browser ausführe ? Habes auch in Flash noch probiert mit trace(delete_lv.vorname); wird aber nur undefined ausgegeben. seltsamerweise schien es einmal beim Testen zu funktionieren, als ich die Zeile var delete_lv = new LoadVars (); in var delete_lv:LoadVars = new LoadVars (); geändert hatte. Aber danach hats nicht mehr funktioniert, als ich andere Namen ausprobiert habe. Vielleicht wars auch nur ne Täschung - hab eh gerade ne kleine brain_blockade. Werde es wohl morgen nochmal versuchen. Geändert von ramonDB (04-08-2007 um 00:58 Uhr) |
| | |
| | #8 (permalink) |
| as_alien Registriert seit: Feb 2005
Beiträge: 27
|
also mir fällt jetzt wirklich nichts mehr ein, wie ich diese Löschfunktion hinkriegen kann. Hab den code der php und der fla jetzt zigmal geändert, alles mögliche ausprobiert, auch hier im Forum nach anderen loadVars scripten gekuckt - aber es funzt nicht ![]() Kann es daran liegen, dass ich es mit xampp hier local teste - geht sowas vielleicht nur real-online ?? |
| | |
| | #9 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.326
|
wie du selbst geschrieben hattest funktioniert das löschen, wenn du den wert direkt im script angibst. somit findet php die datenbank und hat auch zugriffsrechte. folglich ist der nächste schritt die richtigkeit des variableninhaltes im php zu prüfen. hast du das gemacht? hast du, so wie ich es dir empfohlen hatte, mal getestet, ob dein script funktioniert, wenn du in via browser (natürlich über einen server) aufrufst? mit deiner aussage: "..aber es funzt nicht.." kann hier kein mensch was anfangen. was funktioniert nicht? was hast du getestet, was hätte es deiner meinung nach machen sollen und was hat es gemacht? du hast sowas angegeben (natürlich mit deinem richtigen url)? XXXdeinURLXXX.de?vorname=jiri und das ist dabei rausgekommen? "..mit in die delete_test.php reinschreibe, steht da nur POST GET wenn ich es im Browser ausführe?.." dann hat dein server kein $_POST und kein $_GET ? versuch's mal mit dem unsichern: echo($vorname); und nochmals, solange dein php nicht geht brauchst du in flash nichts rumfingern. lass das erst mal weg. teste mit dem browser und einer html-formular-seite. LoadVars http://www.flashforum.de/forum/showt...74#post1389074
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (05-08-2007 um 03:26 Uhr) |
| | |
| | #10 (permalink) |
| Home Flasher Registriert seit: Apr 2004 Ort: Engelskirchen
Beiträge: 345
| Wahrscheinlich ein PHP-Problem
Hallo, es ist wahrscheinlich ein PHP-Problem, bei dem ich dir aber auch helfen kann. Du kennst dich mit PHP noch nicht so sicher aus und steigst gleich mitten rein ins Datenbankleben. Zunächst einmal eine Empfehlung: Gehe mal zu http://www.zend.com und lade dir dort eine Testlizenz des Studions 5.5 herunter. Sie enthält auch einen recht komfortablen PHP-Debugger, mit dem du Step-by-Step deine PHP-Skripts prüfen kannst. So kannst du auch erkennen, ob deine Datenbankabfrage korrekt ausgeführt wird. Ich setze das Zend Studio selbst ein und bin sehr zufrieden damit. Ich gehe mal davon aus, dass du eine fuktionierende WAMP-Umgebung mit Apache Server, MySQL und PHP auf deiner Maschine hast. Der Apache-Server muss gestartet sein (prüfen !), MySQL läuft ab 4.x immer als Windowsdienst mit. Wie es sich auf einem Mac verhält, kann ich leider nicht sagen. Vielleicht kann hier in der Runde einer da noch mit Wissen aushelfen. Dein Skript ist relativ einfach. Stelle es mal, so wie schon hier beschrieben auf GET als Übergabemethode der URL-Paramete um und füge unmittelbar am Skriptbeginn ein PHP-Code: Dein Skript rufst du dann wiefolgt auf: http://localhost/delete_test.php?vorname=Jiri WICHTIG: Den Wert, hier 'Jiri' darfst du beim Aufruf im Browser keinesfalls in Hochkomma oder Gänsefüßchen setzen!!!! Nutze phpMyAdmin, um die Wirkung deines Datenbankzugriffs zu prüfen. Die Datenbankabfrage, die du erstellt hast, müsste funktionieren, ist aber eben nicht ganz ungefährlich. Gruß vom Flash Doc
__________________ Erst Flash CS5 und dann Fläsch' Bier !!! |
| | |
| | #11 (permalink) |
| as_alien Registriert seit: Feb 2005
Beiträge: 27
|
hallo, danke für eure hilfe und eure geduld mit mir @hgseib ja sorry die aussage "funzt nicht" ist natürlich nicht sehr hilfreich, aber ich hatte einfach soviele verschiedene sachen ausprobiert, dass ich am ende selbst nicht mehr durchgeblickt habe. hab jetzt aber auf deinen rat hin eine html eingabe gebaut - so: HTML-Code: <html> <head> <title>Eingabe</title> </head> <body> <div align="center"> <form action="delete.php" method="post"> vorname: <input name="vorname" size="60" maxlength="60"><br> <input value="delete name" type="submit"> </form> </div> </body> </html> das heißt doch dann der fehler muss im flash-code liegen, oder ? @Flash Doc danke für den tip mit dem php-debugger. aber ich versuchs erstmal auf die oben beschriebene art - sonst wird das alles für mich (newbie) zu kompliziert. |
| | |
| | #12 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.326
|
na prima. ist zwar mühselig aber es geht voran. nexter fall, das flash. also zuerstmal sieht das ok aus - sonst hätte ich am anfang schon mal was gesagt. das da fällt mir auf: delete_lv.sendAndLoad("https://127.0.0.1/test/delete_test.php", delete_lv, "POST"); mach's mal ohne https und mit einer relativen adresse (php im selben ordner wie das swf). bei absoluten adressen dürfte es probleme mit den zugriffsrechten geben. delete_lv.sendAndLoad("test/delete_test.php", delete_lv, "POST"); zum testen wie schonmal geschrieben: - ergänze eine onLoad-funktion - sende auf jeden fall ein echo vom php zurück und wenns nur ein true wäre - und erzeuge ein textfeld im fla und da die antwort vom onLoad reinschreiben.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #14 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.326
|
hast du gemacht, was ich dir aufgeschrieben hatte? zeig mal wie das jetzt aussieht. überhaupt, poste mal dein ganzes zeugs. und hast du mal den link gelesen und ausprobiert, den ich dir in #9 gegeben habe?
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (06-08-2007 um 12:39 Uhr) |
| | |
| | #15 (permalink) |
| Home Flasher Registriert seit: Apr 2004 Ort: Engelskirchen
Beiträge: 345
|
Hallo, erstmal: So richtig wohl fühle ich mich mit PHP erst, seit ich das Zend Studio habe. Für etwas umfangreichere PHP-Anwendungen macht das unbedingt Sinn. Nun dein Problem: Es könnte ein Pfad-Problem sein, daher modifiziere mal deinen Code wiefolgt: ActionScript:
Deshalb habe ich mir diese Aufteilung in Sender- und Response-Objekt angewöhnt. Im Senderobjekt wird die Serveranfrage erstellt (Datenzusammenstellung) und dann an den Server gesendet. Das Response-Objekt empfängt die Antwort des Servers und verarbeitet sie weiter. Dieses Verfahren hat noch einen weiteren Vorteil: Variablen, die im Sender-Objekt eingestellt wurden, stehen nach dem Aufruf noch zur Verfügung und wurden nicht durch die Serverantwort überschrieben. Es lehnt sich ferner an das an, was ich von Java her kenne. Da sind HTTPRequest und HTTPResponse in allen entsprechenden Dienstaufrufen eigene Klassen. Ich hoffe, dass dir diese Hinweise endgültig auf die Sprünge helfen. Gruß vom Flash Doc
__________________ Erst Flash CS5 und dann Fläsch' Bier !!! |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |