[PHP] MSQL Tabelle in <textarea>'s ausgeben.

Dieses Thema im Forum "Webentwicklung" wurde erstellt von djkroko, 8. März 2010 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 8. März 2010
    MSQL Tabelle in <textarea>'s ausgeben.

    Moin RRler

    Ich versuche mich gerade als Neuling in Sachen PHP und MSQL ...
    Habe mir ein kleines Projekt ausgedacht, welches ich zu lösen versuche.

    Aufgabe:
    - Daten aus einer MYSQL-DB auslesen (PHP), diese dann verändern können und in die Db abspeichern.

    Arbeitsschritte:
    - Datenbank per PHP erstellen [erledigt]
    - Per PHP Daten auslesen und darstellen [erledigt]
    - Datenbank in Formfelder auslesen [fehlt]
    - Datenbank per Formfelder ändern [fehlt]

    Der bisherige Code:
    PHP:
    <? php

    $mysql_h 
    'localhost' $mysql_u  'tester' $mysql_p  'tester_pwd' $mysql_db  'tester_db' ;
    $mysql  = @ mysql_connect ( $mysql_h $mysql_u $mysql_p );
    $db  = @ mysql_select_db ( $mysql_db );

    if( !
    $mysql  || ! $db  )
    {
    print 
    '<b>Sorry</b><br><br>Es gibt momentan leider ein kleines Datenbank-Problem, bitte versuchen Sie es später noch einmal.' ;
    exit;
    }

    $Tabelle = "App" ;

    echo 
    "<center><table border=\"2\">" ;
    echo 
    "<tr>" ;
    echo 
    "<th>Anwendung</th>" ;
    echo 
    "<th>INET</th>" ;
    echo 
    "<th>OUT</th>" ;
    echo 
    "<th>IN</th>" ;
    echo 
    "<th>ROLLE</th>" ;
    echo 
    "<th>FACHE</th>" ;
    echo 
    "<th>TODO</th>" ;

    echo 
    "</tr>" ;

    $sql  "SELECT * FROM  $Tabelle " ;
    $ergebnis  mysql_query ( $sql );

    while(
    $array  mysql_fetch_array ( $ergebnis ))
    {
    echo 
    "<tr>" ;
    echo 
    "<td align=\"middle\">" . $array [ "Anwendung" ]. "</td>" ;
    echo 
    "<td align=\"middle\">" . $array [ "INET" ]. "</td>" ;
    echo 
    "<td align=\"middle\">" . $array [ "OUT" ]. "</td>" ;
    echo 
    "<td align=\"middle\">" . $array [ "IN" ]. "</td>" ;
    echo 
    "<td align=\"middle\">" . $array [ "ROLLE" ]. "</td>" ;
    echo 
    "<td align=\"middle\">" . $array [ "FACHE" ]. "</td>" ;
    echo 
    "<td align=\"middle\">" . $array [ "TODO" ]. "</td>" ;
    echo 
    "</tr>" ;
    }

    echo 
    "</table></center>" ;

    ?>
    Nun komme ich nicht weiter, möchte die Daten schon als Tabelle auslesen wie es nun auch
    funktioniert jedoch diese sollen geändert werden können.

    Habe mir gedacht das muss ja eigentlich ganz einfach sein, also jedes Feld in der Tabelle
    als Formfeld und da die Ausgabe rein, dann kann man halt die Formfelder verändern und
    auf einen Button klicken ... "Send" und es wird dann an die DB übergeben.

    Kann mir da vielleicht jemand weiterhelfen ???

    Danke
     
  2. 8. März 2010
    AW: MSQL Tabelle in Form ausgeben.

    ungetestet
    PHP:
    if (isset( $_POST [ 'save' ])){
        
    $update  mysql_query  ( "UPDATE App SET anw=\"'. $_POST [ 'anw'].'\", inet=\"'. $_POST [ 'inet'].'\" WHERE id=\"'. $_POST [ 'id'].'\"" );
        
        if (!
    $update ){
            die (
    'fehler: ' . mysql_error ());
        }
    }

    while(
    $array  mysql_fetch_array ( $ergebnis )) {
        echo 
    '<form action="" method="post">
        <tr>
            <td align="middle"><input type="text" name="anw" value="'
    . $array [ 'Anwendung' ]. '" /></td>
            <td align="middle"><input type="text" name="inet" value="'
    . $array [ 'INET' ]. '" /></td>
            ...
            <td align="middle"><input type="submit" name="save" value="save" /></td>
        </tr>
        <input type="hidden" name="id" value="'
    . $array [ 'id' ]. '" />
        </form>'
    ;
    }
    prinzip
    - formular pro daten satz
    - in hidden die id
    - beim versenden update mit where id=$_POST['id']
    die id wäre primäre mit auto_increment

    so in der art würde es ablaufen.
     
  3. 8. März 2010
    AW: MSQL Tabelle in Form ausgeben.

    hi
    ich habe mir deine sourcen jetzt nicht angesehen, aber ich gehe mal davon aus das du es nicht in 3 bereiche eingeteilt hast.
    wenn du gerade erst anfängst wäre es ne idee gleich mal zu schauen wie so was in der theorie gemacht wird.
    da teilst du deine projekte in 3 oder mehr schichten ein. sprich gui, fachkonzept, io wäre das einfachste.

    googel mal ein wenig nach der 3 schichtenarichtektur und dann sollte es dir noch etwas einfacher fallen.
     
  4. 10. März 2010
    AW: MSQL Tabelle in Form ausgeben.

    PHP:
        <form name='ausgabe' method='post' >
    <?php
        
    while( $array  mysql_fetch_array ( $ergebnis )){
            echo 
    '<tr>
            <td align=\"middle\" bgcolor="#1e90ff"><u><b>'
    . $array [ "Anwendung" ]. '</u></b></td>
            <td align="middle"><textarea style="width:160px;height:90px;">'
    . $array [ "INM" ]. '</textarea></td>
            <td align="middle"><textarea style="width:160px;height:90px;">'
    . $array [ "PRM" ]. '</textarea></td>
            <td align="middle"><textarea style="width:160px;height:90px;">'
    . $array [ "CHM" ]. '</textarea></td>
            <td align="middle"><textarea style="width:160px;height:90px;">'
    . $array [ "RISK" ]. '</textarea></td>
            <td align="middle"><textarea style="width:160px;height:90px;">'
    . $array [ "DO_ORDER" ]. '</textarea></td>
            <td align="middle"><textarea style="width:160px;height:90px;">'
    . $array [ "BA" ]. '</textarea></td></tr>' ;
        }
    ?>
        </form>
        
    </table>

        <br><br>

        <form name="speichern" action="update.php" method="post">
        <input type="submit" value="Abspeichern" />
        </form>
        </tr>
    Ich hab das nun verbessert ...
    Statt Formularfelder -> Textareas genommen, ist besser !
    Angezeigt wird auch alles was in der DB steht, also dass klappt wunderbar !

    Ich bekomme das nun jedoch nicht hin, dass ich den Inhalt der <textarea> in die MSQL-DB
    schreibe. Habe unten einen Button, Abspeichern, der auf eine update.php zugreift, die
    möchte ich nun mit einer Funktion füllen, was mir dann die Änderungen in die DB schreibt

    Kann da jemand vielleicht nochmal helfen ???
     
  5. 10. März 2010
    AW: MSQL Tabelle in Form ausgeben.

    stichwort ist update.

    sieh doch nochmal was ich geschrieben hab (oben)
     
  6. 10. März 2010
    AW: MSQL Tabelle in Form ausgeben.

    Ok, hab das nun mal versucht umzusetzten:

    - update.php

    PHP:

    <?php

    if (isset( $_POST [ 'speichern' ])){
        
    $update  mysql_query  ( "UPDATE App SET anw=\"'. $_POST [ 'Anwendung'].'\", inm=\".' $_POST [ 'INM'].'\", prm=\".' $_POST [ 'PRM'].'\", chm=\".' $_POST [ 'CHM'].'\", risk=\".' $_POST [ 'RISK'].'\", do_order=\".' $_POST [ 'DO_ORDER'].'\", ba=\".' $_POST [ 'BA'].'\" WHERE id=\"'. $_POST [ 'id'].'\"" );
        
        if (!
    $update ){
            die (
    'fehler: ' . mysql_error ());
        }
    }

    ?>

    Jedoch kommt dann folgende Fehlermeldung:

    Code:
    Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/www-data/update.php on line 4 
    
    Leider find ich den Fehler net
     
  7. 10. März 2010
    AW: MSQL Tabelle in Form ausgeben.

    syntax war falsch
    PHP:
    if (isset( $_POST [ 'speichern' ])){
        
    $update  mysql_query  ( 'UPDATE App SET anw="' . $_POST [ 'Anwendung' ]. '", inm="' . $_POST [ 'INM' ]. '", prm="' . $_POST [ 'PRM' ]. '", chm="' . $_POST [ 'CHM' ]. '", risk="' . $_POST [ 'RISK' ]. '", do_order="' . $_POST [ 'DO_ORDER' ]. '", ba="' . $_POST [ 'BA' ]. '" WHERE id="' . $_POST [ 'id' ]. '"' );

        if (!
    $update ){
            die (
    'fehler: ' . mysql_error ());
        }
    }
     
  8. 10. März 2010
    AW: MSQL Tabelle in Form ausgeben.

    Jetzt gibt er nicht direkt einen Fehler aus, sondern dies:

    Code:
    if (isset($_POST['speichern'])){ $update = mysql_query ('UPDATE App SET anw="'.$_POST['Anwendung'].'", inm="'.$_POST['INM'].'", prm="'.$_POST['PRM'].'", chm="'.$_POST['CHM'].'", risk="'.$_POST['RISK'].'", do_order="'.$_POST['DO_ORDER'].'", ba="'.$_POST['BA'].'" WHERE id="'.$_POST['id'].'"'); if (!$update){ die ('fehler: '.mysql_error()); } }
    
    Jedoch Speichert er die Änderungen auch nicht
     
  9. 11. März 2010
    AW: MSQL Tabelle in Form ausgeben.

    Nun folgender Stand:

    - index.php
    PHP:
    <html>
    <body bgcolor="#383838">

    <?php

    include ( "dbconnect.php" );

    $Tabelle = "App" ;

    $sql  "SELECT * FROM  $Tabelle " ;
    $ergebnis  mysql_query ( $sql );

    ?>

    <center><table border=\"2\">
        <tr>
        <th><font color="white">Anwendung</th>
        <th><font color="white">INM</th>
        <th><font color="white">PRM</th>
        <th><font color="white">CHM</th>
        <th><font color="white">RISK</th>
        <th><font color="white">DO_ORDER</th>
        <th><font color="white">BA</font></th>
        </tr>
        

        <form name='ausgabe' method='post' >
    <?php
        
    while( $array  mysql_fetch_array ( $ergebnis )){
            echo 
    '<tr>
            <td align=\"middle\" bgcolor="#1e90ff"><u><b>'
    . $array [ "Anwendung" ]. '</u></b></td>
            <td align="middle"><textarea style="width:160px;height:90px;">'
    . $array [ "INM" ]. '</textarea></td>
            <td align="middle"><textarea style="width:160px;height:90px;">'
    . $array [ "PRM" ]. '</textarea></td>
            <td align="middle"><textarea style="width:160px;height:90px;">'
    . $array [ "CHM" ]. '</textarea></td>
            <td align="middle"><textarea style="width:160px;height:90px;">'
    . $array [ "RISK" ]. '</textarea></td>
            <td align="middle"><textarea style="width:160px;height:90px;">'
    . $array [ "DO_ORDER" ]. '</textarea></td>
            <td align="middle"><textarea style="width:160px;height:90px;">'
    . $array [ "BA" ]. '</textarea></td></tr>' ;
        }
    ?>
        </form>
        
    </table>

        <br><br>

        <form name="speichern" action="update.php" method="post">
        <input type="submit" value="Abspeichern" />
        </form>
        </tr>
        

    </center>
    </body>
    </html>

    - update.php
    PHP:
    <? php


    if (isset( $_POST [ 'speichern' ])){
        
    $query  'UPDATE App SET anw=' . $_POST [ 'Anwendung' ]. ', inm="' . $_POST [ 'INM' ]. '", prm="' . $_POST [ 'PRM' ]. '", chm="' . $_POST [ 'CHM' ]. '", risk="' . $_POST [ 'RISK' ]. '", do_order="' . $_POST [ 'DO_ORDER' ]. '", ba="' . $_POST [ 'BA' ]. '" WHERE id="' . $_POST [ 'id' ]. '"' ;

        
    $update  mysql_query ( $query );
        
        echo 
    $query ;
        
        if (!
    $update ){
            die (
    'fehler: ' . mysql_error ());
        }
    }  

        echo 
    "Tabelle ist nun auf dem neusten Stand."

    ?> 
    Das Problem nun:
    - Wenn ich die update.php ausführe, per klick auf "Abspeichern"
    - Gibt er mir: "Tabelle ist nun auf dem neusten Stand" aus, also keine Fehler ...
    - Jedoch wird kein UPDATE der Tabelle durchgeführt

    Ich bin am verzweifeln
     
  10. 11. März 2010
    AW: MSQL Tabelle in Form ausgeben.

    1. filter deine $_POST variablen!
    2. der query ist fehlerhaft. ich rate dir zu einer lesbaren schreibweise:

    PHP:
    <? php

    if (isset( $_POST [ 'speichern' ])){
        
    $fx  'mysql_real_escape_string' ;
        
        
    $query  '
            UPDATE App 
            SET 
                anw = "' 
    $fx ( $_POST [ 'Anwendung' ]) .  '", 
                inm = "' 
    $fx ( $_POST [ 'INM' ]) .  '", 
                prm = "' 
    $fx ( $_POST [ 'PRM' ]) .  '", 
                chm = "' 
    $fx ( $_POST [ 'CHM' ]) .  '", 
                risk = "' 
    $fx ( $_POST [ 'RISK' ]) .  '", 
                do_order = "' 
    $fx ( $_POST [ 'DO_ORDER' ]) .  '", 
                ba = "' 
    $fx ( $_POST [ 'BA' ]) .  '" 
            WHERE id = "' 
    $fx ( $_POST [ 'id' ]) .  '"
        '
    ;

        
    $update  mysql_query ( $query );
        
        echo 
    $query ;
        
        if (!
    $update ){
            die (
    'fehler: ' . mysql_error ());
        }
    }  

        echo 
    "Tabelle ist nun auf dem neusten Stand."

    ?>
     
  11. 11. März 2010
    AW: MSQL Tabelle in Form ausgeben.

    Hm, danke dir erstmal sehr Murdoc
    Leider macht er dann auch nichts außer: Tabelle ist nun auf dem neusten Stand.
    Komm da einfach nicht weiter, bin eh sehr neu auf dem Gebiet sodass ich nur googlen kann und
    da finde ich irrgendwie nichts zu meinem Problem

    Gruß
     
  12. 11. März 2010
    AW: MSQL Tabelle in Form ausgeben.

    deine textarea's haben keine namen
     
  13. 11. März 2010
    AW: MSQL Tabelle in Form ausgeben.

    ok, hab das mal dann nun so gemacht:

    - index.php

    PHP:
    <html>
    <body bgcolor="#383838">

    <?php

    include ( "dbconnect.php" );

    $Tabelle = "App" ;

    $sql  "SELECT * FROM  $Tabelle " ;
    $ergebnis  mysql_query ( $sql );

    ?>

    <center><table border=\"2\">
        <tr>
        <th><font color="white">Anwendung</th>
        <th><font color="white">INM</th>
        <th><font color="white">PRM</th>
        <th><font color="white">CHM</th>
        <th><font color="white">RISK</th>
        <th><font color="white">DO_ORDER</th>
        <th><font color="white">BA</font></th>
        </tr>
        

        <form name='ausgabe' method='post' >
    <?php
        
    while( $array  mysql_fetch_array ( $ergebnis )){
            echo 
    '<tr>
            <td align=\"middle\" bgcolor="#1e90ff"><u><b>'
    . $array [ "Anwendung" ]. '</u></b></td>
            <td align="middle"><textarea name="inm" style="width:160px;height:90px;">'
    . $array [ "INM" ]. '</textarea></td>
            <td align="middle"><textarea name="prm" style="width:160px;height:90px;">'
    . $array [ "PRM" ]. '</textarea></td>
            <td align="middle"><textarea name="chm" style="width:160px;height:90px;">'
    . $array [ "CHM" ]. '</textarea></td>
            <td align="middle"><textarea name="risk" style="width:160px;height:90px;">'
    . $array [ "RISK" ]. '</textarea></td>
            <td align="middle"><textarea name="do_order" style="width:160px;height:90px;">'
    . $array [ "DO_ORDER" ]. '</textarea></td>
            <td align="middle"><textarea name="ba" style="width:160px;height:90px;">'
    . $array [ "BA" ]. '</textarea></td></tr>' ;
        }
    ?>
        </form>
        
    </table>

        <br><br>

        <form name="speichern" action="update.php" method="post">
        <input type="submit" value="Abspeichern" />
        </form>
        </tr>
        
        <form name="mysql2excel" action="mysql2excel.php" method="post">
        <input type="submit" value="Als Excel Datei" />
        </form>
        </tr>

    </center>
    </body>
    </html>
    Jedoch gibts bei der Ausgabe keine Änderung
    Und die Tabelle bekommt auch kein Update rein ...

    Ist das so richtig mit den Namen ?

    Gruß
     
  14. 11. März 2010
    AW: MSQL Tabelle in Form ausgeben.

    nein, die namen der area's müssen 1zu1 die gleichen sein wie die namen der $_POST-variablen.
     
  15. 11. März 2010
    AW: MSQL Tabelle in Form ausgeben.

    - index.php

    PHP:
    <html>
    <body bgcolor="#383838">

    <?php

    include ( "dbconnect.php" );

    $Tabelle = "App" ;

    $sql  "SELECT * FROM  $Tabelle " ;
    $ergebnis  mysql_query ( $sql );

    ?>

    <center><table border=\"2\">
        <tr>
        <th><font color="white">Anwendung</th>
        <th><font color="white">INM</th>
        <th><font color="white">PRM</th>
        <th><font color="white">CHM</th>
        <th><font color="white">RISK</th>
        <th><font color="white">DO_ORDER</th>
        <th><font color="white">BA</font></th>
        </tr>
        

        <form name='ausgabe' method='post' >
    <?php
        
    while( $array  mysql_fetch_array ( $ergebnis )){
            echo 
    '<tr>
            <td align=\"middle\" bgcolor="#1e90ff"><u><b>'
    . $array [ "Anwendung" ]. '</u></b></td>
            <td align="middle"><textarea name="INM" style="width:160px;height:90px;">'
    . $array [ "INM" ]. '</textarea></td>
            <td align="middle"><textarea name="PRM" style="width:160px;height:90px;">'
    . $array [ "PRM" ]. '</textarea></td>
            <td align="middle"><textarea name="CHM" style="width:160px;height:90px;">'
    . $array [ "CHM" ]. '</textarea></td>
            <td align="middle"><textarea name="RISK" style="width:160px;height:90px;">'
    . $array [ "RISK" ]. '</textarea></td>
            <td align="middle"><textarea name="DO_ORDER" style="width:160px;height:90px;">'
    . $array [ "DO_ORDER" ]. '</textarea></td>
            <td align="middle"><textarea name="BA" style="width:160px;height:90px;">'
    . $array [ "BA" ]. '</textarea></td></tr>' ;
        }
    ?>
        </form>
        
    </table>

        <br><br>

        <form name="speichern" action="update.php" method="post">
        <input type="submit" value="Abspeichern" />
        </form>
        </tr>
        
        <form name="mysql2excel" action="mysql2excel.php" method="post">
        <input type="submit" value="Als Excel Datei" />
        </form>
        </tr>

    </center>
    </body>
    </html>
    - update.php

    PHP:
    <? php

    if (isset( $_POST [ 'speichern' ])){
        
    $fx  'mysql_real_escape_string' ;
        
        
    $query  '
            UPDATE App 
            SET 
                inm = "' 
    $fx ( $_POST [ 'INM' ]) .  '", 
                prm = "' 
    $fx ( $_POST [ 'PRM' ]) .  '", 
                chm = "' 
    $fx ( $_POST [ 'CHM' ]) .  '", 
                risk = "' 
    $fx ( $_POST [ 'RISK' ]) .  '", 
                do_order = "' 
    $fx ( $_POST [ 'DO_ORDER' ]) .  '", 
                ba = "' 
    $fx ( $_POST [ 'BA' ]) .  '" 
            WHERE id = "' 
    $fx ( $_POST [ 'id' ]) .  '"
        '
    ;

        
    $update  mysql_query ( $query );
        
        echo 
    $query ;
        
        if (!
    $update ){
            die (
    'fehler: ' . mysql_error ());
        }
    }  

        echo 
    "Tabelle ist nun auf dem neusten Stand." ;
        
        echo 
    "<br><br>" ;
        
        echo 
    "Sie werden in 3 Sekunden weitergeleitet ..." ;
        
        

    ?> 

    <head><meta http-equiv="refresh" content="3;script.php"></head>
    Leider das gleiche Ergebnis wie davor, kommt es eventuell zu Konflikten mit den Variablennamen ?

    Gruß
     
  16. 11. März 2010
    AW: MSQL Tabelle in Form ausgeben.

    nein.

    du hast 3 form's verbaut und daher werden die ganzen textarea's garnet übergeben wenn du auf speichern klickst.

    zudem ist dein html-code invalid.

    am besten du schaust dir online noch div. html-tutorials an und überarbeitest das ganze nochmal
     
  17. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.