• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Abfragen in DIV BOX

BDC

Neues Mitglied
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:
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:
<?php

// Verbindung zum Datenbankserver
mysql_connect("localhost", "root" , "") or die (mysql_error ());

// Datenbank auswählen
mysql_select_db("test") or die (mysql_error ());

// mySQL-Abfrage:
$abfrage = "SELECT * FROM angebote";
$ergebnis = mysql_query($abfrage);
 
// Anzahl der Datensätze und Anzahl der Datenfelder bestimmen:
$anzahl_datensaetze = mysql_num_rows($ergebnis);
$anzahl_felder = mysql_num_fields($ergebnis);

 
// Tabelle beginnen
echo "<table border = '1'>";

// Erste Zeile
echo "<tr>";
 
// Schleife 1: Für jedes Feld wird eine th-Zelle erzeugt und der Name eingesetzt:
for ($n = 0; $n < $anzahl_felder; $n++) {
    $feldname =  mysql_field_name($ergebnis, $n);
    echo "<th>" . $feldname . "</th>\n";
    }
echo "</tr>";
 
// Schleife 2: Für jeden Datensatz wird ein foreach durchgeführt:
while ($datensatz = mysql_fetch_assoc($ergebnis)) {
    echo "<tr>";
    // Schleife 2-1: Für jeden Wert des Arrays wird eine Zelle erzeugt und der Wert des Arrays ausgegeben:
    foreach ($datensatz as $key => $value) {
        echo "<td>" . $value . "</td>\n";
        }
    echo "</tr>\n";
    }
echo "</table>";
 

?>

Nun gibt es eine weitere Seite " Angebote " die eine Div-Box content enthält.
Hier soll dann letztlich die Abfrage angezeigt werden.

HTML:
<!doctype html>
<html lang="de">
  <head>
    <meta charset="utf-8">
    <link rel="stylesheet" type="text/css" href="css/style.css">
        <title>NuBIs</title>
  </head>
  <body>
     <div id="logostart">
     <a href="start.html">
     <img src="img/nubis.png" alt="logo" width="1000" height="100"> </a>
     </div>
          <div id ="navicontent">
         <a href="angebote.html">
         <img src="img/angebote.png" alt"Angebote" width="200" height="50"/> </a>
         <a href="auftraege.html">
         <img src="img/auftraege.png" alt"Auftäge" width="200" height="50"><href="angebote.html"/> </a>
         <a href="wartungen.html">
         <img src="img/wartung.png" alt"Wartungen" width="200" height="50" href="angebote.html"/> </a>
         <a href="lieferanten.html">
         <img src="img/lieferanten.png" alt"Lieferanten" width="200" height="50" href="angebote.html"/> </a>
         <a href="reklamationen.html">
         <img src="img/rekla.png" alt"Reklamationen" width="200" height="50" href="angebote.html"/> </a>
     </div>
            <div id="content">
            <div>
    

</div>

</div>

     </body>
</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.
 
Werbung:
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.
 
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:
            <div id="content">
          
<?php
require_once ('konfiguration.php');
$db_link = mysqli_connect (
                     MYSQL_HOST,
                     MYSQL_BENUTZER,
                     MYSQL_KENNWORT,
                     MYSQL_DATENBANK
                    );
                  
mysqli_set_charset($db_link, 'utf8');

$sql = "SELECT * FROM angebote";
 
$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_erg, MYSQL_ASSOC))
{
  echo "<tr>";
  echo "<td>". $zeile['ID'] . "</td>";
  echo "<td>". $zeile['Nummer'] . "</td>";
  echo "<td>". $zeile['Datum_Anfrage'] . "</td>";
  echo "<td>". $zeile['Bearbeiter'] . "</td>";
  echo "<td>". $zeile['Postleitzahl'] . "</td>";
  echo "<td>". $zeile['Bauunternehmen_Bauherr'] . "</td>";
  echo "<td>". $zeile['Bauvorhaben'] . "</td>";
  echo "<td>". $zeile['Gewerk'] . "</td>";
  echo "<td>". $zeile['Abgabetermin'] . "</td>";
  echo "<td>". $zeile['Summe'] . "</td>";
  echo "<td>". $zeile['Art'] . "</td>";
  echo "<td>". $zeile['Abgegeben'] . "</td>";
  echo "<td>". $zeile['Beauftragt'] . "</td>";
  echo "</tr>";
}
echo "</table>";
 
mysqli_free_result( $db_erg );
?>
              
          

            </div>

     </body>
</html>


Die Ausgabe sieht für mich so aus, als würde er das Echo der einzelnen Zeilen nicht beenden.
 
"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:
while ($zeile = mysqli_fetch_array( $db_erg, MYSQL_ASSOC))
{
  echo "<tr>
          <td>" . $zeile['ID']                     . "</td>
          <td>" . $zeile['Nummer']                 . "</td>
          <td>" . $zeile['Datum_Anfrage']          . "</td>
          <td>" . $zeile['Bearbeiter']             . "</td>
          <td>" . $zeile['Postleitzahl']           . "</td>
          <td>" . $zeile['Bauunternehmen_Bauherr'] . "</td>
          <td>" . $zeile['Bauvorhaben']            . "</td>
          <td>" . $zeile['Gewerk']                 . "</td>
          <td>" . $zeile['Abgabetermin']           . "</td>
          <td>" . $zeile['Summe']                  . "</td>
          <td>" . $zeile['Art']                    . "</td>
          <td>" . $zeile['Abgegeben']              . "</td>
          <td>" . $zeile['Beauftragt']             . "</td>
       </tr>";
}
 
