Hallo, Gast! (Registrieren)

Wir wünschen allen Besuchern frohe Ostern!

Letzte Ankündigung: MyBB 1.8.37 veröffentlicht (04.11.23)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Nur letztes Eintrag wird aus Datenbank ausgelesen
#1
Hallo liebe Mybb Community,

ich baue jetzt seit grob 2 Tagen an meiner Avatarliste herum. Grob gesagt soll die Liste sämtliche von den Usern verwendete Avatardarsteller auf einer extra Page ausgeben. AVATER - Username
Sortiert soll das ganze nach dem Namen des Avatars werden. Im Grunde funktioniert die Abfrage und das Auslesen einwandfrei - die Sache ist nur die - es wird nur der letzte Eintrag der Datenbank ausgelesen. Und ich komme einfach nicht hinter den Fehler. Verwende ich diesen Code bei einer anderen Boardsoftware klappt alles und die avatarliste.php gibt eine geordnete Liste aus.

Hat jemand eine Idee wo der Fehler sein könnte?

Unten angefügt habe ich die PHP Abfrage und deren Template Einbindung, sowie die Templates an sich, die ich für diese Page verwende.

Code:
$faceclaim=$db->query("SELECT * FROM mybb_users LEFT JOIN mybb_userfields ON mybb_users.uid = mybb_userfields.ufid WHERE fid11 = 'female' ORDER BY mybb_userfields.fid10 ASC");
                    
                    
while($result=$db->fetch_array($faceclaim)) {
      $userid = $result['uid'];
      $username = $result['username'];
      $avatar = $result['fid10'];
    
}

eval("\$female_faceclaim = \"".$templates->get("female_faceclaim")."\";");

$faceclaim=$db->query("SELECT * FROM mybb_users LEFT JOIN mybb_userfields ON mybb_users.uid = mybb_userfields.ufid WHERE fid11 = 'male' ORDER BY mybb_userfields.fid10 ASC");
                    
                    
while($result=$db->fetch_array($faceclaim)) {
      $userid = $result['uid'];
      $username = $result['username'];
      $avatar = $result['fid10'];
      
}

eval("\$male_faceclaim = \"".$templates->get("male_faceclaim")."\";");


eval("\$avatarliste = \"".$templates->get("avatarliste")."\";");
output_page($avatarliste);

Das Template avatarliste.tpl
Alle drei verwendeten/benötigten Templates sind im ACP unter global templates angelegt worden und werden auch ohne Fehler ausgegeben.

Code:
<html>
<head>
<title>{$settings['bbname']} - Avatarliste</title>
{$headerinclude}
</head>
<body>
{$header}
<table border="0" cellspacing="{$theme['borderwidth']}" cellpadding="{$theme['tablespace']}" class="tborder">
<tr>
<td class="thead"><h3>Faceclaim</h3></font><center><div style="width:350px; padding-top: 30px; text-align: center; font-family: open sans; font-size: 10px; letter-spacing: 2px; text-transform: uppercase;">zu den Reservierungen</div></font></center></td>
</tr>
<td><table width="100%"><tr>
<td width="50%" valign="top">
<table width="100%">
<tr><td align="center"><div style="width:350px; padding: 10px; background-color: #BA5972; text-align: center; font-family: open sans; font-size: 7px; letter-spacing: 5px; text-transform: uppercase; color: white;">FEMALE</div></td></tr>
<tr><td>$female_faceclaim</td></tr>
</table></td>

<td width="50%" valign="top">
<table width="100%">
<tr><td align="center"><div style="width:350px; padding: 10px; background-color: #5968BA; text-align: center; font-family: open sans; font-size: 7px; letter-spacing: 5px; text-transform: uppercase; color: white;">MALE</div></td></tr>
<tr><td>$male_faceclaim</td></tr>
</table></td></tr>


</table>
{$footer}
</body>
</html>

female_faceclaim.tpl als Beispiel - die male_faceclaim.tpl ist identisch.
Code:
<tr><td style="padding-left:20px;"><font size="1" style="font-family:open sans; size:7px; text-transform:uppercase;"><strong>$avatar</strong> - $username</font></td></tr>

Freue mich auf eure Antworten...

LG
Zitieren
#2
Es liegt daran, dass das Template nicht in der Schleife aufgerufen wird, sondern danach.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#3
Hallo,

vielen lieben Dank für deinen Lösungsvorschlag. Die Templateausgabe hatte ich ursprünglich auch in der Schleife - leider verändert sich das Problem dadurch nicht. Es wird trotzdem nur der letzte Eintrag ausgegeben.

Auszug aus der aktuellen PHP Datei:

Code:
$faceclaim=$db->query("SELECT * FROM mybb_users LEFT JOIN mybb_userfields ON mybb_users.uid = mybb_userfields.ufid WHERE fid11 = 'female' ORDER BY mybb_userfields.fid10 ASC");
                    
                    
while($result=$db->fetch_array($faceclaim)) {
      $userid = $result['uid'];
      $username = $result['username'];
      $avatar = $result['fid10'];
eval("\$female_faceclaim = \"".$templates->get("female_faceclaim")."\";");    
}


$faceclaim=$db->query("SELECT * FROM mybb_users LEFT JOIN mybb_userfields ON mybb_users.uid = mybb_userfields.ufid WHERE fid11 = 'male' ORDER BY mybb_userfields.fid10 ASC");
                    
                    
while($result=$db->fetch_array($faceclaim)) {
      $userid = $result['uid'];
      $username = $result['username'];
      $avatar = $result['fid10'];

eval("\$male_faceclaim = \"".$templates->get("male_faceclaim")."\";");       
}



eval("\$avatarliste = \"".$templates->get("avatarliste")."\";");
output_page($avatarliste);


?>
Zitieren
#4
Probiere es bitte so:
PHP-Code:
$faceclaim=$db->query("SELECT * FROM mybb_users LEFT JOIN mybb_userfields ON mybb_users.uid = mybb_userfields.ufid WHERE fid11 = 'female' ORDER BY mybb_userfields.fid10 ASC");
                    
                     
while(
$result=$db->fetch_array($faceclaim)) {
      
$userid $result['uid'];
      
$username $result['username'];
      
$avatar $result['fid10'];
 eval(
"\$female_faceclaim .= \"".$templates->get("female_faceclaim")."\";");     
 }
 

$faceclaim=$db->query("SELECT * FROM mybb_users LEFT JOIN mybb_userfields ON mybb_users.uid = mybb_userfields.ufid WHERE fid11 = 'male' ORDER BY mybb_userfields.fid10 ASC");
                    
                     
while(
$result=$db->fetch_array($faceclaim)) {
      
$userid $result['uid'];
      
$username $result['username'];
      
$avatar $result['fid10'];

eval(
"\$male_faceclaim .= \"".$templates->get("male_faceclaim")."\";");       
}



eval(
"\$avatarliste = \"".$templates->get("avatarliste")."\";"); 
output_page($avatarliste);


?>
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#5
Super danke - es klappt Smile

Magst du mir verraten was du verändert hast? Irgendwie bin ich grad zu blind für den Unterschied.

LG
Zitieren
#6
"=" in ".=" geändert
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  MySQL eintrag vecodx 15 4.369 24.04.2020, 14:47
Letzter Beitrag: itsmeJAY
  Letztes Beitragsdatum eines Themas auslesen lantis 4 2.653 04.10.2015, 20:30
Letzter Beitrag: StefanT
  Variable wird nicht ausgelesen? Harald_T 4 3.806 21.11.2005, 22:13
Letzter Beitrag: Harald_T