Ankündigung

Einklappen
Keine Ankündigung bisher.

MySQL Tabelle mit PHP ausgeben

Einklappen

Neue Werbung 2019

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

  • MySQL Tabelle mit PHP ausgeben

    Hallo zusammen,

    ich möchte mit folgendem PHP Code Daten aus meiner MySQL Tabelle ausgeben:

    PHP-Code:
    <?php
    require_once ('inc/config.inc.php');
    $db_link mysqli_connect (
                         
    MYSQL_HOST
                         
    MYSQL_BENUTZER
                         
    MYSQL_KENNWORT
                         
    MYSQL_DATENBANK
                        
    );

    $sql "SELECT * FROM users";

    $db_erg mysqli_query$db_link$sql );
    if ( ! 
    $db_erg )
    {
      die(
    'Ungültige Abfrage: ' mysqli_error());
    }

    echo 
    '<table border="1">';
    while (
    $zeile mysqli_fetch_array$db_ergMYSQLI_ASSOC))
    {
      echo 
    "<tr>";
      echo 
    "<td>"$zeile['id'] . "</td>";
      echo 
    "<td>"$zeile['vorname'] . "</td>";
      echo 
    "<td>"$zeile['nachname'] . "</td>";
      echo 
    "<td>"$zeile['email'] . "</td>";
      echo 
    "<td>"$zeile['level'] . "</td>";
      echo 
    "<td>"$zeile['funktion'] . "</td>";
      echo 
    "<td>"$zeile['team'] . "</td>";
      echo 
    "</tr>";
    }
    echo 
    "</table>";

    mysqli_free_result$db_erg );
    ?>
    Meine config.php sieht folgendermaßen aus:

    PHP-Code:
    <?php

    $db_host 
    'xxx';
    $db_user 'xxx';
    $db_password 'xxx';
    $db_name 'xxx';
    $pdo = new PDO("mysql:host=$db_host;dbname=$db_name;charset=utf8"$db_user$db_password, [
        
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
    ]);
    kein Ergebnis leider. Was mache ich falsch?

  • #2
    Warum vermischst du PDO und mysqli?

    Kommentar


    • #3
      Habe es auch gerade gesehen, mein Fehler.

      Habe es nun korrigiert:

      PHP-Code:
      <?php
      $pdo 
      = new PDO('mysql:host=xxx;dbname=xxx''xxx''xxx');

      $sql "SELECT email, vorname, nachname FROM users";
      foreach (
      $pdo->query($sql) as $row) {
      echo 
      $row['vorname']." ".$row['nachname']."<br />";
      echo 
      "E-Mail: ".$row['email']."<br /><br />";
      }
      ?>
      So sollte es passen. Danke für den Hinweis.

      Kommentar


      • #4
        Du beachtest übrigens nicht den Kontextwechsel nach HTML. Werte, die in HTML-Code eingefügt werden, sollten mit htmlspecialchars() behandelt werden:
        PHP-Code:
        <td><?= htmlspecialchars($row['firstname'], ENT_COMPAT'UTF-8'?></td>
        <td><?= htmlspecialchars($row['lastname'], ENT_COMPAT'UTF-8'?></td>
        <td><?= htmlspecialchars($row['email'], ENT_COMPAT'UTF-8'?></td>
        "echo" kann man sich übrigens komplett sparen, wenn man den short echo tag <?= verwendet. Das macht auch den Code übersichtlicher.

        Kommentar


        • #5
          Habe scheinbar wieder etwas falsch..?

          PHP-Code:
          <?php
          $pdo 
          = new PDO('mysql:host=xxx;dbname=xxx;charset=utf8''xxx''xxx');

          $sql "SELECT * FROM users";
          foreach (
          $pdo->query($sql) as $row) {

          <
          td><?= htmlspecialchars($row['vorname'], ENT_COMPAT'UTF-8'?></td>
          }

          ?>

          Kommentar


          • #6
            <td> ist kein PHP-Code. Du musst davor schon ein schließendes PHP-Tag (?>) haben.

            Und Datenbankabfragen haben inmitten der HTML-Ausgabe nichts verloren. Sowas gehört vor der HTML-Ausgabe.

            Ich würde dir außerdem empfehlen kein SELECT * zu verwenden, da sonst im Code nicht klar ersichtlich ist, welche Spalten verwendet werden. Außerdem hat das noch zahlreiche andere Nachteile.

            Kommentar


            • #7
              Ich habe meine Datenbankverbindung am Anfang der Seite eingebunden mit..

              PHP-Code:
              <?php
              session_start
              ();
              require_once(
              "inc/config.inc.php");
              Jetzt möchte ich allerdings die Tabelle 'users' ausgeben. Wie mache ich das am besten, ohne dass Fehler auftreten..?

              Kommentar


              • #8
                Code:
                CREATE TABLE users (
                  id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
                  firstname varchar(255) NOT NULL,
                  lastname varchar(255) NOT NULL,
                  email varchar(255) NOT NULL
                ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
                
                INSERT INTO users (id, firstname, lastname, email) VALUES
                (1, 'Erika', 'Musterfrau', 'erika.musterfrau@example.org'),
                (2, 'Max', 'Mustermann', 'max.mustermann@example.org');
                PHP-Code:
                <?php

                $db 
                = new PDO('mysql:host=localhost;dbname=test;charset=utf8mb4''root''', [
                    
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
                ]);

                $sql "
                    SELECT firstname, lastname, email
                    FROM users
                    ORDER BY lastname, firstname
                "
                ;

                $users $db->query($sql)->fetchAll(PDO::FETCH_ASSOC);

                header('Content-Type: text/html; charset=utf-8');

                ?><!DOCTYPE html>
                <html>
                    <head>
                        <title>Users</title>
                        <style>
                            body {
                                font-family: Arial, Helvetica, sans-serif;
                            }
                            table {
                                border-collapse: collapse;
                                border: 2px solid black;
                            }
                            th {
                                text-align: left;
                                background: dimgrey;
                                color: white;
                            }
                            th, td {
                                padding: 1ex;
                            }
                        </style>
                    </head>
                    <body>
                        <table>
                            <thead>
                                <tr>
                                    <th>Firstname</th>
                                    <th>Lastname</th>
                                    <th>Email</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php foreach ($users as $user): ?>
                                <tr>
                                    <td><?= htmlspecialchars($user['firstname'], ENT_COMPAT'UTF-8'?></td>
                                    <td><?= htmlspecialchars($user['lastname'], ENT_COMPAT'UTF-8'?></td>
                                    <td><?= htmlspecialchars($user['email'], ENT_COMPAT'UTF-8'?></td>
                                </tr>
                                <?php endforeach; ?>
                            </tbody>
                        </table>
                    </body>
                </html>

                Kommentar


                • #9
                  Vielen Dank. Jetzt ist die Schriftart auf meiner Webseite anders als davor. Wie muss ich den Code anpassen, damit es keine Auswirkungen auf den Style und die Schriften meiner Seite hat?

                  Kommentar


                  • #10
                    Zitat von AlPaGae Beitrag anzeigen
                    Vielen Dank. Jetzt ist die Schriftart auf meiner Webseite anders als davor. Wie muss ich den Code anpassen, damit es keine Auswirkungen auf den Style und die Schriften meiner Seite hat?
                    Naja, keinen Code 1:1 kopieren? Beispielcode ist dazu da um ein Beispiel zu zeigen und nicht um es 1:1 zu kopieren. Programmieren musst du schon selber.

                    Kommentar


                    • #11
                      Klar, normalerweise passe ich die Codes entsprechend an. Habe diesen nun ausnahmsweise mal so übernommen.. nur eben der <style> Part sorgt für eine andere Schriftart auf meiner Webseite.. aber dafür gibt es sicher eine Lösung. Werde mal etwas versuchen..

                      Kommentar


                      • #12
                        Wer zwingt dich die Styles zu übernehmen?

                        Kommentar


                        • #13
                          Ja wohl. Hast Du natürlich Recht. Ich werde es personalisieren.

                          Kommentar

                          Lädt...
                          X