Daten aus der Datenbank in einer Tabelle bekommen

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>";

}
[/PHP]

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;
} [/PHP]

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

Warum musst du deinen Computer einschalten, um damit zu arbeiten? Ist halt so.

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?

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
[/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 ‚
Es steht Momentan kein Book dieser Kategorie zur Verfügung
‘;
} 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>';
}

?>[/PHP]

Und das äußert sich wie?

… 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 :frowning:

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 „“;

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 „ " . $feldname . " “;
}
echo „“;

Schleife 2: Für jeden Datensatz wird ein foreach durchgeführt:

while ($datensatz = mysql_fetch_row($ergebnis)) {
echo „“;
# 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 „“ . $value . „\n“;
}
echo „\n“;
}
echo „“;

?>[/PHP]

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);[/PHP]

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);[/PHP]

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)) [/PHP]

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 ‚
Es steht Momentan kein Book dieser Kategorie zur Verfügung
‘;

} else {

Tabelle anlegen

echo ‚<table width = "100%" border = 0 align=center>‘;

Für jedes Book

foreach ($artikel_array as $row) {

echo ‚‘;
$row[‚book‘];

echo ‚‘;
$row[‚isbn‘];

echo ‚‘;

}
echo ‚‘;

}
[/PHP]

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“

Man kann auch MySQL mal fragen, was da nicht stimmt:
[PHP]$ergebnis = mysql_query($abfrage)
or die ("MySQL-Error: " . mysql_error());[/PHP]