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

Daten aus der Datenbank in einer Tabelle bekommen

larose

Mitglied
Hallo alle,

Ich hätte gerne 2 Fragen.
immer wenn ich etwas aus der Datenbank hole, muss ich ein fetch_object() benutzen. Ich verstehe nicht warum. habe versucht die Daten direkt zu holen und zu benutzen aber es geht nicht. So sieht es immer wenn ich etwas aus der DB holen will:


PHP:
function Arbeiter()
{
    $conn = db_connect();

    $valid_user = $_SESSION['valid_user'];
        $sql = "select name
                            from mitarbeiter
                            where username =  '$valid_user'";

    $result = $conn->query($sql);
    $obj = $result->fetch_object();
  
    $nachname = $obj->name;
  
    echo " Na du <B>$name </B>";
}

Könnte es sein weil ich die Bibliothek MSQLi benutze?
So sieht meine Datenban_Verbindung aus:

PHP:
function db_connect()
{
    $result = new mysqli('localhost', 'arbeiter', 'larose', 'psswt');
    if (!$result)
        return FALSE;
    $result->autocommit(TRUE);
    return $result;
}

Die zweite Frage.
In meiner Datenbank habe eine Tabelle mit 3 Spalten. Eine Spalte "Books", eine Spalte "ISBN" und eine Spalte "Catid"(für Kategorie).
Mein Ziel ist es, ein PHP-Code zu schreiben, der ermöglichen sollte, dass der User alle Bücher aus einer bestimmten "Catid" bekommt.
Code in sich ist ja schon einfach.

Ich weiss jedoch nicht wie ich diese Code schreiben kann damit das Ergebnis in einer Tabelle erscheinen kann, genau so wie die in der Datenbank ist, und jede Daten auf der richtigen Spalte.
Kann einer mir bitte mal helfen?
Ich bedanke mich um jede Hilfe
 
Werbung:
immer wenn ich etwas aus der Datenbank hole, muss ich ein fetch_object() benutzen. Ich verstehe nicht warum.
Warum musst du deinen Computer einschalten, um damit zu arbeiten? Ist halt so.
Ich weiss jedoch nicht wie ich diese Code schreiben kann damit das Ergebnis in einer Tabelle erscheinen kann, genau so wie die in der Datenbank ist, und jede Daten auf der richtigen Spalte.
Dir ist aber klar, dass das Grundlagen sind?
Eine Schleife bauen, in der du jeden Datensatz in ein tr mit entsprechend vielen td packst. Wo ist jetzt das Problem?
 
Danke dir @bdt600
Ja mir ist klar dass Grundlagen sind, deswegen bin ich hier. Ich lerne es gerade und Ich versuche das zu verstehen.

Das Problem ist, wenn ich nicht weiss wie viele Datensätze ich in meiner Datenbank habe, wie viele td werde ich dann benötigen?
 
Werbung:
Die Anzahl der Spalten sollte doch klar sein und die Anzahl der Zeilen werden ja in der Schleife erledigt.
 
Ich habe gde folgende Code geschrieben aber irgendwie kommt es immer zu einem Fehler.

Wo könnte er sein?
Auf der Willkommenseite landet man auf:

PHP:
<?php
.....
$artikel_array = get_buecher();

display_anzeigen($artikel_array);
......
?php

diese verweisen auf:


PHP:
<?php
function  get_buecher()
{
    $conn = db_connect();
    $query = "select book, isbn from books where catid = 1";
    $result = @$conn->query($query);
    if (!$result)
        return FALSE;
      
        //Lieferung der Zeile_Anzahl
    $num_artikel = @$result->num_rows;

    if ($num_artikel == 0)
        return FALSE;
    $result = db_to_array($result);
    return $result;
}

function db_to_array($result) //Umwandlung in ein Array von Ergebnissen
{
    $res_array = array();

    for ($count = 0; $row = $result->fetch_assoc(); $count++)
        $res_array[$count] = $row;

    return $res_array;
}


function display_anzeigen($artikel_array)
{
    // Alle Bücher anzeigen aus dem uebergebenen Array anzeigen
    if (!is_array($artikel_array)) {
        echo '<br />Es steht Momentan kein Book dieser Kategorie zur Verfügung<br/>';
    } else {
        // Tabelle anlegen
        echo '<table width = \"100%\" border = 0 align=center>';

        // Für jedes Book
        foreach ($artikel_array as $row) {
            echo '<tr><td>';
            $row['book'];
            echo '</td><td>';
            $row['isbn'];
            echo '</td></tr>';
        }
        echo '</table>';
    }
 
?>
 
Werbung:
... versuch doch mal

statt
$query = "select book, isbn from books where catid = 1";

das hier
$query = "select book, isbn from books where catid = '1'";
 
Danke.

Habe auch versucht.

Das Problem ist dass ich keine Fehlermeldung bekomme aber es wird nichts angezeigt :(
 
versuchs mal mit dem Code hier

PHP:
<?php

# in der conf.php steht deine Datenbankverbindung
include("conf.php");

# deine Abfrage
$abfrage = "SELECT book, isbn FROM books WHERE id = '1'";
$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 beginnt
echo "<table cellspacing=\"1\" cellpadding=\"0\" border=\"0\">";

# 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>";
    }
echo "</tr>";

# Schleife 2: Für jeden Datensatz wird ein foreach durchgeführt:
while ($datensatz = mysql_fetch_row($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>";

?>
 
Werbung:
Die mysql-Erweiterung von PHP ist noch oft im Internet zu sehen, jedoch wird in der offiziellen Dokumentation klar empfohlen, auf die Extension 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.
Ab PHP 5.6 wird die Erweiterung vermutlich ganz fallen gelassen.
 
@spawnalex
Ich habe diese Code bei mir implementiert. Folgende Fehler bekomme ich:

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\xampp\htdocs\......\......php on line 69

PHP:
#line 69
$anzahl_datensaetze = mysql_num_rows($ergebnis);


Warning: mysql_num_fields() expects parameter 1 to be resource, boolean given in C:\xampp\xampp\htdocs\....\.....php on line 71
PHP:
#line 71
$anzahl_felder = mysql_num_fields($ergebnis);

Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in C:\xampp\xampp\htdocs\....\....php on line 89
PHP:
#line 89
while ($datensatz = mysql_fetch_row($ergebnis))
 
Zurück zu meinen Code.

Könnte es sein dass der Fehler sich in der Function Display_anzeigen(); befindet?
Ich habe das Gefühl dass der Fehler sich ab folgende Code befindet.
PHP:
function display_anzeigen($artikel_array)
{
# Alle Bücher anzeigen aus dem uebergebenen Array anzeigen

if (!is_array($artikel_array)) {

echo '<br />Es steht Momentan kein Book dieser Kategorie zur Verfügung<br/>';

} else {

# Tabelle anlegen

echo '<table width = \"100%\" border = 0 align=center>';

# Für jedes Book
foreach ($artikel_array as $row) {

echo '<tr><td>';
$row['book'];

echo '</td><td>';
$row['isbn'];

echo '</td></tr>';

}
echo '</table>';

}

Ich habe zwar die Tabelle angelegt aber so wird es eingefügt mit $row[''];?

Wenn ich die Catid wechsele wo keine Bücher zur Verfügung stehen, bekomme ich den oben genannten Fehlermeldung: "Es steht momentan.........zur Verfügung"
 
Zuletzt bearbeitet:
Werbung:
Man kann auch MySQL mal fragen, was da nicht stimmt:
PHP:
$ergebnis = mysql_query($abfrage)
   or die ("MySQL-Error: " . mysql_error());
 
Zurück
Oben