php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 03.12.2008, 15:34  
Neuer Benutzer
 
Registriert seit: 03.12.2008
Beiträge: 23
anbeck befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Verschachtelte Datenbank per Schleife abfragen

Hallo an alle,

ich habe ein Problem, das für Euch wahrscheinlich einfach zu lösen ist, aber ich komme nicht dahinter. Es handelt sich zwar um eine mySQL-Abfrage, aber da das Problem wohl eher im php-Code liegt, poste ich es einfach mal hier.

Ich möchte für die Indexseite eines Forums eine Spalte für die einzelnen Rubriken (d.h. Unterforen) einfügen, die anzeigt, wieviele Beiträge dort schon gemacht wurden (wie vBulletin es ja auch macht).

Was die Datenbank betrifft, so sind 3 Tabellen ausschlaggebend:
* Tabelle mit den Rubriken (forum_topic): Hat die Spalten id und name.
* Tabelle mit den Threads (forum_thread): Hat die Spalten id, titel, beitragstext, poster und rubrik_id (letztere zeigt, in welcher Rubrik der Thread angezeigt wird)
* Tabelle mit den Beiträgen (forum_posts): hat die Spalten id, beitragstext, poster und thread_id (zeigt an, in welchem Thread der Beitrag angezeigt wird)

Nun will ich die Zahl der Beiträge für jede Rubrik herausfinden. Dazu muß ich ja erst alle Threads der Rubrik zählen, dann die Beiträge zählen, welche die thread_id der Threads aus der Rubrik haben und diese dann zusammenzählen. Eigentlich ist das ja ganz einfach.
Aber ich bekomme es trotzdem nicht hin

Soll heißen: Die threads zu zählen, das schaffe ich schon, nämlich:

Code:
// $rubrik ist weiter oben definiert, das klappt ja auch
$fetch_thread_num = mysql_query("SELECT * FROM `forum_thread` WHERE `rubrik_id` = '$rubrik[id]'");
// holt alle threads aus der Thread-Tabelle, die zur Rubrik passen
$threads_overall = mysql_num_rows($fetch_thread_num);
// zählt die geholten Zeilen und spuckt die richtige Zahl aus
So weit so gut. Jetzt muß ich nur noch die Beiträge zählen, das sollte ja in etwa so gehen:

Code:
$fetch_post_num = mysql_query("SELECT * FROM `forum_posts` WHERE `thr_id` = '$thread[id]'")
// soll alle Beiträge aus der Posts-Tabelle holen, die zu den Threads aus der Rubrik passen
$posts_overall = mysql_num_rows($fetch_post_num);
// wie oben
Aber dazu muß ich ja wahrscheinlich eine Schleife bauen. In etwa:
Für jeden Thread, der zur Rubrik passt, schaue nach den passenden postings und addiere den Wert hinzu.
Und obwohl mir Schleifen normalerweise kein Problem machen, ist das in diesem Fall aufgrund der mySQL-Abfrage anders. Ich komm einfach nicht drauf!

Würde mich freuen, wenn Ihr mir helfen könntet! Vielen Dank schon mal!
André
anbeck ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 03.12.2008, 15:43  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Hallo.
Bei mysql_query() werden alle Ergebnisdatensätze vom MySQL Server in den PHP Prozess "kopiert".
Zitat:
$threads_overall = mysql_num_rows($fetch_thread_num);
Nehmen wir mal an, das ergibt die Zahl 1734. Herzlich Glückwunsch, Deine Abfrage hat sämtliche Daten von 1734 Datensätzen von MySQL nach PHP kopiert, nur um diese dann unbenutzt wieder abräumen zu müssen. Schau Dir mal SQL COUNT() Function an
David ist offline  
Alt 03.12.2008, 16:11  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.988
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Bei mysql_query() werden alle Ergebnisdatensätze vom MySQL Server in den PHP Prozess "kopiert".
Ist das so, oder passiert das nicht doch erst beim Fetch? Habe das nie ausprobiert.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 03.12.2008, 16:27  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Wenn PHP das wirklich so macht, dann wird die Standard-Minimal-Fehlerbehandlung für mysql_query/mysql_fetch_xyz ja noch schwieriger Muss ich nachher mal reingucken.
David ist offline  
Alt 03.12.2008, 16:48  
Erfahrener Benutzer
 
