dynamische Editierseite

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • dynamische Editierseite

    Hi,

    habe eine dynamische Editierseite versucht zu implementieren. Dabei sollen die Spaltenbezeichner als Textfeld und die Inhalte der Zeile der Inhalt der Textfelder sein.
    Nur leider funktioniert mein Code leider nicht.
    1. Frage: Geht so eine Abfrage: $abfrage="SELECT *FROM bauteil WHERE nameteile='$welche'"; ? Also kann ich alle Spalten auswählen ohne alle im Select explizit zu nennen um hinterher ein Where zu benutzen?
    2. Frage: Ich vermute das in der Schleife irgendwas nicht stimmt. Nur bisher habe ich den Fehler nicht gefunden...findet spontan jemand einen Fehler?

    Schonmal danke für eure Antworten!

    PHP-Code:
    <?
    session_start();
    include 'sessionhelpers.inc.php';

    if (!logged_in())
    {
        echo 'Sie sind nicht eingeloggt.<p />';
    echo '<a href="index.php?section=login">Start</a>';
    exit;
    }
    ?> 

    <?
    include("dbconnect.php");

    $welche=$_GET['id'];

    $abfrage="SELECT *FROM bauteil WHERE nameteile='$welche'";

    $result = mysql_query($abfrage) or die(mysql_error());

    $row = mysql_fetch_row($result);





    echo ' <form action=index.php?section=aendern method="post"> ';
    echo ' <table border ="0"> ';


    for ($i = 0; $i < mysql_num_fields($result); $i++){

    echo ' <tr>
     echo ' <td>'.mysql_field_name($result,$i).':</td> ';
          echo ' <td><input type="text" name="'.mysql_field_name($result,$i).'" size="45" value="<?php echo $row[$i];  ?>"> ';

    echo ' </td> ';
    echo '</tr> ';

    }

    ?>

    </table>

     <input type="submit" value="Diese Werte ändern"> 
      </form>
    </body> 
    </html> 

    </body>
    </html>

  • #2
    aufgrund des syntax-highlightnings hätte dir das hier schon auffalen sollen:
    PHP-Code:
    echo ' <tr> 
    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      ... und *FROM ohne Leerzeichen dazwischen geht auch nicht.

      Kommentar


      • #4
        Wow, vielen Dank für eure Hilfe:

        Jetzt hab ich nur noch ein kleines Problem in meiner aendern.php: Irgendwie scheint diese
        Zeile in meinem Code nicht zu funktionieren:
        $name[$i]= "'.mysql_field_name($result,$i).'"; // Name des Textfeldes
        Obwohl ich genau gleich vorgegangen bin wie in dem editieren.php....

        PHP-Code:
        <?
        session_start();
        include 'sessionhelpers.inc.php';

        if (!logged_in())
        {
            echo 'Sie sind nicht eingeloggt.<p />';
        echo '<a href="index.php?section=login">Start</a>';
        exit;
        }
        ?> 


        <?php

        include("dbconnect.php");


        $welche=$_GET["welche"];

        $abfrage 'SELECT * FROM bauteil WHERE nameteile LIKE "%' $welche '%"';

        $result mysql_query($abfrage) or die(mysql_error());

        $row mysql_fetch_row($result);



        for (
        $i 0$i mysql_num_fields($result); $i++){

        $name[$i]= "'.mysql_field_name($result,$i).'"// Name des Textfeldes

        $zwischen[$i] = $_POST["$name[$i]"];  //Post Wert des Textfeldes
         

        $aendern "UPDATE bauteil Set $name[$i] = '$zwischen[$i] ' WHERE nameteile = '$welche'";

        $update mysql_query($aendern)  or die(mysql_error());

        }

        ?>

        Die Daten wurden geändert.


        <br>

        Kommentar


        • #5
          Original geschrieben von JCDenton
          Irgendwie scheint diese
          Zeile in meinem Code nicht zu funktionieren:
          PHP-Code:
          $name[$i]= "'.mysql_field_name($result,$i).'"// Name des Textfeldes 
          Was heisst funktioniert nicht, und was soll sie denn bewirken, diese Zeile ...?
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            PHP-Code:
            $name[$i]= "'.mysql_field_name($result,$i).'"// Name des Textfeldes 
            informier dich mal über zeichenkettenverknüfungen

            gruß
            peter
            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
            Meine Seite

            Kommentar


            • #7
              mach halt mal die "' weg
              Beantworte nie Threads mit mehr als 15 followups...
              Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

              Kommentar


              • #8
                Die Variable name ist gleichzeitig auch der Spaltenbezeichner in meiner MySQL Tabelle. Deswegen taucht auch die Variable name in dem SQL Befehl bei Set auf.

                Habe die " " entfernt, aber der Code läuft trotzdem noch nicht

                Kommentar


                • #9
                  Wenn es nicht läuft, wird es ja sicher ne Fehlermeldung geben ...?
                  ich glaube

                  Kommentar


                  • #10
                    nein, es passiert nichts. Bevor "nichts" passiert ist, habe ich den SQL Code
                    $aendern = "UPDATE bauteil Set $name[$i] = '$zwischen[$i] ' WHERE nameteile = '$welche'";
                    durch
                    $aendern = "UPDATE bauteil Set $name[$i] = '$zwischen[$i]' WHERE nameteile LIKE "%' . $welche . '%"';
                    ersetzt, weil es eine MySQL Fehlermeldung gab.
                    Aber jetzt passiert nichts. Weder wedern Daten in der MySQL Tabelle eingetragen noch erscheint der Text "Die Daten wurden geändert.".
                    Also schätze ich mal, dass PHP davor noch einen Fehler findet.....

                    Hier nochmal mein ganzer Code:

                    PHP-Code:
                    <?
                    session_start();
                    include 'sessionhelpers.inc.php';

                    if (!logged_in())
                    {
                        echo 'Sie sind nicht eingeloggt.<p />';
                    echo '<a href="index.php?section=login">Start</a>';
                    exit;
                    }
                    ?> 


                    <?php

                    include("dbconnect.php");


                    $welche=$_GET["welche"];

                    $abfrage 'SELECT * FROM bauteil WHERE nameteile LIKE "%' $welche '%"';

                    $result mysql_query($abfrage) or die(mysql_error());

                    $row mysql_fetch_row($result);



                    for (
                    $i 0$i mysql_num_fields($result); $i++){

                    $name[$i]= '.mysql_field_name($result,$i).'// Name des Textfeldes

                    $zwischen[$i] = $_POST["$name[$i]"];  //Post Wert des Textfeldes
                     
                    $aendern "UPDATE bauteil Set $name[$i] = '$zwischen[$i]' WHERE nameteile LIKE "%' . $welche . '%"';

                    $update = mysql_query($aendern)  or die(mysql_error());

                    }

                    ?>

                    Die Daten wurden geändert.


                    <br>

                    Kommentar


                    • #11
                      1. was ergibt mysql_num_rows auf die erste query (select)?
                      2. wie sieht diese query aus?
                      3. wie ist error_reporting eingestellt?
                      4. die zuweisung von $name[$i] ist immer noch absoluter blödsinn. denk dir noch ein paar sonderzeichen aus, vielleicht errätst du ja die richte schreibweise.
                      5. kommst du in die zweite for-schleife?
                      6. wie sieht die zweite zusammengestellte query aus?

                      beantworte alle fünf fragen und lern daraus.

                      Kommentar


                      • #12
                        PHP-Code:
                        $name[$i]= '.mysql_field_name($result,$i).'// Name des Textfeldes
                        ...
                        $zwischen[$i] = $_POST["$name[$i]"]; 
                        zeichenketten verdammt noch mal.
                        PHP-Code:
                        $aendern "UPDATE ..."
                        hier sollte dir wieder mal auffalen, dass das syntax-highlightning auf einen fehler aufmerksam macht. und setzt an den anfang deines scriptes mal ein
                        PHP-Code:
                        error_reporting (E_ALL); 
                        peter
                        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                        Meine Seite

                        Kommentar


                        • #13
                          nach Stundenlangem rumprobieren mit den zeichketten bekomme ich leider immernoch keine Lösung hin die funktioniert. Von der Funktionalitätes des Codes bin ich eigentlich überzeugt, wüßte nicht warum dort Fehler drin sein sollten. Also kann es meiner meinung nach nur an der Syntax hapern. Kann bitte nicht jemand die zeilen mit den falschen zeichenketten einfach korrigieren, denn ich bin total kirre von den ganzen Zeichen! Das wäre wirklich sehr nett und hilfreich!

                          Kommentar


                          • #14
                            PHP-Code:
                             $name[$i]= '.mysql_field_name($result,$i).'// Name des Textfeldes
                            ...
                            $zwischen[$i] = $_POST["$name[$i]"]; 
                            Preisfrage: was gehört in Anführungszeichen? Richtig, Strings!

                            Was von dem oben Genannten ist ein String?
                            ich glaube

                            Kommentar


                            • #15
                              das ist ja gerade mein Problem herauszufinden was der String ist und was dabei maskiert wird...
                              Also ich habe das so verstanden, dass der Rückgabewert von '.mysql_field_name($result,$i).' der eigentliche String ist, der der Variable name zugeorndet wird....aber was da jetzt genau maskiert werden muss ist mir wirklich ein Rätsel.

                              Kommentar

                              Lädt...
                              X