#1 20. Juni 2008 mySQL auslesen und anschließend editieren! Hab mal wieder ein kleines problem . Ich lese eine Datenbank aus und möchte die Daten dann updaten bzw neu speichern. Das auslesen funktioniert soweit, doch mit dem erneuten abspeichern habe ich probleme. PHP: <? php if ( $button == " Ja " ) { include ( "../db.php" ); $query = "SELECT * FROM news WHERE id=' $id '" ; $result = mysql_query ( $query ); $line = mysql_fetch_array ( $result ) ?> <div align="center"> <table width="300" border="0" cellspacing="0" cellpadding="0"> <tr> <td><strong>» News ID<?=$line [ id ] ?> wurde zum bearbeiten freigegeben.<br /><br /></strong></td> </tr> <? } else { ?> <table width="300" border="0" cellspacing="0" cellpadding="0"> <tr> <td><strong>» Meldung </strong></td> </tr> <tr> <td><div align="center"> <p> </p> <p>News-ID: <form method="post" action="news_edit.php"> <p>News-ID: <input type="text" name="id" value="" size="10" maxlength="10" /> </p> <p>Möchten Sie die Daten löschen?<br> <br> </p> </div></td> </tr> </table> <? } ?> </div> <? } else { ?> Fehler! <? } ?> Bw gibts für alle hilfreichen Antworten + Multi-Zitat Zitieren
#2 20. Juni 2008 AW: mySQL auslesen und anschließend editieren! Dein "Code" ist sehr konfus. Was funktioniert da nicht?! Ich seh da nix von wegen "Abspeichern". Tipp: UPDATE `table` SET Row = 'NewValue', Another_Row = 'OtherValue' [...] WHERE ID = 1 + Multi-Zitat Zitieren
#3 20. Juni 2008 AW: mySQL auslesen und anschließend editieren! Das der Code leicht verwirrend ist weiß ich... bin halt noch nich so erfahren Aber ich frag mich wie ich das Coden muss, dass er mir eine sql Abfrage macht, wo er die daten "Updated" und das per Button. Ich bekomm ständig errors, wenn ich da nochn button hinzufüge mit einer IF anweisung. Das Hauptproblem ist halt, dass ich ein Button Einfüge, der beim klicken die SQL Daten "Updated". + Multi-Zitat Zitieren
#4 20. Juni 2008 AW: mySQL auslesen und anschließend editieren! PHP: <? php if(isset( $_POST [ 'button' ])) { // wenn button name 'button' vorhanden / gesetzt ist: $id = intval ( $_POST [ 'id' ]); $newText = $_POST [ 'newText' ]; // $newText gegen Injections etc sichern, ggf. HTML rausfiltern, blabla, deine Security Sachen mysql_query ( "UPDATE `yourTable` SET anyRow = ' $newText ' WHERE ID = $id " ); if(! mysql_error ()) print 'Updated successfully.' ; else print 'Error while updating: ' . mysql_error (); } ?> <form action="" method="POST"> <input type="hidden" name="id" value="1" /> <input type="text" name="newText" value="Update mich TextText" /> <input type="submit" name="button" value="Update Now!" /></form> Gewöhn dir mal an, nicht auf register_globals zu "vertrauen". Hol dir die Variablen aus $_GET und $_POST. + Multi-Zitat Zitieren
#5 20. Juni 2008 AW: mySQL auslesen und anschließend editieren! Und nicht vergesse id zu validieren/ab zu sichern PHP: $sql = ( "[...]" . "WHERE ID= '" . intval ( $id ). "';" ); Gnaz wichtig! + Multi-Zitat Zitieren
#6 20. Juni 2008 AW: mySQL auslesen und anschließend editieren! Ah, sehr nice, danke dir! Es klappt, zwar noch nich ganz wie ich es wollte aber dein code klappt ist das Gültig: if(isset($_POST['button==" Speichern "']) wenn ich das schreibe? edit: okay danke! das werd ich umgehend einfügen, nachdem es klappt^^ Das Prob ist, das Er die Daten Updated, bevor ich die Eingabefelder habe wo ich die Sachen ändern kann. + Multi-Zitat Zitieren
#7 20. Juni 2008 AW: mySQL auslesen und anschließend editieren! nein geht nicht. So geht das: PHP: // Wenn "Post" nicht leer UND POST mit dem namen Button "speichern" als Value hat: if (!empty( $_POST ) && $_POST [ 'button' ] == 'speichern' ){ do( $something );} + Multi-Zitat Zitieren
#8 20. Juni 2008 AW: mySQL auslesen und anschließend editieren! Nö. Es sei denn du hast als Index des $_POST Arrays button==" Speichern ". oO [ ] greift auf 'n Index des Arrays zu. Also: if($_POST['button'] == ' Speichern ') Das isset musst du btw weglassen wenn du auch noch auf übereinstimmungen überprüfen willst, das liefert lediglich true/false zurück. + Multi-Zitat Zitieren
#9 20. Juni 2008 AW: mySQL auslesen und anschließend editieren! Hey Leute, danke für eure Hilfe! Bewertungen bekommt ihr gleich hab das nun so geschrieben: PHP: <? php if( $_POST [ 'button' ] == ' Speichern ' ) if(isset( $_POST [ 'button' ])) { // wenn button name 'button' vorhanden / gesetzt ist: $id = intval ( $_POST [ 'id' ]); $newText = $_POST [ 'newText' ]; // $newText gegen Injections etc sichern, ggf. HTML rausfiltern, blabla, deine Security Sachen mysql_query ( "UPDATE `news` SET nachricht = ' $newText ' WHERE ID = $id " ); if(! mysql_error ()) print 'Updated successfully.' ; else print 'Error while updating: ' . mysql_error (); } ?><div align="center"> Soweit bin ich nun, ich glaub aber auch ich seh den Wald vor lauter Bäumen irgendwie nicht. Ich will nun ein Button einfügen der dann das Veränderte zb in einer textarea und feld die sachen updated und die action ausführt.... Sowie´s aussieht kennt ihr beide euch gut aus, wäre deshalb nice wenn ihr mir noch die letzten denkanstöße gibt + Multi-Zitat Zitieren
#10 20. Juni 2008 AW: mySQL auslesen und anschließend editieren! Also so wie ich das verstehe willst du das ganze so AjaxStyle haben. Das hat aber naja so direkt nichts mit PHP zu tun sondern eher mit Javascript... Hier wäre mal ein PHP Code der funktionieren würde: PHP: <? php // Wenn POST gesundet wurde (sprich html formular ausgefüllt) if(!empty( $_POST )) { // Zur Sicherheit zur Zahl machen (soll ja eh nur Zahl sein) $id = intval ( $_POST [ 'id' ]); // Zur Sicherheit escapen $newText = mysql_real_escape_string ( $_POST [ 'newText' ]); mysql_query ( "UPDATE `news` SET nachricht = '" . $newText . "' WHERE ID = '" . $id . "'" ); if(! mysql_error ()) print 'Updated successfully.' ; else print 'Error while updating: ' . mysql_error ();} ?> Das html dazu: Code: <form action="index.php" method="post"> <input type="hidden" name="id" /> <textarea name="newText"></textarea> <input type="submit" name="submit" value="Speichern" /> </form> + Multi-Zitat Zitieren
#11 20. Juni 2008 AW: mySQL auslesen und anschließend editieren! Ist doch 'n bisschen doppelt. Wenn das Array $_POST leer ist kann $_POST['button'] auch nicht den Wert "speichern" haben. @ Post vor mir: Mein Code, den ich vorhin geschrieben hab, würde so auch einwandfrei funktionieren. PHP: $newText = mysql_real_escape_string ( $_POST [ 'newText' ]); Und was ist wenn magic quotes aktiviert ist?! Dann hat er da überall Backslashes in seinem Text drin. Sollte man vorher mit magic_quotes_runtime oder wie die Funktion heißt überprüfen. + Multi-Zitat Zitieren
#12 20. Juni 2008 AW: mySQL auslesen und anschließend editieren! Hi Danke, das klappt soweit ganz gut. Jedoch updated er, bevor ich dorthin komm: Klick hier! Ich hab als erstes Fenster, ein Fenster wo man die ID Eintragen muss die bearbeitet werden soll. Dannach öffnet sich die nächste Seite mit einem Bestätigen auf dem Button OK. Jedoch steht dann dort schon das er geupdated hat, was er erst tun soll wenn ich Speichern klicke. edit: ah danke Telefonzelle. aber das Problem besteht irgendwie weiterhin^^ + Multi-Zitat Zitieren
#13 20. Juni 2008 AW: mySQL auslesen und anschließend editieren! Paste mal den gesamten aktuellen Code. + Multi-Zitat Zitieren
#14 20. Juni 2008 AW: mySQL auslesen und anschließend editieren! okay hier: PHP: <link rel="stylesheet" type="text/css" href="../../../../acp/news/format.css"> <?php session_start (); // Session starten. if (( session_is_registered ( "user_eingeloggt" )) AND ( $user_eingeloggt )) { // Code, wenn der Benutzer eingeloggt ist. // z.B. Ausgabe der Webseite (echo „<html>...“) ?> <!-- angemeldet --> <?php if ( $button == " Ja " ) { include ( "../db.php" ); $query = "SELECT * FROM news WHERE id=' $id '" ; $result = mysql_query ( $query ); $line = mysql_fetch_array ( $result ) ?> <?php // Wenn POST gesundet wurde (sprich html formular ausgefüllt) if(!empty( $_POST )) { // Zur Sicherheit zur Zahl machen (soll ja eh nur Zahl sein) $id = intval ( $_POST [ 'id' ]); // Zur Sicherheit escapen $nachricht = mysql_real_escape_string ( $_POST [ 'nachricht' ]); mysql_query ( "UPDATE `news` SET nachricht = '" . $nachricht . "' WHERE ID = '" . $id . "'" ); if(! mysql_error ()) print 'Updated successfully.' ; else print 'Error while updating: ' . mysql_error (); } ?> <div align="center"> <table width="300" border="0" cellspacing="0" cellpadding="0"> <tr> <td><strong>» News ID<?=$line [ id ] ?> wurde zum bearbeiten freigegeben.<br /><br /></strong></td> </tr> <tr> <td><table width="300" border="0" cellpadding="2" cellspacing="1"> <tr> <td width="80"><div align="right"><strong>Autor:</strong></div></td> <td width="224"><input type="text" name="autor" value="<?=$line [ autor ] ?>"></td> </tr> <tr> <td><div align="right"><strong>Titel:</strong></div></td> <td><input type="text" name="titel" value="<?=$line [ titel ] ?>"></td> </tr> <tr> <td width="80"><div align="right"><strong>Datum:</strong></div></td> <td><input name="datum" type="text" value="<?=$line [ datum ] ?>" size="10" maxlength="10"></td> </tr> <tr> <td width="80" valign="top"><div align="right"><strong>Nachricht:</strong></div></td> <td><textarea name="nachricht" rows="5"><?=$line [ nachricht ] ?></textarea><br /> <form action="news_edit.php" method="post"> <input type="hidden" name="id" /> <textarea name="nachricht"></textarea> <input type="submit" name="submit" value=" Speichern " /> </form> </td> </tr> <tr> <td width="80"><div align="right"></div></td> <td><input type="submit" name="button" value=" Speichern "> <input type="reset" name="button2" value=" Leeren "></td> </tr> </table><br> <a href="javascript:history.back()">Zurück</a></td> </tr> </table> <? } else { ?> <table width="300" border="0" cellspacing="0" cellpadding="0"> <tr> <td><strong>» Meldung </strong></td> </tr> <tr> <td><div align="center"> <p> </p> <p>News-ID: <form method="post" action="news_edit.php"> <p>News-ID: <input type="text" name="id" value="" size="10" maxlength="10" /> </p> <p>Möchten Sie die Daten löschen?<br> <br> </p> <input type="submit" name="button" value=" Ja "> <input type="reset" name="button2" value=" Nein "> </form> </div></td> </tr> </table> <? } ?> </div> <? } else { // Code, wenn der Benutzer nicht eingeloggt ist. // z.B. Fehlermeldung ?> <!-- nicht angemeldet --> Fehler! Sie sind nicht eingeloggt! <? } ?> wie gesagt, sehr unüberschaubar, muss ich dringend noch überarbeiten und hier mal zum downloaden: http://rapidshare.de/files/39778028/news_edit.php.zip.html sorry das es rapid ist, xup geht gerade nicht. Einfach in news_edit.php umbennnen + Multi-Zitat Zitieren
#15 20. Juni 2008 AW: mySQL auslesen und anschließend editieren! PHP: // Wenn POST gesundet wurde (sprich html formular ausgefüllt) if(!empty( $_POST )) { ändern zu PHP: // Wenn POST gesundet wurde (sprich html formular ausgefüllt) if(isset( $_POST [ 'submit' ])) { Weil ich denke mal dein $button ding ist ebenfalls 'n POST Formular vom Einloggen und somit ist $_POST nicht leer auch wenn du noch nicht Ändern willst. Geh am Besten nochmal die Grundlagen von PHP durch.. vor session_start(); sollte auch KEINE Ausgabe kommen (kein <link relblablbla>). + Multi-Zitat Zitieren
#16 20. Juni 2008 AW: mySQL auslesen und anschließend editieren! Hi, danke für den Tipp, jedoch springt er wieder zu: News-ID angeben. Also zum ersten Teil der Seite, wo ich die news id angeben muss und dannach mit der Bestätigung zum nächsten Teil "bearbeiten" gelange. Die Grundlagen von PHP werd ich aufjeden fall nochmal durchgehen, jedoch nicht heute^^ Irgendwie bekomm ich es nicht gebacken , ich dachte mir vll das er auf eine andere Datei zugreift und die das SQL Update vornimmt z.B.: <form action="news_change.php" method="post"> Wäre nämlich wesentlich übersichtlicher, jedoch weiß ich auch nicht genau wie das funktionieren soll. Bin heute ziemlich den ganzen nachmittag am testen usw, und man lernt ja schließlich auch ne menge in dem man rum testet, tipps bekommt etc. Komm wie gesagt dort halt nicht weiter und das schon lange. Wenn mir wie gesagt jemand erklären kann wie ich das am einfachsten machen kann wäre ich sehr dankbar, ich danke euch beiden ihr habt mir gut was gezeigt Wäre nur noch nett, wenn ihr mir beim letzten Punkt noch helfen könnt :> btw. bws habt ihr + Multi-Zitat Zitieren
#17 20. Juni 2008 AW: mySQL auslesen und anschließend editieren! Also irgendwie ist dein Code sehr seltsam. PHP: <input type="text" name="autor" value="<?=$line [ autor ] ?>"> Das gehört ins Formular...ist bei dir aber außerhalb des Formulars... PHP: <? php //session/sicherheit, damit nur der admin zugriff hat ... if(isset( $_POST [ 'submit' ])) { //sicherheit > escapen blablabla $titel = mysql_real_escape_string ( $_POST [ 'titel' ])... //neue werte mittels UPDATE eintragen (id nicht vergessen!) }else { //mysqlabfrage > jetzige werte ins formular als value="" übergeben ... ?> <form action="news_change.php method="post"> <input name="titel" type="text" value="<?php echo $line [ 'id' ]; ?> ...</form> <? } ?> Erklärung: Die ausgewählte News, die geändert werden soll, wird ausgelesen. In dem Formular werden dann Titel, News, Autor,... als Standardwerte eingetragen. Die Felder können jetzt beliebig abgeändert werden. Wenn du auf Submit klickst, werden die geänderten/nicht geänderten Werte mittels UPDATE in die Datenbank geschrieben. + Multi-Zitat Zitieren
#18 13. Januar 2009 AW: mySQL auslesen und anschließend editieren! Bin ganz neu hier. Schlage mich aber seit einigen Tagen und Nächten mit genau diesem Problem herum. Habe nun versucht, den Thread hier zu verstehen und nachzuvollziehen. Blicke aber nicht durch. Wäre sehr dankbar, wenn ein komplettes Script bereit gestellt würde. Das könnte ich dann studieren, verstehen und so abzuändern, dass es meine Belange erfüllt. Ist das zu viel verlangt? Wenn ja, muss ich eben die Ochsentour gehen. Danke für jede Hilfe im Voraus. Gruß Herbert + Multi-Zitat Zitieren