[PHP] Datenbankverknüpfung

Hi
Ich will ein Newssystem schreiben welches Kommentiert werden kann.
Das Newssystem habe ich soweit... jetzt will ich nur noch die comments haben. Ich habe schon eine Tabelle erzeugt aber ich krieg sie nicht zusammen ... Vielleicht kann es hier einer im Tutorial erklaeren ?

Vielen Dank

cu
 
In deiner comments-DB muss du irgendwie, d.h. mit einer art schluessel, die beziehung zwischen dem Comment und deinem News-Beitrag herstellen.
Ich nehme mal an, dass deine News-Betraege eine eindeutige Nummer haben, oder so etwas, das muss eindeutig sein.
Diese Nummer wird dann auch in die Comments-Tabelle eingetragen, zu jedem Comment.
Dann weiss du was wozu gehoert.
 
oder du fragst im SQL-FOrum oder beschäftigst dich mit den Grundlagen eines realtionalen DBMS.


beispiel news-tabelle

+news_id
+news_autor
+news_text

beispiel comment-tabelle

+comment_id <- Jeder Comment-Eintrag bekommt eine eindeutige Nummer
+news_id <- Fremdschlüssel aus der news-tabelle,damit wird die Verbindung mit der news-tabelle
+weitere Spalte...

wenn du die news aus der db holst und sie ausgibst machst du einfach nen link zu einem script welches die news_id über die url übernimmt. diese id dient dann in dem script als parameter für das SQL-Query.
z.b.
PHP:
print "<a href=\"comments.php?news_id=$news_id"\>Comments</a>";


dann in comment.php:

PHP:
$SQL = "SELECT spalte_1,spalte_2,spalte_n FROM news_comments WHERE news_id='$news_id'";
$result = mysql_query($SQL);
...
und so weiter
 
ok das is ja schonmal cool ... aber kann ich das gleiche script auch fuer die news.php benutzen damit ich die eintraege zaehlen lassen kann und auf der news.php anzeigen lassen ?

edit:
wie muss ich die spalte news_id in der table news_comments einstellen auch auf INT stellen ?
 
Zuletzt bearbeitet:
öhm zu frage 2 : jo nimm am besten den selben datentyp für die news_id in der comment-tabelle wie in der news-tabelle.

zu frage 1 : ich hoffe ich versteh dich richtig - du willst die einträge in der news-tabelle zählen lassen?
nimm mysql_num_rows($result)
alsp
PHP:
$anzahl_news = mysql_num_rows($result);
$print "Es sind $anzahl_news News vorhanden";
ich hoffe ich hab dich richtig verstanden
 
Hi
Also ich habs so gemacht und jetzt weiss ich nicht mehr weiter
Ich hab folgendes Problem ...
Wenn ich auf comments klicke dann Sehe ich nicht nur von den News die Comments sondern von allen news :(
Ich schreib mal den Code hier rein von der news.php hier rein ...

PHP:
$SQL="SELECT * FROM cz_news ORDER BY news_ID DESC";
$sql_result=mysql_query($SQL);
$anzahl=mysql_num_rows($sql_result);
while($cz_news=mysql_fetch_array($cz_news_result)) {

so dann hab ich es ausgegeben ....

PHP:
<? echo $cz_news['title'] ?>
.... usw.

# Der link zu den Comments

<a href=comments.php?news_ID=<? echo $cz_news['news_ID'] ?>>Comments</a>

und das hier von der comments.php

PHP:
$SQL="SELECT * FROM cz_comments WHERE news_ID='$news_ID'";
$sql_result=mysql_query($SQL);
while($cz_comments=mysql_fetch_array($sql_result)) {

#was ausgegeben wird 

<? echo $cz_comments['main'] ?>
... usw.

Bitte gebt mir einen Rat ;)

thx cya

achja und meine Tabellen sehen so aus ....

1. Tabelle
PHP:
CREATE TABLE `cz_news` (
`news_ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
`news_header` VARCHAR(120) NOT NULL, 
`news_main` LONGTEXT NOT NULL, 
`news_name` VARCHAR(120) NOT NULL, 
`news_datetime` DATETIME NOT NULL,
INDEX (`news_ID`),
UNIQUE (`news_ID`)
);

2. Tabelle
PHP:
CREATE TABLE `cz_comments` (
`comments_ID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
`comments_name` VARCHAR(120) NOT NULL, 
`comments_main` LONGTEXT NOT NULL, 
`news_ID` INT NOT NULL,
INDEX (`comments_ID`, `news_ID`),
UNIQUE (`comments_ID`, `news_ID`)
);
Ich schaetze das bei der news_ID in der comments table nicht stimmt ...aber leider weiss ich nicht was :(

cya
 
Zuletzt bearbeitet:
Sag doch mal, ob die URL, mit dem die Commments aufgerufen werden, stimmt.
Dann könntest du schon mal ausschließen, dass der Fehler in der News-Datei ist.
 
Zurück