Result bei Join. Daten Tabelle 2 kann nicht abgefragt werden

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Despor
Mitglied
Beiträge: 9
Registriert: 20.03.2008 22:40

Result bei Join. Daten Tabelle 2 kann nicht abgefragt werden

Beitrag von Despor »

Hallo alle zusammen

Vielleicht kann mir jemand helfen. Ich baue gerade ein kleines Programm für PHPBB3.

Meine Frage ist eigentlich recht einfach nur leider finde ich einfach den Fehler nicht. Vielleicht gibt es einen unter euch der mich auf den richtigen Weg setzt.

Ich habe in dem nachfolgenden Code einen SQL Join eingebaut.
Normalerweise hätte ich jetzt erwartet das ich beim result auslesen auch die Daten der zweiten Datei bekommen. Aber leider bekomme ich nur die Daten aus der ersten Tabelle. Gibt es einen Trick um auf die Daten der gejointen Tabelle zu gelangen (phpbb_aoc_characters)


$char_id = $row['name'] gibt keinen Wert zurück
Wenn ich das SQL auf der Datenbank ausführe bekomme ich die gewünschten Daten zurück Name = Efreet

Code: Alles auswählen

SELECT * FROM phpbb_aoc_raid a1 join phpbb_aoc_characters a2 on a1.char_id = a2.id
WHERE a1.datum_raid_start > current_date LIMIT 1

Code: Alles auswählen

