Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste
Automatische Listen im MyBB?
#1
Hallo,

ist es möglich, den Inhalt, den jemand bei einem eigenen Profilfeld in seinem Profil eingegeben hat, in einer Liste ausgeben zu lassen, die aus einer zusätzlichen PHP-Seite besteht? Wie das mit den eigenen Seiten funktioniert, weiß ich bereits, nur würde ich gerne wissen, ob das klappen kann. Das ganze sollte alphabetisch funktionieren, sodass ein Profilfeld, das zum Beispiel mit "Amsterdam" ausgefüllt wird, über einem anderen Feld eingeordnet wird, das mit "Bern" ausgefüllt wurde. Smile So ähnlich vom Aufbau her, wie auch bei der Mitgliederliste.

Kann mir da jemand weiterhelfen? (:
Liebe Grüße vom Yasilein! Love
#2
Jeden User einzeln oder alle User zusammengefasst in einer Liste ?
Mit freundlichen Grüßen

MrBrechreiz
#3
Hallo,

gemeint war das so wie hier: https://www.mybb.de/forum/thread-28321.html Smile Nach ewigem Suchen habe ich diesen Thread vorhin gefunden, das kommt dem, was ich haben möchte, so gut wie komplett nahe. Habe das auch gleich mal ausprobiert, tut optisch gut, aber technisch nicht ganz. Die Frage ist: wofür ist dort im Code $faceclaim gut, daran scheint es zu scheitern. Ist das in der Datenbank drin, wie bekomme ich das darein, also mit welchem Eintrag? Der Fragesteller war ja nun leider schon einen Monate nicht mehr online. Sad Hier noch mal der Code, die Teile sind rot markiert:

Zitat:$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);


?>
Liebe Grüße vom Yasilein! Love
#4
Mich würden automatische Listen auch interessieren. - Gibt es hierfür schon eine Lösung?
#5
Der Code ist nicht von mir, sondern von fallennewyork, darf aber verändert und modifiziert (für andere Listen) werden, so lange das Credit drin bleibt! Basiert auf dem was fallennewyork hier erfragt hat und ihr gepostet habt.
Hab es selber für mehrere Listen und es funktioniert super.

Man nehme:

Lege 2 neue Profilfelder an:
1. Name: Avatargeschlecht
- Auswahlbox: männlich, weiblich, keine Angabe

2. Name: Avatarperson
- Textbox

Merke beide IDs!

Lege 1 neue php an mit dem Namen avatarliste.php:
(Folge den Anweisungen in dem Code!)

Code:
<?php
// Gib hier deine Datenbankzugangsdaten ein, die du auch bei der Installation des Forums verwendet hast!
$connection=mysql_connect(localhost, DBName, Passwort) or die
("Verbindungsversuch fehlgeschlagen");


//avatarlisten addon by fallen newyork

define('IN_MYBB', 1);
require "./global.php";
require "./inc/config.php";

add_breadcrumb("Avatarliste", "avatarliste.php");

// Ersetze das fid[XX] durch fid und der ID des Profilfelds Avatargeschlecht
$faceclaim=$db->query("SELECT * FROM mybb_users LEFT JOIN mybb_userfields ON mybb_users.uid = mybb_userfields.ufid WHERE fidXX = 'weiblich' ORDER BY mybb_userfields.fidZZ ASC");

