Neue Galerie-Bilder

Allgemeiner Support zum phpBB 2 Board und phpBB 2 Modifikationen
Forumsregeln
Auch wenn hier der Support für phpBB 2 weiterhin aufrecht erhalten bleibt, weisen wir darauf hin, dass das phpBB 2 nicht mehr offiziell unterstützt und weiterentwickelt wird!
Antworten
kellamaster
Beiträge: 44
Registriert: Do 09.Mär, 2006 10:55

Neue Galerie-Bilder

Beitrag von kellamaster »

Ich arbeite mit einem komplett umgebauten Nickpage-Mod und suche die richtige Abfrage,...

Also
1) Ich will die 10 User, die zuletzt neue Bilder hochgeladen haben.
Die bekomme ich so und das klappt auch:

Code: Alles auswählen

$sql = "SELECT b.gal_id, b.uid, b.pic, u.username, u.user_id
		FROM " . forum_nickpagegalerie . " b, " . USERS_TABLE . " u
		WHERE b.uid = u.user_id
		GROUP BY b.uid
		ORDER BY b.gal_id DESC LIMIT 10";
if(!($result = $db->sql_query($sql)))
{
	message_die(GENERAL_ERROR, 'Could not query buddies information', '', __LINE__, __FILE__, $sql);
}
 while( $row = $db->sql_fetchrow($result) )
   {
$gal_new .= '<tr><td valign=top height=20 align=left bgcolor="#6A0016"><font size=2 color=#FFFFFF><b>' . $row['username'] . '</b>
<tr><td valign=top height=20 align=left bgcolor="#6A0016"><img src="http://www.kellapage.de/images/nickpage/' . $row['pic'] . '" height=50>
';
}
 $template->assign_vars(array(

         'GAL_NEW' => $gal_new
));
Bisher wird dann für jeden der 10 User nur ein Bild angezeigt, dass er hochgeladen hat.
2) Ich möchte aber, dass bis zu 10 Bilder in einer Zeile von der Ausgabetabelle angezeigt werden , die der User hochgeladen hat.

Also suche ich eine zweite Abfrage in der Gesamtabfrage wo quasi bei den 10 neusten Usern (uid) die Bilder-IDs (gal_id) ausgewertet werden und angezeigt werden.

Ich hoffe ihr versteht das und könnt mir helfen!
Danke schonmal...
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Eigentlich geht das nur mit 2 oder mehr Abfragen.
Ich würde zuerst mit der ersten aus der Tabelle "forum_nickpagegalerie" die letzten 10 User rausholen:

Code: Alles auswählen

$sql = "SELECT u.user_id, u.username FROM " . forum_nickpagegalerie . " b, " . USERS_TABLE . " u
	WHERE b.uid = u.user_id 
	ORDER BY b.uid DESC LIMIT 10";
if(!($result = $db->sql_query($sql)))
{
	message_die(GENERAL_ERROR, 'Could not query users', '', __LINE__, __FILE__, $sql);
}

$user_ids = '0';
$username = array();
$user_id = array();

while( $row = $db->sql_fetchrow($result) )
{
	$user_ids .= ', ' . $row['user_id'];
	$username[] = $row['username'];
	$user_id[] = $row['user_id'];
}

$db->sql_freeresult($result);

$sql = "SELECT uid, pic FROM " . forum_nickpagegalerie . "
	WHERE uid IN ($user_ids) 
	ORDER BY uid DESC, gal_id DESC";
if(!($result = $db->sql_query($sql)))
{
	message_die(GENERAL_ERROR, 'Could not query users', '', __LINE__, __FILE__, $sql);
}

$pic_data = array();

while( $row = $db->sql_fetchrow($result) )
{
	$pic_data[$row['uid']][] = $row['pic'];
}

$db->sql_freeresult($result);

$gal_new = '';

for ($i = 0; $i < sizeof($user_id); $i++)
{
	$user = $user_id[$i];

	$gal_new .= '<tr><td valign=top height=20 align=left bgcolor="#6A0016"><font size=2 color=#FFFFFF><b>' . $username[$i] . '</b></td></tr></tr>'; 

	for ($j = 0; $j < min(sizeof($pic_data[$user]), 10); $j++)
	{
		$gal_new .= '<td valign=top height=20 align=left bgcolor="#6A0016"><img src="http://www.kellapage.de/images/nickpage/' . $pic_data[$row['uid']][$j] . '" height="50" /></td>';
	}

	$gal_new .= '</tr>';
}

$template->assign_vars(array(
	'GAL_NEW' => $gal_new)
);
Ist allerdings so komplett ungetestet!!!

-- Code korrigiert (Zeile 17) --
Zuletzt geändert von oxpus am Fr 16.Mai, 2008 13:29, insgesamt 1-mal geändert.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
kellamaster
Beiträge: 44
Registriert: Do 09.Mär, 2006 10:55

Beitrag von kellamaster »

Erstmal danke für die schnelle Hilfe...

Ergebnis ist:
Er zeigt mir die Zeile komplett richtig an mit nur einem Usernamen...

Code: Alles auswählen

$gal_new .= '<tr><td valign=top height=20 align=left bgcolor="#6A0016"><font size=2 color=#FFFFFF><b>' . $username[$i] . '</b></td></tr>'; 
Bilder werden garnicht angezeigt?!

Hier gehts zur Seite: http://www.kellapage.de/gal_new.php
Zuletzt geändert von kellamaster am Fr 16.Mai, 2008 11:47, insgesamt 1-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Das müsste ich dann gegen ein Album, bzw. die Daten von Dir dann selber testen, aber dafür fehlt mir die Zeit...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
kellamaster
Beiträge: 44
Registriert: Do 09.Mär, 2006 10:55

Beitrag von kellamaster »

Kannst du mir mögliche Ansatzpunkte sagen, an denen ich das selbst checken kann?

Trotzdem erstmal danke...
Zuletzt geändert von kellamaster am Fr 16.Mai, 2008 13:09, insgesamt 1-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Ich kenne den Aufbau der Tabellen nicht, daher kann hier an dieser Stelle nur raten.
In dem Code ist aber noch ein Fehler:

Code: Alles auswählen

   $user_id[i] = $row['user_id'];
(Zeile 17) muss so lauten:

Code: Alles auswählen

   $user_id[] = $row['user_id'];
Vielleicht ist das schon alles...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
kellamaster
Beiträge: 44
Registriert: Do 09.Mär, 2006 10:55

Beitrag von kellamaster »

Schau bitte nochmal kurz auf den Link, den ich oben gepostet hab.

-Der User "Stella" hat zuletzt 10 Bilder hochgeladen.
-Eigentlich sollten die (max) 10 Bilder in der ersten "Box" (also 2.Zeile) angezeigt werden.
-Dann in der nächsten Tabelle sollte der nächste User kommen, deswegen hatte ich ja versucht etwas mit Group By zu machen, um Bilder der gleichen uid zusammenzufassen...
-Und abschließend würden die Bilder der User mit $row[pic] dargestellt, aber mit $pic_data[$row['uid']][$j] scheint es momentan nicht zu funktionieren...
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Wie gesagt: Ich habe nicht wirklich Zeit, das ausgiebig zu testen. Ich muss hier passen...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
kellamaster
Beiträge: 44
Registriert: Do 09.Mär, 2006 10:55

Beitrag von kellamaster »

Okay trotzdem DANKE!
Antworten