Ankündigung

Einklappen
Keine Ankündigung bisher.

Tabelle Auf Webseite aktualisiert sich automatisch mit Datenbank

Einklappen

Neue Werbung 2019

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

  • Tabelle Auf Webseite aktualisiert sich automatisch mit Datenbank

    Hey,
    ich mache derzeit ein Praktikum und mein Praktikumsleiter will, dass ich eine Seite mit Downloadlinks in einer Tabelle für bestimmte Programme erstelle. Ich habe eine Datenbank erstellt, wo ich alle Programmnamen, die eine einmalige ID bekommen haben, und die dazugehörigen Downloadlinks bereits drin habe. Meine Seite sieht derzeit so aus, dass ich eine Abfrage mit der Datenbank habe, die die Links auf der Webseite bereitstellt. Nun soll ich es so machen, dass wenn ich einen Datensatz in der Datenbank hinzufüge, die Tabelle auf der Webseite automatisch geupdated wird und das neue Programm sofort (nach refresh) dort steht.
    Ich dachte mir ich mache eine for-Schleife wo ich die ID-Nummer immer höher setzte um so zu prüfen, ob es die ID in der Datenbank gibt. Das verbinde ich dann mit einer while-Schleife, also, dass er das so lange macht bis es eine ID-Nummer nicht gibt und einer if-Schleife, die prüft ob es die ID-Nummer gibt. Jedoch weiß ich nicht ganz wie ich das anstellen soll und habe schon alles probiert was mir so eingefallen ist..

    Falls ihr irgendwelchen Code braucht lasst es mich wissen.
    Ich hoffe das war alles gut erklärt und hoffe auf eine Antwort die mir hilf
    MfG

  • #2
    Zitat von ilkayba Beitrag anzeigen
    Hey,
    Ich hoffe das war alles gut erklärt.
    Nein.

    Zitat von ilkayba Beitrag anzeigen
    Falls ihr irgendwelchen Code braucht lasst es mich wissen.
    Ja, bitte!
    Woher sollen wir denn wissen, was du schon hast, wenn du es uns nicht zeigst?

    Kommentar


    • #3
      Wenn du in einer Tabelle einen Datensatz hinzufügst, dann steht dieser bei der nächsten Abfrage automatisch mit drin.
      Du musst also nur deine While-Schleife auf die Datenbankabfrage ohne Limitierung loslassen.

      geupdated gibt es nicht, es heisst aktualisiert; meine Textkorrektur unterkringelt solche Begriffe immer, bei dir etwa nicht?

      Kommentar


      • #4
        Bei mir ist auch ein Kringel unter "heisst" und ....

        Unbenannt.PNG

        Kommentar


        • #5
          Die Schweizer kennen kein ß, daher ersetze ich es, wie viele hier, durch ss.
          N.B. mir fällt nur zunehmend auf, das halt viele nicht mehr richtig deutsch schreiben können, von Aussagen wie, " ich kann aber nicht so gut englisch" sehen wir daher mal erst recht ab. Kann ja sein, dass es nur mir auffällt.

          Kommentar


          • #6
            Ja, die schöne Zeit der 90er ist leider vorbei, seitdem jeder Dumme ins Internet kommt.
            bitcoin.de <- Meine Freelancerwährung

            Kommentar


            • #7
              Zitat von protestix Beitrag anzeigen
              geupdated gibt es nicht, es heisst aktualisiert; meine Textkorrektur unterkringelt solche Begriffe immer, bei dir etwa nicht?
              Wusste nicht, dass wir uns hier im Deutschunterricht befinden.
              Ich denke, man sollte trotzdem verstehen, was ich meine.

              Zur äußerst hilfreichen Antwort von Alpha:
              Danach hat niemand gefragt, ich verstehe nicht wieso man seinen Senf dazugeben muss, wenn es überhaupt nicht mit dem Problem zu tun hat.

              MrChangelog:
              Tut mir leid, jedoch hat sich das Problem am Ende doch gelöst.
              Danke für die angebotene Hilfe.

              Falls es jemanden interessieren sollte, so habe ich es vorerst gelöst:
              PHP-Code:
              for($i=1$i 99$i++){
                 
              $result mysqli_query($conn"SELECT name, link FROM links WHERE id = $i");
                 while(
              $row mysqli_fetch_assoc($result)) {
                    echo 
              "<tr>";
                       echo 
              "<td id='name'>".$row['name']."</td>";
                       echo 
              "<td style='text-align:center'><a class='link' href='".$row['link']."'>".'Download'."</a>";
                    echo 
              "</tr>";
                 }

              Kommentar


              • #8
                WTF? Warum machst du aussen noch eine for-Schleife? Lass die for-Schleife weg und auch das "WHERE id":

                PHP-Code:
                   $result mysqli_query($conn"SELECT `name`, `link` FROM `links`");
                   while(
                $row mysqli_fetch_assoc($result)) {
                      echo 
                "<tr>";
                         echo 
                "<td id='name'>".$row['name']."</td>";
                         echo 
                "<td style='text-align:center'><a class='link' href='".$row['link']."'>".'Download'."</a>";
                      echo 
                "</tr>";
                   } 

                Kommentar


                • #9
                  Stimmt, danke!
                  Ich habe das WHERE id.. von meinem Testprogramm übernommen und habe wahrscheinlich deswegen die for-schleife noch herum gemacht, weil ich mich so daran gehalten habe
                  Danke nochmal

                  Kommentar


                  • #10
                    Wusste nicht, dass wir uns hier im Deutschunterricht befinden.
                    Nein, aber in einem Programmierforum, was das Ganze noch schlimmer macht, da die Interpreter oder SQL-Parser nicht mal ein fehlendes Komma verzeihen.

                    Seinen Senf kann hier jeder dazu geben, das Forum ist ja nicht deines. Wenn du ein eigenes Forum hast darfst du auch deine eigenen Regeln aufstellen, solange aber gelten diese Forenregeln.

                    Auch noch wichtig.
                    Immer wenn du eine Schleife hast, muss du Acht geben, dass du nicht etwas duplizierst, was ein Problem werden kann.

                    Hier läufst du also durch die Schleife und gibst die Tabelle aus.
                    Innerhalb dessen hast du
                    PHP-Code:
                    echo "<td id='name'>" 

                    Du gibst also jeder Tabellenzelle die gleiche id mit. Laut Spezifikation müssen Ids aber eindeutig sein.
                    Das merkst du spätestens, wenn du die Seite mal validieren lässt.

                    Dann noch etwas:
                    Wenn du eine SQL Abfrage hast und nur Ids die kleiner als 99 sind, ausgeben lassen willst, reicht auch
                    Code:
                    SELECT `name`, `link` FROM `links` WHERE `id` < 99
                    Bei Mysql immer die Backticks besser immer mit angeben.

                    Kommentar


                    • #11
                      Zitat von ilkayba Beitrag anzeigen
                      Wusste nicht, dass wir uns hier im Deutschunterricht befinden. ...
                      Wenn du hier öfter posten möchtest, solltest du dich "schlauerweise" an diesen gewöhnungsbedürftigen Tonfall gewöhnen. Ich verstehe auch nicht warum das sein muß, und ich akzeptiere auch die von protestix gegebenen Begründungen nicht - off-topic ist off-topic und sollte unterbleiben, auch wenn das in den Forenregeln nicht ausdrücklich erwähnt wird -, aber wenn du dich daran aufhältst, verschwendest du nur Zeit.

                      Was die unnötige where-Bedingung und for-Schleife betrifft: Vielleicht hilft es, sich das grundsätzliche Vorgehen beim Füllen von Formularen mit Abfrage-Ergebnissen via PHP zu vergegenwärtigen: Es gibt keine "Abkürzung" oder "Beschleunigung" durch einen wie auch immer gearteten "Refresh-Befehl". In anderen Programmiersprachen für Anwendungen, die auf einer Datenbank aufsetzen, gibt es den Refresh - aber letztlich macht der auch nichts anderes als du: Er fragt nochmal sämtliche Daten ab. Was dazu gekommen ist und ob überhaupt, interessiert dabei überhaupt nicht.

                      Wenn du allerdings z.B. die neu hinzugekommen Einträge farblich markieren möchtest o. dergl., ist das etwas ganz anderes. Dann müsstest du allerdings ganz anders vorgehen, denn die Information, was verändert wurde, ist in 1. Linie zum Zeitpunkt der betr. Veränderung verfügbar. Da wäre dann bspw. der Rückgabewert mysqli_affected_rows von Belang. Aber damit wäre es dann noch lange nicht getan.

                      Noch ein Hinweis: "Name" oder "name" sollte niemals als Spaltenname einer Tabelle verwendet werden.

                      Kommentar


                      • #12
                        Zitat von protestix Beitrag anzeigen
                        Bei Mysql immer die Backticks besser immer mit angeben.
                        Kannst du mir sagen warum? Eigentlich deuten die doch nur auf schlecht benannte Felder, also Datenbank-Fehldesign hin. Oder haben die Dinger sonst noch Vorteile?
                        sorry, shift-taste kaputt

                        Kommentar


                        • #13
                          Der Parser weiss dann sofort dass es sich um einen Bezeichner handelt.
                          Wer fit ist in Mysql kann die auch weglassen, sofern man keine reservierten Schlüsselworte oder Bezeichner mit Leerstellen oder Umlaute und andere Unicodezeichen verwendet.
                          Einem Anfänger würde ich aber immer die Verwendung von Backticks empfehlen, sonst kann man schon mal Stunden mit der Fehlersuche verschwenden.
                          https://dev.mysql.com/doc/refman/8.0...entifiers.html

                          Kommentar


                          • #14
                            Zitat von Meister1900 Beitrag anzeigen
                            Kannst du mir sagen warum? Eigentlich deuten die doch nur auf schlecht benannte Felder, also Datenbank-Fehldesign hin. Oder haben die Dinger sonst noch Vorteile?
                            Naja, die Keywords von Datenbanksystem unterscheiden sich. Auch von Version zu Version. Was in Version X noch erlaubt war, könnte in Version Y ein Keyword sein oder umgekehrt. Wenn man also wirklich stabilen Code schreiben will, sollte nicht auf Backticks verzichtet werden.

                            Außerdem hat kaum ein Entwickler alle möglichen Keywords im Gedächtnis. Es ist also einfacher immer Backticks zu verwenden, als bei jedem Wort überlegen oder nachschauen zu müssen, ob es nicht ein Keyword sein könnte.

                            Noch besser ist es natürlich, wenn man den generierten SQL-Code abstrahiert. Zum Beispiel wie bei Doctrine DBAL, und man nur in Ausnahmefällen manuell SQL-Code schreibt.

                            Kommentar

                            Lädt...
                            X