• 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
 
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.
 
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
);
 
Zurück
Oben