YourWBB


yourWBB » WoltLab Burning Board Generation 2 * » Alles von und für das WBB 2.3.x » [WBB 2.3.x] Allg. Fragen und Probleme » JOIN, zwei tabellen zusammen ausgeben » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag 1.795 Views | | Thema zu Favoriten hinzufügen

Neues Thema erstellen Antwort erstellen

Dieses Thema wurde als erledigt markiert. Thread erledigt

Zum Ende der Seite springen JOIN, zwei tabellen zusammen ausgeben
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
schweppe
Mitglied


Dabei seit: 13.09.07
Beiträge: 39
Forenversion: 2.3

 JOIN, zwei tabellen zusammen ausgeben Antworten Zitieren Editieren Melden       UP

Hi

ich hab mal wieder ein problem und zwar geht es ums JOIN.

Habe mich jetzt schon durch diverse seiten gelesen aber ich krieg es einfach nicht umgesetzt.

mein momentaner code

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
<?php

$filename="kategorie.php";

require("global.php");
require("acp/lib/class_parse.php");


$rersult=$db->unbuffered_query("SELECT abb_kategorie.KID, abb_kategorie.kname, abb_artikel.KID, abb_artikel.posttopic, abb_artikel.AID FROM abb_kategorie LEFT JOIN abb_artikel ON abb_kategorie.KID=abb_artikel.KID");
while ($row $db->fetch_array($result)){
    
    
    $kname=$row['kname'];
    $topic=$row['posttopic'];
    $AID=$row['AID'];
    
eval("\$list .= \"".$tpl->get("artikel_kategorie_list")."\";");
}

eval("\$tpl->output(\"".$tpl->get("artikel_kategorie")."\");");



?>


ich habe zwei tabellen.

einmal abb_artikel

in der artikel abgelegt sind mit den spalten

posttopic(artiekltitel),AID(artikelid),KID(kategorieid)

und einmal die tabelle abb_kategorie
in der die KID(kategorieid) und kname(kategoriename) abgelegt sind

so nun möchte ich posttopic und AID mit der KID=X aus der tabelle abb_artikel
dem kname mit der KID=X zuordnen

und anzeigen lassen.

aber bei dem obrigen code zeigt er mir gar nichts an.

ich weiß nicht wo der fehler liegt, ich vermute mal grob es liegt an der while-schleife. aber das ist nur eine vermutung.

vielleicht ist es auch die abfrage selber, ich hab noch nie mit JOIN gearbeitet und verzweifel auch gerade echt daran unglücklich

also wäre nett wenn mir jemand auf die sprünge hilft

danke schon mal

mfg schweppe

__________________

26.09.08 21:29 schweppe ist offline E-Mail WWW Finden Als Freund hinzufügen
[kamui]
~


images/avatars/avatar-4963.gif

Dabei seit: 27.04.05
Beiträge: 2.992

Antworten Zitieren Editieren Melden       UP

Ich selbst habe auch noch nicht mit JOIN gearbeitet, aber Google liefert folgendes Tutorial an erster Stelle: http://www.tizag.com/mysqlTutorial/mysqljoins.php

Zitat:
so nun möchte ich posttopic und AID mit der KID=X aus der tabelle abb_artikel
dem kname mit der KID=X zuordnen


Bahnhof? Abfahrt?
26.09.08 21:33 [kamui] ist offline Finden Als Freund hinzufügen
schweppe
Mitglied


Dabei seit: 13.09.07
Beiträge: 39
Forenversion: 2.3

Themenstarter Thema begonnen von schweppe
 RE: JOIN, zwei tabellen zusammen ausgeben Antworten Zitieren Editieren Melden       UP

Zitat:
Original von schweppe

Habe mich jetzt schon durch diverse seiten gelesen aber ich krieg es einfach nicht umgesetzt.



Augen rollen


und was verstehst du an deinem zitat nicht?

