[PHP] mySQL auslesen und anschließend editieren!

Dieses Thema im Forum "Webentwicklung" wurde erstellt von mySQL, 20. Juni 2008 .

  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>&raquo; 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>&raquo; Meldung </strong></td>
        </tr>
        <tr>
          <td><div align="center">
            <p>&nbsp;</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&ouml;chten Sie die Daten l&ouml;schen?<br>
    <br>
    </p>      </div></td>
        </tr>
      </table>
      <?
    }
    ?>
    </div>
    <?  } else {
      
    ?>
      Fehler!
    <?
    }
    ?>

    Bw gibts für alle hilfreichen Antworten
     
  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
     
  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".
     
  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.
     
  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!
     
  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.
     
  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 );
    }
     
  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.
     
  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
     
  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>
     
  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.
     
  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^^
     
  13. 20. Juni 2008
    AW: mySQL auslesen und anschließend editieren!

    Paste mal den gesamten aktuellen Code.
     
  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>&raquo; 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&uuml;ck</a></td>
        </tr>
      </table>
    <?
    }
    else {
    ?>
      <table width="300" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td><strong>&raquo; Meldung </strong></td>
        </tr>
        <tr>
          <td><div align="center">
            <p>&nbsp;</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&ouml;chten Sie die Daten l&ouml;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
     
  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>).
     
  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
     
  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.
     
  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
     
  19. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.