Registriert seit: 28.09.2008
Beiträge: 1.168
PHP-Kenntnisse:
Fortgeschritten
Koala befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
* Tabelle mit den Rubriken (forum_topic): Hat die Spalten id und name.
* Tabelle mit den Threads (forum_thread): Hat die Spalten id, titel, beitragstext, poster und rubrik_id (letztere zeigt, in welcher Rubrik der Thread angezeigt wird)
* Tabelle mit den Beiträgen (forum_posts): hat die Spalten id, beitragstext, poster und thread_id (zeigt an, in welchem Thread der Beitrag angezeigt wird)
ungetestet:
PHP-Code:
$sql "SELECT COUNT(a.id) AS anzahl, a.thread_id, b.id, b.rubrik_id, c.id
FROM forum_posts AS a, 
forum_thread AS b, 
forum_topic AS c 
WHERE a.thread_id = b.id 
AND b.rubrik_id = c.id 
GROUP BY b.rubrik_id "

mit JOINs sicher besser, schöner, schneller ...
Koala ist offline  
Alt 03.12.2008, 18:52  
Neuer Benutzer
 
Registriert seit: 03.12.2008
Beiträge: 23
anbeck befindet sich auf einem aufstrebenden Ast
Standard

Danke Koala... dann müßte anzahl ja jeweils die posts per rubrik beinhalten. Mal schauen, ob das klappt. Ich melde mich dann wieder.

Danke schon mal!
anbeck ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
datenbank abfragen und in php einfügen hups PHP Tipps 2008 18 26.08.2008 21:04
Alle Relationen von Tabellen in einer Datenbank abfragen dreifragezeichen Datenbanken 10 22.04.2008 17:51
geladene daten aus einer schleife in die datenbank speichern Bonaparte PHP Tipps 2008 2 05.09.2007 22:26
While schleife mit Datenbank in ein Dropdown Feld (Umlaut Problem) kintaro PHP Tipps 2008 6 28.08.2007 19:11
Access Datenbank abfragen FireFIghter PHP Tipps 2006 4 03.08.2006 10:54
mysql_query verschmelzen zweier abfragen (while schleife) Buschdieb PHP Tipps 2006 10 15.07.2006 17:11
Daten aus MySQL Datenbank abfragen trivial Datenbanken 2 29.04.2006 17:48
Problem beim Abfragen aller Tabellen in einer Datenbank gulli23 Datenbanken 5 26.02.2006 20:04
verschachtelte schleife marcels PHP Tipps 2007 3 08.12.2005 18:00
Einzelnen Wert aus Datenbank abfragen Datenbanken 3 07.07.2005 22:10
[Erledigt] Datensätze von Datenbank abfragen PHP Tipps 2005-2 14 26.06.2005 07:56
Formulardaten in eine Datenbank speichern und abfragen DarkThunder PHP Tipps 2005 3 08.04.2005 21:33
Datenbank nach Woche abfragen! Boennchen Datenbanken 13 15.02.2005 10:37
[Erledigt] Datenbank Abfragen PHP Tipps 2005 3 25.01.2005 14:53
[Erledigt] Anzahl der Beiträge in Schleife abfragen PHP Tipps 2004 4 01.11.2004 18:33

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
verschachtelte datenbank, abfrage aus der datenbank per php, mysql_query verschachtelt, access verschachtelte abfragen, count(*) mysql verschachtelung, php verschachtelte datenbank abfrage, php datenbank zwei schleifen, mysql abfrage mit verschachtelter schleife, access geschachtelter join, php datenbank for schleife, mysql abfrage schleife, access 2007 verschaltelte abfrage, verschachtelte schleifen php, sql geschachtelte wenn abfrage, datenbank als schleife abfragen, php datenbankabfrage schleife, anzahl von wenn abfragen access, geschachtelte sql, mysql_query verschachtelte select, geschachtelte datenbankne

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:38 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum