Spalte in 2 Tabellen vergleichen

Ja aber das will irgendwie nicht so ganz^^
Ich muss ja noch irgendwie bestimmen, welchen Eintrag ich abrufen will (Also von welcher id. Ich habe ja schließlich mehrere anz_comment ergebnisse). Hier mal mein kompletter Code:

PHP:
<?php include_once("db_news.php");
include_once("db_showcomment.php");
$sql2 = mysql_query("SELECT *, COUNT(comment.id) AS anz_comment FROM news
   LEFT JOIN comment
   ON news.id = comment.id
   GROUP BY news.id
");
$result2 = mysql_query($sql2);

$sql = "SELECT * FROM `news`;";
$eintrage = mysql_num_rows(mysql_query($sql));
$maxproseite = 3;
 
$i = 0;
$ab =1;
if (isset($_GET['page'])) $ab = $_GET['page'];

$anzahl_seiten = ($eintrage / $maxproseite);

if (!isset($_GET['page'])) {
    $sql = "SELECT * FROM `news` ORDER BY `id` DESC LIMIT 0,".$maxproseite.";";  
} else {
    $abeintrag = $_GET['page'] * $maxproseite - $maxproseite;
    $sql = "SELECT * FROM `news` ORDER BY `id` DESC LIMIT ".$abeintrag.",".$maxproseite.";";
}
$result = mysql_query($sql);
while($row = mysql_fetch_assoc($result)){
	if(!isset($_GET['id'])) {
    echo '
  <div style="margin-left:10px">
  <a href="index.php?id='.$row['id'].'"><b>'.$row['titel'].'</b></a><br />
  <a class="datum">'.$row['datum'].'</a><br />
  '.$row['text'].'<br /><a href="index.php?id='.$row['id'].'">'.$_GET['anz_comment'].' Kommentare</a><br /></div>
  <div align="center"><img src="image/grenze.png" alt="gre"/></div><br />';
    }}
$i=$ab ;
if($i > 1 and !isset($_GET['id']))
{
   echo "<a href=\"index.php?section=gb&amp;page=".($i-1)."\">&lt;&lt;Zur&uuml;ck</a> ";
} 
if($i <= $anzahl_seiten and !isset($_GET['id']))
{
   echo "&nbsp;&nbsp;<a href=\"index.php?section=gb&amp;page=".($i+1)."\">N&auml;chste&gt;&gt;</a>";
}

include_once("comment.php");
?>
 
*sigh*

Du nutzt die Tatsache, dass die Abfrage alle benötigten Daten liefert, ja gar nicht aus.

Mal ein Beispiel:

PHP:
$maxproseite = 3;
$queryString = "SELECT SQL_CALC_FOUND_ROWS *, COUNT(comment.id) AS anz_comment FROM news
   LEFT JOIN comment
   ON news.id = comment.id
   GROUP BY news.id
   ORDER BY news.id DESC";
if (!isset($_GET['page'])) {
    $sql .= " LIMIT 0," . $maxproseite;  
} else {
    $abeintrag = intval($_GET['page']) * ($maxproseite - 1);
    $sql .= " LIMIT " . $abeintrag . ", " . $maxproseite;
}
$result = mysql_query($queryString);
$eintraege = mysql_result(mysql_query("SELECT FOUND_ROWS()"), 0);
while($row = mysql_fetch_assoc($result)) {
   // Daten ausgeben
}
// Seitennavigation ausgeben

Das versuchst Du jetzt mal zu verstehen und dann entrümpelst Du Dein Script.

LG
 
Das ganze funktioniert soweit schonmal ganz gut. Nur 1 Problem gibt es noch. Die Daten für die max pro Seite werden ja (glaube ich zumindest) in einem extra query abgrufen, nämlich sql. Unten wird ja nachher nur die eine Query, nämlich die, die in deinem Code queryString heißt, abgrufen. Dadurch klappt es soweit, dass die Anzahl der Kommentare und so inzwischen angezeigt wird. Jedoch werden alle Einträge an News, die es bisher gibt, auf einer Seite angezeigt, und wenn man weiterblättert, kommen die gleichen wieder, also alle.

Ich habe gerade schon ein paar Sachen durchprobiert, jedoch reicht mein Wissen soweit (noch) nicht.

Grüße
 
Hi,

Du sollst ja auch mitdenken und nicht einfach abkopieren. Das ist ein ungetestetes Beispiel, in dem sich ein Fehler eingeschlichen hat:

Code:
$queryString = "SELECT SQL_CALC_FOUND_ROWS *, COUNT(comment.id) AS anz_comment FROM news
   LEFT JOIN comment
   ON news.id = comment.id
   GROUP BY news.id
   ORDER BY news.id DESC";
if (!isset($_GET['page'])) {
    $queryString .= " LIMIT 0," . $maxproseite;  
} else {
    $abeintrag = intval($_GET['page']) * ($maxproseite - 1);
    $queryString .= " LIMIT " . $abeintrag . ", " . $maxproseite;
}

LG
 
Hi,
Es funktioniert jetzt alles perfekt. Hab das Blättersystem und so noch angepasst und jetzt funktioniert alles, so wie ich es haben wollte :D

Danke für deine Hilfe. Werd mich im Laufe der Woche echt mal hinsetzten und ein bisschen mehr mysql Befehle etc. lernen.
 
Zurück