Hallo, Gast! (Registrieren)

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


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Liste - Alter Ausgabe
#1
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
Zitieren
#2
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. Wink
Zitieren
#3
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
Zitieren
#4
Hallo ich nochmal Blush
Ich dachte wirklich es würde gehen aber er gibt mir IMMER nur einen einzigen User aus und nicht alle Sad

PHP-Code:
if ($alter >= && $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 Shy
Lg
Zitieren
#5
An den if-Anweisungen ist nichts auszusetzen.
Da wir aber den Rest deines Codes immer noch nicht kennen, kann man auch nicht weiter helfen.
Zitieren
#6
Sorry Blush 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 >= && $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); 
Zitieren
#7
Du fragst doch im Query den Inhalt der Profilfelder gar nicht ab, sondern nur den Inhalt der users-Tabelle. Wink
Zitieren
#8
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).
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#9
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? Smile

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]
MyBB + innovative Themes:
NokiaPort.de Forum Nokia-Traditionsforum seit 2006.
Live Escape Game Forum Diskussionsplattform für Escape-Rooms.
Unlösbares Problem, Dilemma? -> das Nötel Smile
Zitieren
#10
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 Shy

Vielen Lieben dank euch *Blümchen da lässt*
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Alter des Forums anzeigen ? tm2 8 3.270 10.01.2012, 08:21
Letzter Beitrag: StefanT
  Alter des Users bei Beträgen angeben BamBam 23 8.242 28.06.2009, 14:56
Letzter Beitrag: Player83