Beiträge: 29
Themen: 6
Registriert seit: 12.04.2015
MyBB-Version: 1.8.22
Link zu deinem Forum: Auf Anfrage via PM
Forenversion: aktuelle
PHP-Version: 7
MySQL-Version:
Selbsteinschätzung zum Kenntnisstand: Fortgeschritten
Problem Beschreibung:
Hallo ihr lieben ^^
vielleicht kann mir ja einer von euch Helfen xD
Es geht darum das ich gerne eine Liste erstellen möchte in dem das Alter der Charas ausgespuckt wird. Da es von 0 - 2500 geht dachte ich mir mach ich das mit einer einfachen Abfrage über ein Profilfeld in dem das Alter angegeben wird:
PHP-Code:
// 25 - 35
if(preg_match("/^[25-35]/m", $row[fid12])) {
eval("\$zweifuenf .= \"".$templates->get("alter_bit2")."\";");
}
Das Problem ist jetzt das er mir den User mit dem Alter 33 nicht da reinsetzt wo es hingehört (25 Jahre - 35 Jahre) sondern zu 50 Jahre - 70 Jahre
bei der Abfrage (Alter ist 1025):
PHP-Code:
// 1001-1500
if(preg_match("/^[1001-1500]/m", $row[fid13])) {
eval("\$einsnullnulleins .= \"".$templates->get("alter_bit8")."\";");
}
schmeißt er besagten User zu:
101 Jahre - 500 Jahre, 501 Jahre - 1000 Jahre, 1001 Jahre - 1500 Jahre, 1501 Jahre - 2000 Jahre und 2001 Jahre - 2500 Jahre
Weiß einer von euch vielleicht wie ich das richtig hinbekomme? Google hat mir iwie nicht wirklich weiter geholfen und hier hab ich nichts gefunden :/
*Nervennahrung dalass*
Lg
Beiträge: 2.245
Themen: 33
Registriert seit: 25.05.2018
MyBB-Version: 1.8.38
03.10.2021, 10:35
(Dieser Beitrag wurde zuletzt bearbeitet: 03.10.2021, 10:36 von Schnapsnase.)
Warum sprichst du denn in den if-Anweisungen unterschiedliche Profilfelder an?
Das Alter sollte doch immer im gleichen Feld stehen, oder hast du dafür mehrere definiert?
PHP-Code:
$alter = $row['fid12'];
if ($alter >= 25 && $alter <= 35) {
mach dies;
}
elseif ($alter > 35 && $alter <= 500) {
mach jenes;
}
else ........
Dies nur ein Beispiel, da ich ja nicht weiß, was du erreichen willst und wie dein Query aussieht.
Beiträge: 29
Themen: 6
Registriert seit: 12.04.2015
MyBB-Version: 1.8.22
03.10.2021, 10:48
(Dieser Beitrag wurde zuletzt bearbeitet: 03.10.2021, 10:57 von Lila Raven.)
OMG @Schnapsnase du bist klasse ^^ Ja vom Prinzip her will ich 2 verschiedene Profilfelder ansprechen aber damit rettest du mir den ***** xD
Vielen Dank *Kaffee und Kuchen da lässt*
EDIT: hat Super Funktioniert *_* Tausend Dank
Beiträge: 29
Themen: 6
Registriert seit: 12.04.2015
MyBB-Version: 1.8.22
Hallo ich nochmal
Ich dachte wirklich es würde gehen aber er gibt mir IMMER nur einen einzigen User aus und nicht alle
PHP-Code:
if ($alter >= 0 && $alter <= 10) {
eval("\$alter1 = \"".$templates->get("alter_bit")."\";");
}
elseif ($alter >= 11 && $alter <= 24) {
eval("\$alter2 = \"".$templates->get("alter_bit")."\";");
}
Hab ich da irgendein Fehler rein gehauen den ich nicht finde?
Wäre für jede Hilfe dankbar
Lg
Beiträge: 2.245
Themen: 33
Registriert seit: 25.05.2018
MyBB-Version: 1.8.38
An den if-Anweisungen ist nichts auszusetzen.
Da wir aber den Rest deines Codes immer noch nicht kennen, kann man auch nicht weiter helfen.
Beiträge: 29
Themen: 6
Registriert seit: 12.04.2015
MyBB-Version: 1.8.22
Sorry
hier der rest ^^
PHP-Code:
$sql = $db->query("SELECT * FROM mybb_users u LEFT JOIN mybb_userfields uf ON(u.uid=uf.ufid) ORDER BY username ASC");
while($row = $db->fetch_array($sql)) {
$row[username] = build_profile_link(format_name($row['username'], $row['usergroup'], $row['displaygroup']), $row['uid']);
$alter = $row['fid12'];
if ($alter >= 0 && $alter <= 10) {
eval("\$alter1 = \"".$templates->get("alter_bit")."\";");
}
elseif ($alter >= 11 && $alter <= 24) {
eval("\$alter2 = \"".$templates->get("alter_bit")."\";");
}
elseif ($alter >= 25 && $alter <= 35) {
eval("\$alter3 = \"".$templates->get("alter_bit")."\";");
}
elseif ($alter >= 36 && $alter <= 49) {
eval("\$alter4 = \"".$templates->get("alter_bit")."\";");
}
elseif ($alter >= 50 && $alter <= 70) {
eval("\$alter5 = \"".$templates->get("alter_bit")."\";");
}
elseif ($alter >= 71 && $alter <= 100) {
eval("\$alter6 = \"".$templates->get("alter_bit")."\";");
}
$aalter = $row['fid13'];
if ($aalter >= 101 && $aalter <= 500) {
eval("\$aalter7 = \"".$templates->get("alter_bit2")."\";");
}
elseif ($aalter >= 501 && $aalter <= 1000) {
eval("\$aalter8 = \"".$templates->get("alter_bit2")."\";");
}
elseif ($aalter >= 1001 && $aalter <= 1500) {
eval("\$aalter9 = \"".$templates->get("alter_bit2")."\";");
}
elseif ($aalter >= 1501 && $aalter <= 2000) {
eval("\$aalter10 = \"".$templates->get("alter_bit2")."\";");
}
elseif ($aalter >= 2001 && $aalter <= 2500) {
eval("\$aalter11 = \"".$templates->get("alter_bit2")."\";");
}
}
eval("\$page = \"".$templates->get("alter")."\";");
output_page($page);
Beiträge: 2.245
Themen: 33
Registriert seit: 25.05.2018
MyBB-Version: 1.8.38
Du fragst doch im Query den Inhalt der Profilfelder gar nicht ab, sondern nur den Inhalt der users-Tabelle.
Beiträge: 25.762
Themen: 269
Registriert seit: 20.09.2005
07.10.2021, 09:45
(Dieser Beitrag wurde zuletzt bearbeitet: 07.10.2021, 09:59 von StefanT.)
Werden sie doch?
Problem ist eher, dass die Variablen $aalter... bei jedem Durchlauf überschrieben werden. Wolltest du stattdessen die User anhängen? Dann wäre das "$alter1 .=" (mit Punkt am Ende) statt "$alter1 =" (ohne Punkt).
Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Beiträge: 837
Themen: 8
Registriert seit: 08.02.2016
MyBB-Version: 1.8.38
Mittels LEFT JOIN werden ebenfalls die Profilfelder ins Ergebnis geholt.
Das Problem liegt hier daran, dass du mit jedem Durchlauf der while-Schleife immer wieder die Variablen überschreibst, bis am Ende der Schleife der letzte User übrig bleibt.
Es wird nur der letzte User der Schleife angezeigt, richtig?
Die Schleife und die Übergabe der Inhalte in die Templats muss verändert werden - indem du die Templateinhalte immer wieder anhängst, damit sie im nächsten Durchlauf nicht verloren gehen, zum Beispiel anstelle des "=" ein ".="
[ExiTuS]
Beiträge: 29
Themen: 6
Registriert seit: 12.04.2015
MyBB-Version: 1.8.22
Danke für die Antworten :3
@StefanT Das mit dem Punkt war es tatsächlich gewesen ^^
das so ein kleiner Punkt soooo viel ausmachen kann. Es werden jetzt alles Ausgelesen und angezeigt
Vielen Lieben dank euch *Blümchen da lässt*