alle artikel mit der KID 1 sollen der kategorie (kname) mit der KID 1 zugeordnet werden
alle artikel mit der KID 2 sollen der kategorie mit der KID 2 zugeordnet werden

und so weiter

__________________

26.09.08 21:46 schweppe ist offline E-Mail WWW Finden Als Freund hinzufügen
C-Board
unregistriert
 RE: JOIN, zwei tabellen zusammen ausgeben Antworten Zitieren Editieren Melden       UP

Zitat:
Original von schweppe
aber bei dem obrigen code zeigt er mir gar nichts an.

ich weiß nicht wo der fehler liegt, ich vermute mal grob es liegt an der while-schleife. aber das ist nur eine vermutung.


Manchmal liegt der Fehler soooo nah und man sieht ihn einfach nicht verwirrt

Die Variable für das Statement lautet $rersult, in der Whileschleife suchst Du nach $result.

Ein einziger Buchstabe (r) macht alles kaputt fröhlich

Gruß Mike
27.09.08 09:07
schweppe
Mitglied


Dabei seit: 13.09.07
Beiträge: 39
Forenversion: 2.3

Themenstarter Thema begonnen von schweppe
Antworten Zitieren Editieren Melden       UP

auweia so was dummes. naja danke c-board.
jetzt gibt er mir auch was aus, allerdings nicht ganz so wie gewünscht,

anstatt das er alle artikel mit der KID=1 der kategorie (KID=1) zuordnet gibt er mir für jeden artikel erneut die kategorie aus (siehe anhang)

erscheint aber auch logisch, sagt ihm ja keiner das kname nur jeweils einmal ausgegeben werden soll...

hat jemand eine lösung für dieses problem?

mfg schweppe

Dateianhang:
jpg liste.jpg (28 KB, 72 mal heruntergeladen)


__________________

27.09.08 11:04 schweppe ist offline E-Mail WWW Finden Als Freund hinzufügen
Ghostmaster
Das Böse

images/avatars/avatar-4371.gif

Dabei seit: 17.01.04
Beiträge: 6.440
Fähigkeiten: WBB2 Profi
Forenversion: 2.3

Antworten Zitieren Editieren Melden       UP

Versuch mal das hier (wenn ich das richtig verstanden habe)

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
$result_kategorie = $db->query("SELECT kategorieid,kname FROM abb_kategorie ORDER BY kname ASC");
while ($row_kategorie = $db->fetch_array($result_kategorie)) {

	$result_artikel = $db->query("SELECT posttopic FROM abb_artikel WHERE kategorieid = '$row_kategorie[kategorieid]'");
	while ($row_artikel = $db->fetch_array($result_artikel)) {
		eval("\$list_artikel .= \"".$tpl->get("artikel_artikel_list")."\";");
	}
	eval("\$list .= \"".$tpl->get("artikel_kategorie_list")."\";");
}


Wenn du Fragen zum Code hast, stell sie ruhig. Augenzwinkern
Du musst noch ein Template mut dem Namen "artikel_artikel_list" anlegen.
27.09.08 12:11 Ghostmaster ist offline Finden Als Freund hinzufügen
schweppe
Mitglied


Dabei seit: 13.09.07
Beiträge: 39
Forenversion: 2.3

Themenstarter Thema begonnen von schweppe
Antworten Zitieren Editieren Melden       UP

ja, so ähnlich hatte ich das auch schon versucht. aber das klappt auch nicht
siehe anhang

Dateianhang:
jpg list2.jpg (40 KB, 63 mal heruntergeladen)


__________________

27.09.08 12:33 schweppe ist offline E-Mail WWW Finden Als Freund hinzufügen
Ghostmaster
Das Böse

images/avatars/avatar-4371.gif

Dabei seit: 17.01.04
Beiträge: 6.440
Fähigkeiten: WBB2 Profi
Forenversion: 2.3

