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

MySQl-Anweisung in PHP while-schleife

chr_sch

Neues Mitglied
Hallo,

ich möchte in einer while-schleife den Inhalt aus einer Tabelle einer Datenbank ausgeben. Die Tabelle heißt beitrag und sieht aus wie folgt:

CREATE TABLE beitrag(
id INT PRIMARY KEY AUTO_INCREMENT,
kurzbeschreibung VARCHAR(100) NOT NULL,
text VARCHAR(1000) NOT NULL,
fk_autor INT Not Null REFERENCES autor(id),
fk_kategorie INT not null REFERENCES kategorie(id),
datum TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Desweiteren möchte ich auf die folgende Tabelle zugreifen:

CREATE TABLE autor (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL
);

In beiden Fällen handelt es sich um MySQL-Anweisungen.

In meinem php-Quellcode lasse ich innerhalb einer while-Schleife die Einträge aus der "beitrag"-Tabelle ausgeben. Jedoch möchte ich nicht den Fremdschlüssel autor_id ausgegeben bekommen, sondern den "name" der "autor"-tabelle.

Code:
<!DOCTYPE html>
<html>

<head>
<meta charset = "UTF-8">
<link type="text/css" rel="stylesheet" href="style.css" />
<title>Webforum</title>
</head>

<body>
<div id= "header">
<h2>WebForum</h2>
</div>

<div id="liste">

<!--Verbindung mit Datenbank-->
<?php
try{
$dbh = new PDO('mysql:host=localhost;dbname=***',***','***' );
}
catch (PDOException $e){
echo "Error: " . $e->getMessage();
print_r($dbh->errorInfo());
}
$kat_id = $_REQUEST['kat_id'];

$kat_anzeige = $dbh->query("SELECT name FROM kategorie WHERE id = '$kat_id';");
$row = $kat_anzeige->fetch(PDO::FETCH_OBJ);
?> <h4>Kategorie: <?
echo $row->name;?></h4>
</br></br>

<!-- Anzeige der vorhandenen Beiträge -->
<?
$beitragsanzeige = $dbh->query("SELECT * FROM beitrag WHERE fk_kategorie = '$kat_id';");
if($beitragsanzeige){
while($row = $beitragsanzeige->fetch(PDO::FETCH_OBJ)){
?>Autor: <?
$autor_anzeige = $dbh2->query("SELECT name FROM autor WHERE fk_autor = id;");
$row2=$autoren_anzeige->fetch(PDO::FETCH_OBJ);
echo $row2->name;?></br><?

?>Kategorie: <?echo $row->fk_kategorie;?></br><?
?>Datum: <?echo $row->datum;?></br><?
?>Kurzbeschreibung: <?echo $row->kurzbeschreibung;?></br><?
?><a href="beitrag_liste_einzel.php?kat_id=<?echo $kat_id;?>&beitrag_id=<?echo $row->id;?>">Beitrag lesen</a>
<a href="beitrag_loeschen.php?beitrag_id=<?echo $row->id;?>">Beitrag löschen</a></br></br>
<?
}
}

?>
</br>
<a href="beitrag_erstellen.php?kat_id=<?echo $kat_id;?>">Beitrag erstellen</a>
</br></br></br>

<a href="index.php">Startseite</a>



</div>
</body>

</html>

Leider klappt das nicht. Weiß jemand Rat?

Gruss
 
Werbung:
Was ein Join ist, weiß ich ja. Weiß jedoch nicht wie ich das sinnvoll einsetzen kann.
Verstehe nicht ganz waum mein Code nicht richtig ist.
 
Werbung:
Diese Zeile ist mal sicher falsch:
$autor_anzeige = $dbh2->query("SELECT name FROM autor WHERE fk_autor = id;");
ein fk_autor gibt es in der tabelle autor ned
 
PHP:
$beitragsanzeige = $dbh->query("
    SELECT
         b.id, b.kurzbeschreibung, b.text, a.name
    FROM
         beitrag AS b
    INNER JOIN
        autor AS a
    ON
         b.fk_autor=a.id
    WHERE
        b.fk_kategorie=".$kat_id
);
 
Werbung:
Zurück
Oben