// Ersetze das fid[ZZ] durch fid und der ID des Profilfelds Avatarperson
while($result=$db->fetch_array($faceclaim)) {
$userid = $result['uid'];
$username = $result['username'];
$avatar = $result['fidZZ'];
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 fidXX = 'männlich' ORDER BY mybb_userfields.fidZZ ASC");


while($result=$db->fetch_array($faceclaim)) {
$userid = $result['uid'];
$username = $result['username'];
$avatar = $result['fidZZ'];

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

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

?>

Gehe ins ACP und lege 3 Globale Templates an
1. Name: Avatarliste
Inhalt:
Code:
<html>
<head>
<title>{$settings['bbname']} - Avatarliste</title>
{$headerinclude}
</head>
<body>
{$header}
<br />
<table border="0" cellspacing="{$theme['borderwidth']}" cellpadding="{$theme['tablespace']}" class="tborder">

<tr>
<td class="tcat"><span class="smalltext">Female</span></td>
<td class="tcat"><span class="smalltext">Male</span></td></tr>

<tr>
<td width="50%" valign="top"><span class="smalltext">$female_faceclaim</span></td>
<td width="50%" valign="top"><span class="smalltext">$male_faceclaim</span></td>
</tr>
</table>

<div class="tcat"><a href="http://fallenny.bplaced.net/forum" style="font-family: tahoma; text-transform: uppercase; line-height: 100%; letter-spacing: 1px; font-size: 8px; text-align: center">Avatarlisten Addon &copy; fallen &hearts; newyork</a></div>
</table>
{$footer}
</body>
</html>

2. Name: female_faceclaim
Inhalt:
<strong>$avatar</strong> - $username

2. Name: male_faceclaim
Inhalt:
<strong>$avatar</strong> - $username
#6
Ich frage mich bei dem Code, warum hier erst eine zusätzliche MySQL-Verbindung aufgebaut wird, wenn diese dann gar nicht verwendet wird...
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
#7
Ich hab den Code leider nicht gemacht, aber er funktioniert und da ich kein php-Kenner bin, weiß ich auch leider gar nicht, was du meinst Big Grin
(Wenn es was einfacheres, besseres gibt, dann sag ich nicht nein dazu)
#8
Du kannst die oberen Zeilen (
PHP-Code:
// Gib hier deine Datenbankzugangsdaten ein, die du auch bei der Installation des Forums verwendet hast!
 
$connection=mysql_connect(localhostDBNamePasswort) or die
 (
"Verbindungsversuch fehlgeschlagen"); 

) einfach weglassen, da du diese Verbindung unten nicht nutzt, sondern auf die interne MyBB-Datenbank-Klasse ($db) zugreifst. Das ist das, was Stefan meinte.
#9
Ich danke euch vielmals! *Kuchen und Kekse da lass*
Das klappt ganz wunderbar (und ja auch ohne nochmal die Eingabe der Datenbankangaben).

Jetzt hätte ich noch eine Frage (könnte dreist wirken - sieht es meinem mädchenhaften Gemüt nach xD): Ist es möglich Angaben aus einem Freitextfeld auszulesen und diese als Unterteilung zu nehmen (statt Auswahlbox)?

Beispiel:
Ich habe ein Freitextfeld in dem die Spieler ihren Namen eintragen können.
Möchte also eine Liste erstellen, die eine Tabelle anlegt, bei der erst der Name aufgeführt wird und darunter alle Useraccounts, die exakt diesen Wortlaut in dem Freitextfeld haben. Also wenn es 3 Accounts gibt in denen "Anna" eingetragen ist, steht in der Liste:
Anna
- Nickname1
- Nickname2
- Nickname3

Dafür müsste man doch die Abfrage in
PHP-Code:
// Ersetze das fid[XX] durch fid und der ID des Profilfelds Avatargeschlecht
$faceclaim=$db->query("SELECT * FROM mybb_users LEFT JOIN mybb_userfields ON mybb_users.uid = mybb_userfields.ufid WHERE fidXX = 'weiblich' ORDER BY mybb_userfields.fidZZ ASC"); 
ändern, oder?
Nur ist ja hier angegeben, auf was er in der Fieldid achten muss. - Wie müsste man es umschreiben, damit er Freitext ausliest?

Kann mir da Jemand helfen?
#10
Ich nutze mal das Thema, da ich den Code als Grundlage genommen habe.

Ich wollte eine drei-spaltige Tabelle erstellen:
Username | Job | Alter
Die Inhalte werden auch eingefügt, aber leider auch eine Fehlermeldung:
MyBB Internal: One or more warnings occured. Please contact your administrator for assistance.

Code:
$alter=$db->query("SELECT * FROM mybb_users LEFT JOIN mybb_userfields ON mybb_users.uid = mybb_userfields.ufid WHERE fid24 = 'THIRTYFIVE' ORDER BY mybb_userfields.fid26 ASC");

while($result=$db->fetch_array($alter)) {
$userid = $result['uid'];
$username = $result['username'];
$job = $result['fid25'];
$alter = $result['fid26'];
eval("\$bewohnerthirtyfive .= \"".$templates->get("bewohnerthirtyfive")."\";");
}

Feld 24: Altersgruppe
Feld 25: Job
Feld 26: Alter

Hat jemand einen Tipp was ich vergessen habe bzw. falsch ist?