Antworten Zitieren Editieren Melden       UP

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
$result_kategorie = $db->query("SELECT kategorieid,kname FROM abb_kategorie ORDER BY kname ASC");
while ($row_kategorie = $db->fetch_array($result_kategorie)) {

	$result_artikel = $db->query("SELECT posttopic FROM abb_artikel WHERE kategorieid = '$row_kategorie[kategorieid]'");
	while ($row_artikel = $db->fetch_array($result_artikel)) {
		eval("\$list_artikel .= \"".$tpl->get("artikel_artikel_list")."\";");
	}
	eval("\$list .= \"".$tpl->get("artikel_kategorie_list")."\";");
	$ilst_artikel = '';
}


Hab es nicht ausprobiert, aber versuch das hier.
27.09.08 12:46 Ghostmaster ist offline Finden Als Freund hinzufügen
schweppe
Mitglied


Dabei seit: 13.09.07
Beiträge: 39
Forenversion: 2.3

Themenstarter Thema begonnen von schweppe
Antworten Zitieren Editieren Melden       UP

bingo das hat geklappt smile

vielen dank

könntest du mir noch erklären was dieser befehl auslöst?
also das resultart seh ich ja, aber was sagt er genau?


mfg schweppe

ps: muss natürlich $list_artikel heißen, da haste dich vertippt Augenzwinkern

__________________

27.09.08 12:50 schweppe ist offline E-Mail WWW Finden Als Freund hinzufügen
Ghostmaster
Das Böse

images/avatars/avatar-4371.gif

Dabei seit: 17.01.04
Beiträge: 6.440
Fähigkeiten: WBB2 Profi
Forenversion: 2.3

Antworten Zitieren Editieren Melden       UP

Du liest zuerst alle Kategorien aus. Das ist eine die 1. While Schleife.
Und in der 1. While schleife wird eine 2. Abfrage gestartet die sich die Artikeleinträge dieser Kategorie heraussucht. Dann kommt mittels der 2. While Schleife die Ausgabe der Artikel. smile
27.09.08 12:58 Ghostmaster ist offline Finden Als Freund hinzufügen
C-Board
unregistriert
Antworten Zitieren Editieren Melden       UP

Würde das nicht mit GROUP BY den gleichen (aber schnelleren) Effekt haben?

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
<?php

$filename="kategorie.php";

require("global.php");
require("acp/lib/class_parse.php");

$result $db->unbuffered_query("SELECT 
    abb_kategorie.KID, 
    abb_kategorie.kname, 
    abb_artikel.KID, 
    abb_artikel.posttopic, 
    abb_artikel.AID 
    FROM abb_kategorie 
    LEFT JOIN abb_artikel ON abb_kategorie.KID=abb_artikel.KID 
    GROUP BY abb_kategorie.KID
");
while ($row $db->fetch_array($result)){
    $kname=$row['kname'];
    $topic=$row['posttopic'];
    $AID=$row['AID'];
    eval("\$list .= \"".$tpl->get("artikel_kategorie_list")."\";");
}
eval("\$tpl->output(\"".$tpl->get("artikel_kategorie")."\");");
?>


Gruß Mike
27.09.08 14:10
schweppe
Mitglied


Dabei seit: 13.09.07
Beiträge: 39
Forenversion: 2.3

Themenstarter Thema begonnen von schweppe
Antworten Zitieren Editieren Melden       UP

gibts eine möglichkeit das zu testen?

dann würd ich das direkt mal machen Augenzwinkern

__________________

27.09.08 18:00 schweppe ist offline E-Mail WWW Finden Als Freund hinzufügen
Baumstruktur | Brettstruktur
Gehe zu:

Neues Thema erstellen Antwort erstellen

yourWBB » WoltLab Burning Board Generation 2 * » Alles von und für das WBB 2.3.x » [WBB 2.3.x] Allg. Fragen und Probleme » JOIN, zwei tabellen zusammen ausgeben