Ankündigung

Einklappen
Keine Ankündigung bisher.

SQL Tabelle ausgeben und Link zur Bearbeitung erzeugen

Einklappen

Neue Werbung 2019

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

  • SQL Tabelle ausgeben und Link zur Bearbeitung erzeugen

    Hallo zusammen,

    ich benötige nochmals Hilfe bei einem Problem. Ich habe gelernt dass ich mittels:

    PHP-Code:
    <?php
    echo "<table><p>";
    $ergebnis mysqli_query($db"SELECT id, topic, partner, status FROM audit_request WHERE status='Beantragung'");
    while(
    $row mysqli_fetch_object($ergebnis))
     


    {
      echo 
    "<tr><p>";
      echo 
    "<td>",$row->id,"</td>";  
      echo 
    "<td>",$row->topic,"</td>";
      echo 
    "<td>",$row->partner,"</td>";
      echo 
    "<td>",$row->status,"</td>";
      echo 
    "</tr>";
    }
    echo 
    "</table>";
    ?>
    Daten aus einer Datenbank in einer Tabelle mir anzeigen lassen kann. Das klappt auch ganz gut bislang. Nun möchte ich neben dem einzelnen Datensatz, also Zeile, einen "Bearbeiten" Button haben der bei Klick mich an ein Formular weiterleitet und die id übergibt, so dass ich im Formular den Datensatz bearbeiten kann. Ich weiß nun dass ich dazu folgenden Aufbau nutzen sollte:

    PHP-Code:
    <a href="?action=edit&id=<?php echo $row["id"]; ?>">
    Nun ist mir nicht ganz klar die das Ganze auszusehen hat. Ich bin mir sicher dass der Aufbau meines Links auch nicht korrekt ist das der Link, bei Mouseover, keine ID beinhaltet.

    Könnte mir jemand einen Denkanstoßgeben? Wo finde ich genau zu diesem Thema entsprechende Lektüre?

    Vielen Dank im voraus!

  • #2
    Wo platzierst Du genau das A-Tag (den Link)?
    Wenn Du natürlich den Link weiter unten erst platzierst (und nicht in der While-Schleife), und womöglich noch die Datenbank wieder schliesst, dann kann da auch nichts mehr aus der Datenbank geholt werden ($row["id"]) .

    Kommentar


    • #3
      PHP-Code:
      <?php
      echo "<table><p>";
      $ergebnis mysqli_query($db"SELECT id, topic, partner, status FROM audit_request WHERE status='Beantragung'");
      while(
      $row mysqli_fetch_object($ergebnis))
       


      {
        echo 
      "<tr><p>";
        echo 
      "<td>",$row->id,"</td>";  
        echo 
      "<td>",$row->topic,"</td>";
        echo 
      "<td>",$row->partner,"</td>";
        echo 
      "<td>",$row->status,"</td>";
        echo 
      "</tr>";
      }
      echo 
      "</table>";
      ?> 
      <a href="?action=edit&id=<?php echo $row["id"]; ?>">

      Kommentar


      • #4
        hallo,
        du hast einen kleinen Denkfehler in dem Code aus Beitrag #3 . Der Link muss für jede einzelne Zeile mitgeneriert werden.
        also:
        PHP-Code:
        <?php
        echo "<table>";
        $ergebnis mysqli_query($db"SELECT id, topic, partner, status FROM audit_request WHERE status='Beantragung'");
        while(
        $row mysqli_fetch_object($ergebnis))
        {
          echo 
        "<tr>";
           echo 
        "<td>",$row->id,"</td>";  
           echo 
        "<td>",$row->topic,"</td>";
           echo 
        "<td>",$row->partner,"</td>";
           echo 
        "<td>",$row->status,"</td>";
           echo 
        "<td><a href='?action=edit&id=".$row->id."'>bearbeiten</a></td>";
          echo 
        "</tr>";
        }
        echo 
        "</table>";
        ?>
        Das ist jetzt allerdings ungetestet.

        Schreib mal folgendes in dein Script:
        PHP-Code:
        echo"<pre align=left>";
        print_r($_GET);
        echo
        "</pre>"
        das gibt dir das Array $_GET im Browser aus. Wenn der Link richtig funktioniert, dann müsste da irgendwas wie action=>edit und id=>1 stehen, wenn du draufdrückst.

        Kommentar


        • #5
          PHP-Code:
          <?php
          echo "<table><p>";
          $ergebnis mysqli_query($db"SELECT id, topic, partner, status FROM audit_request WHERE status='Beantragung'");
          while(
          $row mysqli_fetch_object($ergebnis))
          {
            echo 
          "<tr><p>";
            echo 
          "<td>",$row->id,"</td>";  
            echo 
          "<td>",$row->topic,"</td>";
            echo 
          "<td>",$row->partner,"</td>";
            echo 
          "<td>",$row->status,"</td>";
            echo 
          "<td><a href='?action=edit&id=",$row->id,"'>Datensatz bearbeiten</a></td>";
            echo 
          "</tr>";
          }
          echo 
          "</table>";
          ?>
          Ungefähr so

          Edit: Da war einer schneller

          Kommentar


          • #6
            Danke Leute! Also muss ich immer innerhalb des Tabels arbeiten oder bis wohin darf ich ?

            Kommentar


            • #7
              Funktioniert übringens

              Kommentar


              • #8
                Zitat von GalileoRMB Beitrag anzeigen
                Danke Leute! Also muss ich immer innerhalb des Tabels arbeiten oder bis wohin darf ich ?
                PHP-Code:
                while($row mysqli_fetch_object($ergebnis))

                Die While-Anweisung holt solange Daten aus der Datenbank, wie Ergebnisse da sind.
                D.h. du musst innerhalb der '{', '}' mit den Daten arbeiten.

                Kommentar


                • #9
                  Ok prima, Danke für die Hinweise!

                  Kommentar


                  • #10
                    Wenn du das jetzt nur programmierst um die Datenbank allgemein zu bearbeiten, dann nutze doch phpmyadmin dazu. Ansonsten ist hier noch nen Beitrag zur Theorie eines Affenformulars, also ein selbstverarbeitendes Script wie deins.
                    http://php-de.github.io/jumpto/affenformular/

                    Kommentar


                    • #11
                      Danke poseidon,

                      nein ich möchte ein Formular erstellen in welchem ich via Browser Datensätze erstellen und ändern kann.
                      Das mit der ID hat jetzt geklappt. ich kann auf der Folgeseite mit $_GET die ID ausgeben.

                      Was ich aber nicht verstehe ist wenn ich sage:

                      PHP-Code:
                      $abfrage "SELECT * FROM audit_request WHERE id = '$id'";

                      echo 
                      $id;
                      echo 
                      $status
                      er mir zwar die id ausgibt, aber nicht den status. Der Status steht in der Tabelle auch so drinnen. Fehlermeldung ist: Notice: Undefined variable: status in C:\xampp\htdocs\001\update.php on line 15

                      Das bringt mich zur Verzweiflung... warum soll ich status definieren wenn ich doch sage gib mir den inhalt aus status zur id 123 ?
                      Ich habe mal gegoogled und gesehen dass das was ich denke eigentlich stimmt, oder denke ich etwa falsch oder habe was grundlegendes vergessen?

                      edit: muss ich vieleicht nach select die einzelnen variablen neudefinieren? Klingt unlogisch für mich... Im Prinzip mache ich nichts anderes wie einen Sverweis in Excel...

                      Kommentar


                      • #12
                        Das bringt mich zur Verzweiflung... warum soll ich status definieren wenn ich doch sage gib mir den inhalt aus status zur id 123 ?
                        Weil du es nicht tust. Sieh dir deinen Code nochmal an und stell dir die Frage woher du die Variable $id nimmst.

                        Antwort: Sie kommt nicht aus der Datenbank sondern du hast sie, weil du sie übergeben hast und irgendwo eine Zeile $id = $_GET['id']; hast.

                        Wie du an den Status kommen kannst, hast du in deinem Code oben schon gezeigt. In deinem neuen Code fehlt, dass du die Abfrage ausführst und das Ergebnis fetchst.

                        Kommentar


                        • #13
                          Ok verstanden! Es fehlte
                          PHP-Code:
                          while($row mysqli_fetch_object($ergebnis)) 
                          wie eigentlich in meiner ersten Abfrage wo ich eben alles habe anzeigen lassen. Im Prinzip das gleiche nun in grün bis auf den Zusatz WHERE id = $id

                          Danke schön!

                          Kommentar

                          Lädt...
                          X