Werbung:
Bei ausführen der Seite erhalte ich in der DIVBox folgendes:
'; while ($zeile = mysqli_fetch_array( $db_erg, MYSQL_ASSOC)) { echo ""; echo "". $zeile['ID'] . ""; echo "". $zeile['Nummer'] . ""; echo "". $zeile['Datum_Anfrage'] . ""; echo "". $zeile['Bearbeiter'] . ""; echo "". $zeile['Postleitzahl'] . ""; echo "". $zeile['Bauunternehmen_Bauherr'] . ""; echo "". $zeile['Bauvorhaben'] . ""; echo "". $zeile['Gewerk'] . ""; echo "". $zeile['Abgabetermin'] . ""; echo "". $zeile['Summe'] . ""; echo "". $zeile['Art'] . ""; echo "". $zeile['Abgegeben'] . ""; echo "". $zeile['Beauftragt'] . ""; echo ""; } echo ""; mysqli_free_result( $db_erg ); ?>
 
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:
<?php require ("header.php"); ?>           
            <div id="content">   
                            
                <table class="beispiel" cellspacing="0" cellpadding="0">
                    
                    <?php
                    $pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '');

                    $sql = "SELECT * FROM angebote ORDER BY ID LIMIT 30";
                    foreach ($pdo->query($sql) as $row) {
                    }
                    ?>                   

                    <caption>Angebote</caption>

                    <thead><tr>
                    <th>ID</th>
                    <th>Nummer</th>
                    <th>Datum der Anfrage</th>
                    <th>Bearbeiter</th>
                    <th>Postleitzahl</th>
                    <th>Bauunternehmen/Bauherr</th>
                    <th>Bauvorhaben</th>
                    <th>Gewerk</th>
                    <th>Abgabetermin</th>
                    <th>Summe</th>
                    <th>Art</th>
                    <th>Abgegeben</th>
                    <th>Beauftragt</th>
                    </tr></thead>

                    <tbody>
                    <tr>
                    <td><?php echo $row['ID'] ?></td>
                    <td><?php echo $row['Nummer'] ?></td>
                    <td><?php echo $row['Datum_Anfrage'] ?></td>
                    <td><?php echo $row['Bearbeiter'] ?></td>
                    <td><?php echo $row['Postleitzahl'] ?></td>
                    <td><?php echo $row['Bauunternehmen_Bauherr'] ?></td>
                    <td><?php echo $row['Bauvorhaben'] ?></td>
                    <td><?php echo $row['Gewerk'] ?></td>
                    <td><?php echo $row['Abgabetermin'] ?></td>
                    <td><?php echo $row['Summe'] ?></td>
                    <td><?php echo $row['Art'] ?></td>
                    <td><?php echo $row['Abgegeben'] ?></td>
                    <td><?php echo $row['Beauftragt'] ?></td>
                    </tr>

                 </tbody>

                </table>
            </div>

     </body>
</html>
 
Werbung:
Du schließt ja auch die foreach-Schleife vor der Ausgabe. Du musst die Schleife um die Ausgabe herum legen.
 
Hallo,
okay das kann ich nachvollziehen.
Nur wo soll dann die schließende Klammer hin. Ich starte und beende PHP ja immer wieder....
 
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.
 
Werbung:
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.
 
Hallo,

ich habe ein Problem.
Ich würde gerne einen Wert aus einer anderen Tabelle abrufen. Jedoch bekomme ich folgende Fehlermeldung:
Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\angebote.php on line 52

PHP:
<?php
                            $pdo = new PDO('mysql:host=localhost;dbname=nubis', 'root', '');

                            $sql = "SELECT * FROM angebote WHERE `status` = 0 ORDER BY ID
                            LEFT JOIN bauherr ON id = name";
                            foreach ($pdo->query($sql) as $row) {
                            ?>
                        <tr>
                                    
                                    <td align="center"><?php echo $row['jahr'] ?></td>
                                    <td align="center"><?php echo $row['lfdnr'] ?></td>
                                    <td align="center"><?php echo $row['postleitzahl'] ?></td>
                                    <td align="center"><?php echo $row['ort'] ?></td>
                                    <td align="center"><?php echo $row['strasse'] ?></td>
                                    <td align="center"><?php echo $row['bauvorhaben'] ?></td>
                                    <td align="center"><?php echo $row['name'] ?></td>
                                    <td align="center"><?php echo $row['abgabetermin'] ?></td>
                                    <td align="center"><?php echo $row['gu'] ?></td>
                                    <td align="center"><?php echo $row['summe'] ?></td>
                                    <td align="center"><?php echo $row['bearbeiter'] ?></td>
                                    <td align="center"><?php echo $row['erstelltvon'] ?></td>
                                    <td align="center"><?php echo $row['erstelltam'] ?></td>
 
Werbung:
Zurück
Oben