Nein, du sollst natürlich meinen Code nicht 1:1 übernehmen, das geht doch gar nicht!!
Du solltest das als Beispiel nehmen und nach diesem Prinzip dein SQL-Statement abändern.
In meinem Beispiel würde die Anzahl der Beiträge zu jedem Thema (Thread) in num_posts ausgegeben werden und ist damit Teil des Ergebnisses.
Übertragen auf deine Art der Ergebnisauswertung würde das bedeuten, dass du die Nummer ohne extra Schleife mit $eintraege->num_posts ansprechen könntest.
Natürlich brauchst du weiterhin die vorhandene while-Schleife, denn es gibt ja theoretisch mehrere Themen!
greez
JoSsiF
Nein, du sollst natürlich meinen Code nicht 1:1 übernehmen, das geht doch gar nicht!!
Du solltest das als Beispiel nehmen und nach diesem Prinzip dein SQL-Statement abändern.
Ja das ist mir auch klar!
Ich weiß nur nicht wie ich dein codebespiel bei mir einbringen soll!!
$abfrage = @ mysql_query("SELECT * FROM thema ORDER BY id DESC LIMIT $start,$post_pro_site")or die("Konnte den SELECT-Befehl nicht ausführen!!!");
So das war mein Befehl zum Ausführen
dan habe ich den jetzt mal so umgebaut
$abfrage = @ mysql_query("SELECT * , count (name) AS anzahl
FROM thema, antworten
WHERE thema.id = antworten.themaid
ORDER BY id DESC LIMIT $start,$post_pro_site")or die("Konnte den SELECT-Befehl nicht ausführen!!!");
so das funktioniert nicht , denn ich brauche das where ja auch nur um zu errechnen nicht zum anzeigen der Werte!!Was mach ich noch falsch?
der_webi
so das funktioniert nicht , denn ich brauche das where ja auch nur um zu errechnen nicht zum anzeigen der Werte!!
Das Where brauchst weder zum Errechnen noch zum Anzeigen...das dient lediglich dazu, um die Relation zwischen den Tabellen herzustellen.
Nach meinem Dafürhalten stimmt das Statement eigentlich. Fast. Nimm mal das Leerzeichen nach "count" raus. Die Klammer muss an den Funktionsnamen direkt ran.
Tausend Dank
endgültige Fassung:
$abfrage = @ mysql_query("SELECT thema.id, thema.datum, thema.uhrzeit, thema.name, thema.head, count(themaid) AS anzahl
FROM thema, antworten
WHERE thema.id = antworten.themaid
GROUP BY thema.id, thema.datum, thema.uhrzeit, thema.name, thema.head
ORDER BY thema.id DESC LIMIT $start,$post_pro_site")or die("Konnte den SELECT-Befehl nicht ausführen!!!");
Da musste ich doch glatt nochmal mein buch aufschlagen und auserdem habe ich mal gehöhrt oder gelesen, das wenn man count verwendet auch GROUP BY stehen muss, naja jetzt tut es ja
nochmals Danke
der_webi
So sorry ich kann es jetzt einfach nicht lassen, Aber meine Schleife in Schleife passt schon in gewissermaßen!!!
Ich habe jetzt wie vorgeschlagen alle Antworten in eine Tabelle gebracht. So und da ich jetzt das Thema anzeigen will benutze ich meinen SELECT
$abfrage = @ mysql_query("SELECT thema.id AS tid, antworten.datum, antworten.zeit, antworten.name, thema.head, count(themaid) AS anzahl
FROM thema, antworten
WHERE thema.id = antworten.themaid
GROUP BY thema.id, antworten.datum, antworten.zeit, antworten.name, thema.head
ORDER BY thema.id DESC LIMIT $start,$post_pro_site")or die("<b>Konnte den SELECT-Befehl nicht ausführen!!!</b>");
und dann noch die schleife zum ausgeben: echo "<table class=\"GBtable\" width=\"80\" border=\"0\" cellpadding=\"5\" align=\"center\">";
echo "<tr>";
echo "<td colspan=\"3\" class=\"GBhead\"><span><b class=\"ul_fett\">Thema:<< </b> <b class=\"ul\"><a href=\"index.php?thema=6&inhalt=2&id=".$eintraege->tid."\">".$eintraege->head."</a>>><b></span></td><br> ";
echo "</tr>";
echo "<tr>";
echo "<td><span><b class=\"ul_fett\">Am </b> <b class=\"ul\">".$eintraege->datum."</b> um <b class=\"ul\">".$eintraege->zeit."</b></span></td>";
echo "<td width=\"20\">";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td border=\2px\" > <b class=\"ul\"> Von: ".$eintraege->name."</b></td>";
echo "<td border=\2px\" ><b class=\"ul_fett\">Beträge: </b><b class=\"ul\">".$eintraege->anzahl."</b></td>";
echo "</tr>";
echo "</table><br>";
So ja alles schön und gut, dachte ich !!, aber
Wenn jetzt eine Antwort mehr kommt , dann zeigt er sie hier auch an inform eines neuen themas und das soll er ja gar nicht, sondern nur einmal!
So...
Jetzt kommt meine Schleife in Schleife
Voraussetzung:
Wir bezeichnen If-Anweisung oder was auch immer mal als Schleife
so ich habe 2 variablen gemacht..
$alte_themaid = 0;
$neue_themaid = 0;
so und dann kommt die if- Schleife in der While- Schleife
while($eintraege = mysql_fetch_object($abfrage))
{
$neue_themaid = $eintraege->tid ;
//echo "$alte_themaid" ;
if ( $alte_themaid != $eintraege->tid ) {
echo "<table class=\"GBtable\" width=\"80\" border=\"0\" cellpadding=\"5\" align=\"center\">";
echo "<tr>";
echo "<td colspan=\"3\" class=\"GBhead\"><span><b class=\"ul_fett\">Thema:<< </b> <b class=\"ul\"><a href=\"index.php?thema=6&inhalt=2&id=".$eintraege->tid."\">".$eintraege->head."</a>>><b></span></td><br> ";
echo "</tr>";
echo "<tr>";
echo "<td><span><b class=\"ul_fett\">Am </b> <b class=\"ul\">".$eintraege->datum."</b> um <b class=\"ul\">".$eintraege->zeit."</b></span></td>";
echo "<td width=\"20\">";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td border=\2px\" > <b class=\"ul\"> Von: ".$eintraege->name."</b></td>";
echo "<td border=\2px\" ><b class=\"ul_fett\">Beträge: </b><b class=\"ul\">".$eintraege->anzahl."</b></td>";
echo "</tr>";
echo "</table><br>";
}
$alte_themaid = $neue_themaid ;
}
So Erklärung:
Der Eintrag wird nur dann ausgegeben , wenn er noch nicht vorhanden ist!!!
So !!!!
In gewisser maßen war ich also mit meiner Schleife in Schleife gar nicht so verkehrt, auch wenn man glaub ich einen if-clauses nicht als schleife bezeichen sollte
der_webi
PS: Das soll natürlich jetzt nicht sagen das ich dieHilfe nicht gebrauchcht habe , aber
Super! Erstma Einträge aus der Datenbank auslesen, um sie dann letztendlich doch nicht anzuzeigen
-> Sehr elegant gelöst. Macht sich vor allem in der Performance enorm postiv bemerkbar
Ne jetzt im Ernst: du solltest dir überlegen, wie du es erreichen kannst, dass nur das aus der DB ausgelesen wird, was auch ausgegeben werden soll. Alles andere ist Verschwendung von Ressourcen und absoluter ** Netiquette! **. Wenn natürlich nur alle 2 Tage jemand dein Forum besucht, wäre die Lösung akzeptabel
greez
JoSsiF
Naja aber mysql ist noch nicht so meine Stärke, da kann man ja auf Sachen aufbauen die man schon kann!!!
naja und ich rechne bei dem Forum so auf ca 1 - 2 beiträge am tag in guten Zeiten.
Naja hauptsache es läuft erstmal
der_webi
« HTML-Tabelle Struktur ändern | Bild wird nicht vollständig angezeigt » | ||