if ( $row = $db->sql_fetchrow($result) )
		{
			$i = 0;
			do
			{
				$roflcopter = $db->sql_fetchrow($db->sql_query("SELECT * FROM phpbb_aoc_raid a1 
				                                                         join phpbb_aoc_characters a2 
																		 on a1.char_id = a2.id 
																		 WHERE a1.datum_raid_start > current_date LIMIT 1"));
	
				  $datum_erstellung = $row['datum_erstellung'];
  				  $datum_anmeldung_bis = $row['datum_anmeldung_bis'];
  				  $datum_raid_start = $row['datum_raid_start'];
				  $raid_ort = $row['raid_ort'];
				  $raid_art = $row['raid_art'];
				  $ab_level = $row['ab_level'];
				  $rasse1 = $row['rasse1'];
				  $rasse2 = $row['rasse2'];
				  $rasse3 = $row['rasse3'];
				  $rasse4 = $row['rasse4'];
				  $rasse5 = $row['rasse5'];
				  $rasse6 = $row['rasse6'];
				  $rasse7 = $row['rasse7'];
				  $rasse8 = $row['rasse8'];
				  $rasse9 = $row['rasse9'];
				  $rasse10 = $row['rasse10'];
				  $rasse11 = $row['rasse11'];
				  $rasse12 = $row['rasse12'];
				  $raid_beschreibung = $row['raid_beschreibung'];
				  $char_id = $row['name'];
				  
				  
				  $row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2'];
				  $row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2'];
				  $url = append_sid("{$phpbb_root_path}memberlist.php?mode=viewprofile&u=$user_ID_");
				  $template->assign_block_vars('raids', array(
				
					 'ROW_NUMBER' => $i + ( $start + 1 ),
					 'ROW_COLOR' => '#' . $row_color,
					 'ROW_CLASS' => $row_class,
					 'U_OFFICER' => "{$phpbb_root_path}aoc_characters.php?mode=Raidfuehrer",
					 'INVITE_TIME'  => "$datum_anmeldung_bis",
					 'START_TIME'  => "$datum_raid_start",
					 'RAID_DUNGEON'  => "$raid_ort",
					 'OFFICER'  => "$char_id",
					 'RAID_ART'  => "$raid_art",
					 'RAID_LEVEL'  => "$ab_level",
					 'WAECHTER'  => "$rasse1",
					 'DUNKLER_TEMPLER'  => "$rasse2",
					 'EROBERER'  => "$rasse3",
					 'MITRAPRIESTER'  => "$rasse4",
					 'VOLLSTRECKER_SETS'  => "$rasse5",
					 'BAERENSCHAMANE'  => "$rasse6",
					 'BARBAR'  => "$rasse7",
					 'ASSESSINE'  => "$rasse8",
					 'WALDLAEUFER'  => "$rasse9",
					 'DAEMONOLOGE'  => "$rasse10",
					 'HEROLD_DES_XOTLI'  => "$rasse11",
					 'NEKROMANT'  => "$rasse12",
					 'RAID_MAX' => $rasse1 + $rasse2 + $rasse3 + $rasse4 + $rasse5 + $rasse6 + $rasse7 + $rasse8 + $rasse9 + $rasse10 + $rasse11 + $rasse12)
	
					);

				$i++;
			} while ( $row = $db->sql_fetchrow($result) );
			$db->sql_freeresult($result);
		}


Ich hoffe mir kann jemand helfen
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Das Problem hatte ich noch nie. Ich könnte mir vorstellen, dass das * so interpretiert wird, dass nur die 1. Tabelle gemeint ist. Wenn du a1.* und a2.* verwendest solltest du in dem Fall eigentlich alle Daten erhalten. Ich gebe da eigentlich immer explizit an, welche Daten ich haben will, so dass ich keine unnötigen Daten aus der DB hole. Selbst wenn das alle Daten der Tabelle sein sollten könnte es ja mal irgendwann sein, dass ich die Tabelle erweitere, die Daten an der Stelle aber nicht brauche.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Despor
Mitglied
Beiträge: 9
Registriert: 20.03.2008 22:40

Beitrag von Despor »

Danke dir gn#36

Ich habe mal deinen Rat umgesetzt.
Leider ohne Ergebnis. Ich verstehe es auch nicht wenn ich das SQL im MySQL Query Browser starte kommt auch das richtige Ergebnis herraus incl dem Feld 'name'.
Nur halt im PHP nicht.

Aber danke dir

Code: Alles auswählen

SELECT datum_erstellung, datum_anmeldung_bis, datum_raid_start, 
				 raid_ort, raid_art, ab_level, rasse1, rasse2, rasse3, rasse4, rasse5, rasse6, rasse7, rasse8, rasse9,
				 rasse10, rasse11, rasse12, raid_beschreibung, char_id, a2.name   FROM phpbb_aoc_raid a1 
				                                                         join phpbb_aoc_characters a2 
																		 on a1.char_id = a2.id 
																		 WHERE a1.datum_raid_start > current_date LIMIT 1
Benutzeravatar
easygo
Mitglied
Beiträge: 2170
Registriert: 03.09.2004 13:45
Kontaktdaten:

Re: Result bei Join. Daten Tabelle 2 kann nicht abgefragt we

Beitrag von easygo »

Despor hat geschrieben:$char_id = $row['name'] gibt keinen Wert zurück
Wenn ich das SQL auf der Datenbank ausführe bekomme ich die gewünschten Daten zurück Name = Efreet
Versuchs mal mit $roflcopter statt $row, lustiger Name btw
Despor hat geschrieben:

Code: Alles auswählen

if ( $row = $db->sql_fetchrow($result) )
		{
			$i = 0;
			do
			{
				$roflcopter = $db->sql_fetchrow($db->sql_query("SELECT * FROM phpbb_aoc_raid a1 
				                                                         join phpbb_aoc_characters a2 
																		 on a1.char_id = a2.id 
																		 WHERE a1.datum_raid_start > current_date LIMIT 1"));
Despor
Mitglied
Beiträge: 9
Registriert: 20.03.2008 22:40

Beitrag von Despor »

Hallo easygo

Habe ich sofort versucht jetzt bekomme ich einen Namen zurück allerdings nur den zuerst gelesenen.

Die grundlegende PHP Anweisung habe ich mir in einem Programm abgeschaut. Da ich nicht vertraut bin mit der Übermittlung von PHP Daten in HTML Seiten.

Kenne nur den normal Fall wo direct aus dem PHP Script auch die HTML Seite aufgebaut wird.

Denke das SQL ist OK aber
Despor
Mitglied
Beiträge: 9
Registriert: 20.03.2008 22:40

Beitrag von Despor »

Danke euch beiden

Durch eure Hilfe habe ich es gefunden :lol:

Die SQL Anweisung $roflcopter wird überhabt nicht verarbeitet.
Da habe ich mir wohl was falsches abgeschaut.

Ich habe es jetzt hinbekommen danke euch vielmals

Despor
Antworten

Zurück zu „Coding & Technik“