1. Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!
    Information ausblenden

Abfragen in DIV BOX

Dieses Thema im Forum "Datenbanken - z.B. MySQL" wurde erstellt von BDC, 9 Januar 2017.

  1. BDC

    BDC Neues Mitglied

    Registriert seit:
    9 Januar 2017
    Beiträge:
    15
    Punkte für Erfolge:
    1
    Hallo,

    ich beschäftige mich ganz frisch mit dem Thema.
    Mein Ziel ist es, eine Informationsplattform für Angebote etc. zu erstellen.
    Ich habe das Layout auch soweit fertig und die Datenbank steht ebenfalls.

    Nun habe ich eine Div-Box "content"
    In dieser möchte ich vorab den ganzen Inhalt der Tabelle Angebote darstellen lassen.

    Irgendwie fehlt mir die Idee wie ich es am besten realisiere und bei Google konnte ich nicht wirklich was gescheites finden.
     
    Werbung:

    Jetzt registrieren, damit diese Werbung verschwindet
  2. threadi

    threadi Moderator Team Moderator

    Registriert seit:
    20 Oktober 2006
    Beiträge:
    15.016
    Punkte für Erfolge:
    83
  3. BDC

    BDC Neues Mitglied

    Registriert seit:
    9 Januar 2017
    Beiträge:
    15
    Punkte für Erfolge:
    1
    Hallo,

    vielen Dank für deine Antwort.
    Die Daten sind in einer MySql Datenbank hinterlegt. ( Testdaten )
    Ich habe bereits eine Abfrage mit vorherigem SQL Connect geschrieben, die auch separat funktioniert.
    Sprich, die direkte Eingabe der Datei-Url führt zum Erfolg.

    Was ich nicht hin bekomme und versteh ist, wie ich diese Abfrage innerhalb einer Div-Box ausführe.
    Hier mal der Code der Abfrage:

    PHP:
    1. <?php
    2.  
    3. // Verbindung zum Datenbankserver
    4. mysql_connect("localhost", "root" , "") or die (mysql_error ());
    5.  
    6. // Datenbank auswählen
    7.  
    8. // mySQL-Abfrage:
    9. $abfrage = "SELECT * FROM angebote";
    10. $ergebnis = mysql_query($abfrage);
    11.  
    12. // Anzahl der Datensätze und Anzahl der Datenfelder bestimmen:
    13. $anzahl_datensaetze = mysql_num_rows($ergebnis);
    14. $anzahl_felder = mysql_num_fields($ergebnis);
    15.  
    16.  
    17. // Tabelle beginnen
    18. echo "<table border = '1'>";
    19.  
    20. // Erste Zeile
    21. echo "<tr>";
    22.  
    23. // Schleife 1: Für jedes Feld wird eine th-Zelle erzeugt und der Name eingesetzt:
    24. for ($n = 0; $n < $anzahl_felder; $n++) {
    25.     $feldname =  mysql_field_name($ergebnis, $n);
    26.     echo "<th>" . $feldname . "</th>\n";
    27.     }
    28. echo "</tr>";
    29.  
    30. // Schleife 2: Für jeden Datensatz wird ein foreach durchgeführt:
    31. while ($datensatz = mysql_fetch_assoc($ergebnis)) {
    32.     echo "<tr>";
    33.     // Schleife 2-1: Für jeden Wert des Arrays wird eine Zelle erzeugt und der Wert des Arrays ausgegeben:
    34.     foreach ($datensatz as $key => $value) {
    35.         echo "<td>" . $value . "</td>\n";
    36.         }
    37.     echo "</tr>\n";
    38.     }
    39. echo "</table>";
    40.  
    41.  
    42. ?>
    Nun gibt es eine weitere Seite " Angebote " die eine Div-Box content enthält.
    Hier soll dann letztlich die Abfrage angezeigt werden.

    HTML:
    1. <!doctype html>
    2. <html lang="de">
    3.   <head>
    4.     <meta charset="utf-8">
    5.     <link rel="stylesheet" type="text/css" href="css/style.css">
    6.         <title>NuBIs</title>
    7.   </head>
    8.   <body>
    9.      <div id="logostart">
    10.      <a href="start.html">
    11.      <img src="img/nubis.png" alt="logo" width="1000" height="100"> </a>
    12.      </div>
    13.           <div id ="navicontent">
    14.          <a href="angebote.html">
    15.          <img src="img/angebote.png" alt"Angebote" width="200" height="50"/> </a>
    16.          <a href="auftraege.html">
    17.          <img src="img/auftraege.png" alt"Auftäge" width="200" height="50"><href="angebote.html"/> </a>
    18.          <a href="wartungen.html">
    19.          <img src="img/wartung.png" alt"Wartungen" width="200" height="50" href="angebote.html"/> </a>
    20.          <a href="lieferanten.html">
    21.          <img src="img/lieferanten.png" alt"Lieferanten" width="200" height="50" href="angebote.html"/> </a>
    22.          <a href="reklamationen.html">
    23.          <img src="img/rekla.png" alt"Reklamationen" width="200" height="50" href="angebote.html"/> </a>
    24.      </div>
    25.             <div id="content">
    26.             <div>
    27.    
    28.  
    29. </div>
    30.  
    31. </div>
    32.  
    33.      </body>
    34. </html>

    Zu meinem Vorhaben:
    Auf der Seite Angebote soll erstmal alle Daten der Datenbank angezeigt werden.
    Man soll dann auf der Seite ( innerhalb der Datenbank ) suchen können, wobei die Ausgabe dann wieder im Content angezeigt wird. Zu dem sollen auch neue Einträge in die Datenbank generiert werden.
    Auch das Bearbeiten und Löschen der Einträge soll möglich sein.

    Wie bereits gesagt bin ich ganz frisch in diesem Thema und probiere diverse Ansätze. Die Daten sind im Moment fingiert und dienen nur den Feldversuchen.
     
  4. bdt600

    bdt600 Senior HTML'ler

    Registriert seit:
    30 Mai 2012
    Beiträge:
    3.749
    Punkte für Erfolge:
    83
    Die mysql-Erweiterung von PHP ist noch oft im Internet zu sehen, jedoch wird in der offiziellen Dokumentation klar empfohlen, auf die Erweiterungen mysqli oder PDO umzusteigen. Die mysql_*-Funktionen sind veraltet und sollten nicht mehr benutzt werden.

    Seit PHP 5.3 gehört die veraltete mysql-Erweiterung nicht mehr zur Standard-Installation.
    Seit PHP 5.5 ist die mysql-Erweiterung offiziell als deprecated (= missbilligt) gekennzeichnet.
    Seit PHP 7 wurde die Erweiterung entfernt.

    Der aktive Support für den 5er Zweig von PHP endet am 01.01.2017. Von der Verwendung der alten mysql_*-Funktionen ist daher dringend abzuraten.



    Beim Einsatz von SQL-Datenbanken sollte das Abrufen aller Spalten eines Datensatzes per SELECT * vermieden werden. Stattdessen sollten die gewünschten Spaltennamen explizit aufgelistet werden (SELECT col1, col2 FROM …). Einige Vorteile:
    • Häufig werden in einer Abfrage nicht alle Spalten benötigt, die aktuell existieren oder in Zukunft existieren könnten, sodass unnötige Daten übertragen werden.
    • Eine Auflistung der Spaltennamen macht den Code verständlicher, da die Tabellenstruktur nicht erst im Datenbankschema nachgelesen werden muss.
    • Bei Änderungen am Datenbankschema (etwa bei Entfernung oder Umbenennung einer Spalte) schlägt eine Query, die kein SELECT * nutzt, sofort fehl. Probleme können so schneller identifiziert werden.


    Zu deinen Fragen: dir bleibt nichts anderes übrig, als einige Tutorials durchzuarbeiten, denn dir hier alles zu erkären übersteigt den Aufwand in einem Forum. Wenn du konkrete Fragen hast, gerne, aber im Moment ist das zu allgemein, da dir die erforderlichen Grundlagen fehlen.
     
  5. BDC

    BDC Neues Mitglied

    Registriert seit:
    9 Januar 2017
    Beiträge:
    15
    Punkte für Erfolge:
    1
    Hallo,

    ich bin mir darüber durchaus bewusst aber ich versuche durch viel probieren auch auf die Probleme zu stossen.
    Mir geht es vorrangig darum zu verstehen warum ich diese Abfrage ( welche eigenständig im Browser funktioniert ) nicht in der Div Box funktioniert.

    Ich hänge nochmal den Code innerhalb der Box an:
    PHP:
    1.             <div id="content">
    2.          
    3. <?php
    4. require_once ('konfiguration.php');
    5. $db_link = mysqli_connect (
    6.                      MYSQL_HOST,
    7.                      MYSQL_BENUTZER,
    8.                      MYSQL_KENNWORT,
    9.                      MYSQL_DATENBANK
    10.                     );
    11.                  
    12. mysqli_set_charset($db_link, 'utf8');
    13.  
    14. $sql = "SELECT * FROM angebote";
    15.  
    16. $db_erg = mysqli_query( $db_link, $sql );
    17. if ( ! $db_erg )
    18. {
    19.   die('Ungültige Abfrage: ' . mysqli_error());
    20. }
    21.  
    22. echo '<table border="1">';
    23. while ($zeile = mysqli_fetch_array( $db_erg, MYSQL_ASSOC))
    24. {
    25.   echo "<tr>";
    26.   echo "<td>". $zeile['ID'] . "</td>";
    27.   echo "<td>". $zeile['Nummer'] . "</td>";
    28.   echo "<td>". $zeile['Datum_Anfrage'] . "</td>";
    29.   echo "<td>". $zeile['Bearbeiter'] . "</td>";
    30.   echo "<td>". $zeile['Postleitzahl'] . "</td>";
    31.   echo "<td>". $zeile['Bauunternehmen_Bauherr'] . "</td>";
    32.   echo "<td>". $zeile['Bauvorhaben'] . "</td>";
    33.   echo "<td>". $zeile['Gewerk'] . "</td>";
    34.   echo "<td>". $zeile['Abgabetermin'] . "</td>";
    35.   echo "<td>". $zeile['Summe'] . "</td>";
    36.   echo "<td>". $zeile['Art'] . "</td>";
    37.   echo "<td>". $zeile['Abgegeben'] . "</td>";
    38.   echo "<td>". $zeile['Beauftragt'] . "</td>";
    39.   echo "</tr>";
    40. }
    41. echo "</table>";
    42.  
    43. mysqli_free_result( $db_erg );
    44. ?>
    45.              
    46.          
    47.  
    48.             </div>
    49.  
    50.      </body>
    51. </html>

    Die Ausgabe sieht für mich so aus, als würde er das Echo der einzelnen Zeilen nicht beenden.
     
  6. bdt600

    bdt600 Senior HTML'ler

    Registriert seit:
    30 Mai 2012
    Beiträge:
    3.749
    Punkte für Erfolge:
    83
    "Funktioniert nicht" ist eine denkbar schlechte Problembeschreibung. Was passiert genau? Fehlermeldung?

    Und noch ein Tipp zur Lesbarkeit von Quellcodes: Auch wenn es mehr Arbeit ist, aber versuche den Quellcode so übersichtlich wie möglich zu gestalten, ein Beispiel:
    PHP:
    1.  
    2. while ($zeile = mysqli_fetch_array( $db_erg, MYSQL_ASSOC))
    3. {
    4.   echo "<tr>
    5.          <td>" . $zeile['ID']                     . "</td>
    6.          <td>" . $zeile['Nummer']                 . "</td>
    7.          <td>" . $zeile['Datum_Anfrage']          . "</td>
    8.          <td>" . $zeile['Bearbeiter']             . "</td>
    9.          <td>" . $zeile['Postleitzahl']           . "</td>
    10.          <td>" . $zeile['Bauunternehmen_Bauherr'] . "</td>
    11.          <td>" . $zeile['Bauvorhaben']            . "</td>
    12.          <td>" . $zeile['Gewerk']                 . "</td>
    13.          <td>" . $zeile['Abgabetermin']           . "</td>
    14.          <td>" . $zeile['Summe']                  . "</td>
    15.          <td>" . $zeile['Art']                    . "</td>
    16.          <td>" . $zeile['Abgegeben']              . "</td>
    17.          <td>" . $zeile['Beauftragt']             . "</td>
    18.       </tr>";
    19. }
     
  7. BDC

    BDC Neues Mitglied

    Registriert seit:
    9 Januar 2017
    Beiträge:
    15
    Punkte für Erfolge:
    1
    Bei ausführen der Seite erhalte ich in der DIVBox folgendes:
     
  8. scbawik

    scbawik Senior HTML'ler

    Registriert seit:
    14 Juli 2011
    Beiträge:
    2.064
    Punkte für Erfolge:
    83
    Das ganze läuft offensichtlich nicht durch einen PHP Interpreter.

    http://www.schattenbaum.net/php/anfang.php
     
  9. BDC

    BDC Neues Mitglied

    Registriert seit:
    9 Januar 2017
    Beiträge:
    15
    Punkte für Erfolge:
    1
    Hallo,

    soweit konnte ich den Kram auflösen und bin ein gutes Stück weiter.
    Jetzt habe ich ein Problem bei der Abfrage.
    Ich bekomme bei der Abfrage nur eine Zeile angezeigt, Ziel ist es aber, den gesamten Inhalt der Tabelle darzustellen.
    Sind im Moment nur 2 Einträge.

    Hier mal der Code dazu:
    Code (text):
    1. <?php require ("header.php"); ?>          
    2.             <div id="content">  
    3.                            
    4.                 <table class="beispiel" cellspacing="0" cellpadding="0">
    5.                    
    6.                     <?php
    7.                     $pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');
    8.  
    9.                     $sql = "SELECT * FROM angebote ORDER BY ID LIMIT 30";
    10.                     foreach ($pdo->query($sql) as $row) {
    11.                     }
    12.                     ?>                  
    13.  
    14.                     <caption>Angebote</caption>
    15.  
    16.                     <thead><tr>
    17.                     <th>ID</th>
    18.                     <th>Nummer</th>
    19.                     <th>Datum der Anfrage</th>
    20.                     <th>Bearbeiter</th>
    21.                     <th>Postleitzahl</th>
    22.                     <th>Bauunternehmen/Bauherr</th>
    23.                     <th>Bauvorhaben</th>
    24.                     <th>Gewerk</th>
    25.                     <th>Abgabetermin</th>
    26.                     <th>Summe</th>
    27.                     <th>Art</th>
    28.                     <th>Abgegeben</th>
    29.                     <th>Beauftragt</th>
    30.                     </tr></thead>
    31.  
    32.                     <tbody>
    33.                     <tr>
    34.                     <td><?php echo $row['ID'] ?></td>
    35.                     <td><?php echo $row['Nummer'] ?></td>
    36.                     <td><?php echo $row['Datum_Anfrage'] ?></td>
    37.                     <td><?php echo $row['Bearbeiter'] ?></td>
    38.                     <td><?php echo $row['Postleitzahl'] ?></td>
    39.                     <td><?php echo $row['Bauunternehmen_Bauherr'] ?></td>
    40.                     <td><?php echo $row['Bauvorhaben'] ?></td>
    41.                     <td><?php echo $row['Gewerk'] ?></td>
    42.                     <td><?php echo $row['Abgabetermin'] ?></td>
    43.                     <td><?php echo $row['Summe'] ?></td>
    44.                     <td><?php echo $row['Art'] ?></td>
    45.                     <td><?php echo $row['Abgegeben'] ?></td>
    46.                     <td><?php echo $row['Beauftragt'] ?></td>
    47.                     </tr>
    48.  
    49.                  </tbody>
    50.  
    51.                 </table>
    52.             </div>
    53.  
    54.      </body>
    55. </html>    
     
  10. threadi

    threadi Moderator Team Moderator

    Registriert seit:
    20 Oktober 2006
    Beiträge:
    15.016
    Punkte für Erfolge:
    83
    Du schließt ja auch die foreach-Schleife vor der Ausgabe. Du musst die Schleife um die Ausgabe herum legen.
     
  11. BDC

    BDC Neues Mitglied

    Registriert seit:
    9 Januar 2017
    Beiträge:
    15
    Punkte für Erfolge:
    1
    Hallo,
    okay das kann ich nachvollziehen.
    Nur wo soll dann die schließende Klammer hin. Ich starte und beende PHP ja immer wieder....
     
  12. threadi

    threadi Moderator Team Moderator

    Registriert seit:
    20 Oktober 2006
    Beiträge:
    15.016
    Punkte für Erfolge:
    83
    Natürlich hinter das beendende </tr>. Ich vermute Du denkst PHP wird innerhalb von <?php und ?> immer separat ausgeführt - das ist nicht so. Der PHP-Parser verwendet die gesamte Datei. Dadurch steht eine Variable die Du weit oben setzt auch ganz unten noch zur Verfügung, egal wie viele <?php und ?> Du dazwischen hast.
     
  13. BDC

    BDC Neues Mitglied

    Registriert seit:
    9 Januar 2017
    Beiträge:
    15
    Punkte für Erfolge:
    1
    Du liegst richtig, davon bin ich in der Tat ausgegangen.
    Vielen Dank für die Erklärung. DIn Erkenntniss wird mich dann wohl auf meinem weiteren PHP Weg begleiten.

    Nochmal vielen Dank.