craxelburger 0 Report post Posted December 5, 2003 (edited) Hallo! Kann mir mal jemand aushelfen? Ich brauche das Alter (errechnet aus dem Geburtsdatum) als Zahl in der Memberlist und im Topic. Kann ruhig in der selben Spalte wie die Mitgliedernamen stehen. Beispiel: Egon (28) EDIT: Wär Cool, wenn die Mitglieder auch nach Alter sortiert werden könnten. Danke. Craxelburger Edited December 5, 2003 by craxelburger Share this post Link to post
Stefan 0 Report post Posted December 6, 2003 Also hier mal eine Lösung für die Topicanzeige. Datei Topics.php Suchen: $DB->query( "SELECT p.*, m.id,m.name,m.mgroup,m.email,m.joined,m.avatar,m.avatar_size,m.posts,m.aim_ ame,m.icq_number, m.signature, m.website,m.yahoo,m.integ_msg,m.title,m.hide_email,m.msnname, m.warn_level, m.warn_lastwarn, g.g_id, g.g_title, g.g_icon, g.g_dohtml $join_get_fields FROM ibf_posts p LEFT JOIN ibf_members m ON (p.author_id=m.id) LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup) $join_profile_query WHERE p.topic_id=".$this->topic['tid']." and p.queued != 1 ORDER BY p.{$ibforums->vars['post_order_column']} {$ibforums->vars['post_order_sort']} LIMIT $first, ".$ibforums->vars['display_max_posts']); Ergänzen mit rotmarkierten Teil: $DB->query( "SELECT p.*, m.id,m.name,m.mgroup,m.email,m.joined,m.avatar,m.avatar_size,m.posts,m.aim_name, .icq_number, m.bday_day, m.bday_month, m.bday_year, m.signature, m.website,m.yahoo,m.integ_msg,m.title,m.hide_email,m.msnname, m.warn_level, m.warn_lastwarn, g.g_id, g.g_title, g.g_icon, g.g_dohtml $join_get_fields FROM ibf_posts p LEFT JOIN ibf_members m ON (p.author_id=m.id) LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup) $join_profile_query WHERE p.topic_id=".$this->topic['tid']." and p.queued != 1 ORDER BY p.{$ibforums->vars['post_order_column']} {$ibforums->vars['post_order_sort']} LIMIT $first, ".$ibforums->vars['display_max_posts']); Suchen: $member['member_joined'] = $ibforums->lang['m_joined'].' '.$std->get_date( $member['joined'], 'JOINED' ); $member['member_group'] = $ibforums->lang['m_group'].' '.$member['g_title']; $member['member_posts'] = $ibforums->lang['m_posts'].' '.$std->do_number_format($member['posts']); $member['member_number'] = $ibforums->lang['member_no'].' '.$std->do_number_format($member['id']); Darüber einfügen: if (!empty($member['bday_year'])) { $temptime = explode ("-", date("d-m-Y", time())); $age = $temptime[2] - $member['bday_year']; if ($temptime[1] < $member['bday_month']) $age -= 1; if ( ($temptime[1] = $member['bday_month']) && ($temptime[0] < $member['bday_day']) ) $age -= 1; } else { $age = "-"; } $member['member_age'] = $ibforums->lang['m_age'].' '.$age; Datei skin_topic.php Suchen: {$author['member_rank_img']}<br /><br /> {$author['member_group']}<br /> Darunter einfügen: {$author['member_age']}<br /> Datei lang_topic.php Suchen: m_group => "Gruppe:", Darunter einfügen: m_age => "Alter:", Bei anderer Schreibweise des Arrays, folgendes suchen: $lang['m_group'] => "Gruppe:"; Darunter einfügen: $lang['m_age'] => "Alter:"; So nun wird das Alter schon in der Topicanzeige unterhalb der Gruppe angezeigt. Kannst es ja bei Bedarf woeanders hinsetzten im Skin. Share this post Link to post
Stefan 0 Report post Posted December 6, 2003 Okay, Teil 2 und das mit der Suchfunktion ist ein wenig trickreicher, aber auch kein Problem. Datei Memberlist.php Suche: $the_sort_key = array( 'name' => 'sort_by_name', 'posts' => 'sort_by_posts', 'joined' => 'sort_by_joined', ); Mit rot markierten Teil ergänzen: $the_sort_key = array( 'name' => 'sort_by_name', 'posts' => 'sort_by_posts', 'joined' => 'sort_by_joined', 'age' => 'sort_by_age', ); Suchen: $DB->query("SELECT m.name, m.id, m.posts, m.joined, m.mgroup, m.email,m.title, m.hide_email, m.location, m.aim_name, m.icq_number, me.photo_location, me.photo_type, me.photo_dimensions FROM ibf_members m LEFT JOIN ibf_member_extra me ON me.id=m.id LEFT JOIN ibf_groups g ON m.mgroup=g.g_id WHERE m.id > 0".$q_extra." AND g.g_hide_from_list <> 1 ORDER BY m.".$this->sort_key." ".$this->sort_order." LIMIT ".$this->first.",".$this->max_results); Mit rot markierten Teil ergänzen: if ($this->sort_key == 'age') { $this->sort_order = $this->sort_order == "desc" ? "asc" : "desc"; $this->sort_key = "bday_year ".$this->sort_order.", m.bday_month ".$this->sort_order.", m.bday_day"; } $DB->query("SELECT m.name, m.id, m.posts, m.joined, m.mgroup, m.email,m.title, m.hide_email, m.location, m.aim_name, m.icq_number,m.bday_day, m.bday_month, m.bday_year, me.photo_location, me.photo_type, me.photo_dimensions FROM ibf_members m LEFT JOIN ibf_member_extra me ON me.id=m.id LEFT JOIN ibf_groups g ON m.mgroup=g.g_id WHERE m.id > 0".$q_extra." AND g.g_hide_from_list <> 1 ORDER BY m.".$this->sort_key." ".$this->sort_order." LIMIT ".$this->first.",".$this->max_results); Suchen: $member['joined'] = $std->get_date( $member['joined'], 'JOINED' ); $member['group'] = $this->mem_groups[ $member['mgroup'] ]['TITLE']; Darunter einfügen: if (!empty($member['bday_year'])) { $temptime = explode ("-", date("d-m-Y", time())); $member['member_age'] = $temptime[2] - $member['bday_year']; if ($temptime[1] < $member['bday_month']) $member['member_age'] -= 1; if ( ($temptime[1] = $member['bday_month']) && ($temptime[0] < $member['bday_day']) ) $member['member_age'] -= 1; } else { $member['member_age'] = "-"; } Datei skin_mlist.php Suchen: <th class='pformstrip' align="center">{$ibforums->lang['member_icq']}</th> Darunter einfügen: <th class='pformstrip' align="center">{$ibforums->lang['member_age']}</th> Suchen: <td class='row2' align="center">{$member['icq_number']}</td> Darunter einfügen: <td class='row2' align="center">{$member['member_age']}</td> Suchen (3 mal): colspan="9" Ersetzen durch: colspan="10" Datei lang_mlist.php: Hinzufügen: sort_by_age => "Alter", member_age => "Alter", Bei anderer Schreibweise des Arrays $lang['sort_by_age'] = "Alter"; $lang['member_age'] = "Alter"; Sollte funktionieren. :) Share this post Link to post
craxelburger 0 Report post Posted December 6, 2003 Top Support! Vielen Dank. Ich habs auch schon (etwas abgewandelt) eingebaut und lief sofort. Danke Stefan. :D Share this post Link to post
craxelburger 0 Report post Posted December 8, 2003 Stefan, kannst Du mir auch noch sagen wie ich die Funktion in Dragorans Portal reinbekomme? Den Skin krieg ich schon selbst hin. Danke. Share this post Link to post
Stefan 0 Report post Posted December 9, 2003 Wie schon in der PM angesprochen, eine einfache Methode ist die Änderung in der functions.php: In der Funktion load_member folgendes Query $DB->query("SELECT moderator.mid as is_mod, moderator.allow_warn, m.id, m.name, m.mgroup, m.password, m.email, m.restrict_post, m.view_sigs, m.view_avs, m.view_pop, m.view_img, m.auto_track, m.mod_posts, m.language, m.skin, m.new_msg, m.show_popup, m.msg_total, m.time_offset, m.posts, m.joined, m.last_post, m.last_visit, m.last_activity, m.dst_in_use, m.view_prefs, m.org_perm_id, m.temp_ban, m.sub_end, m.module_cal, g.* FROM ibf_members m LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup) LEFT JOIN ibf_moderators moderator ON (moderator.member_id=m.id OR moderator.group_id=m.mgroup ) WHERE m.id=$member_id"); abändern in $DB->query("SELECT moderator.mid as is_mod, moderator.allow_warn, m.id, m.name, m.mgroup, m.password, m.email, m.restrict_post, m.view_sigs, m.view_avs, m.view_pop, m.view_img, m.auto_track, m.mod_posts, m.language, m.skin, m.new_msg, m.show_popup, m.msg_total, m.time_offset, m.posts, m.joined, m.last_post, m.last_visit, m.last_activity, m.dst_in_use, m.view_prefs, m.org_perm_id, m.temp_ban, m.sub_end, m.module_cal, m.bday_day, m.bday_month, m.bday_year, g.* FROM ibf_members m LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup) LEFT JOIN ibf_moderators moderator ON (moderator.member_id=m.id OR moderator.group_id=m.mgroup ) WHERE m.id=$member_id"); Nun kannst du es überall per $ibforums->member[] abfragen, also der Alg. müßte so aussehen: if (!empty($ibforums->member['bday_year'])) { $temptime = explode ("-", date("d-m-Y", time())); $ibforums->member['member_age'] = $temptime[2] - $ibforums->member['bday_year']; if ($temptime[1] < $ibforums->member['bday_month']) $ibforums->member['member_age'] -= 1; if ( ($temptime[1] = $ibforums->member['bday_month']) && ($temptime[0] < $ibforums->member['bday_day']) ) $ibforums->member['member_age'] -= 1; } else { $ibforums->member['member_age'] = "-"; } In $ibforums->member['member_age'] hättest du dann das Alter drin stehen. Könntest natürlich die ganze Sache auch weiter anpassen und alles in die load_member Funktion integrieren, so das du überall in der Forensoftware über die Variable das Alter abfragen kannst. Share this post Link to post
craxelburger 0 Report post Posted December 9, 2003 Hmm, aber wenn ich das in der functions.php einbaue, belaste ich da nicht unnötig meinen Server mit Abfragen? Also ich wollte das nur noch in der Startseite haben. Wenn Du auf meine Seite gehst, siehst Du ja Direkt am Anfang das Portal mit "Neustes Mitglied" und "Neueste Mitglieder". Dahinter wollte ich das auch so haben wie es auch jetzt schon in meiner Memberlist ist. Ich schicke Dir gleich mal meine portal.php per Email. :rolleyes: Share this post Link to post
Stefan 0 Report post Posted December 9, 2003 Naja, es ist keine zusätzliche Datenbankabfrage, sondern du holst nur drei Zellen mehr aus der DB, was jetzt nicht wirklich eine große Datenmenge ist. Im Portal wird man wohl eine Datenbankabfrage mehr einbauen müssen, aber das kann ich dir erst genau sagen, wenn ich die den Sourcecode vor Augen habe. Share this post Link to post
Stefan 0 Report post Posted December 10, 2003 So, hier eine Methode, die du in deiner Portal.php einbauen kannst. Sollte funktionieren, jedoch hab ich es nicht getestet und nur kurz hier runter getippert. function get_memberage() { global $DB, $ibforums; $age = ""; $member = array(); if ($ibforums->member['id'] == 0) return $age; $DB->query("SELECT m.bday_day, m.bday_month, m.bday_year FROM ibf_members WHERE id ='".$ibforums->member['id']."'"); if ($DB->get_num_rows() != 1) return $age; $member = $DB->fetch_row(); if (!empty($member['bday_year'])) { $temptime = explode ("-", date("d-m-Y", time())); $age = $temptime[2] - $member['bday_year']; if ($temptime[1] < $member['bday_month']) $age -= 1; if ( ($temptime[1] = $member['bday_month']) && ($temptime[0] < $member['bday_day']) ) $age -= 1; } else { $age = ""; } $DB->free_result(); return $age; } Diese Methode rufst du nun einfach innerhalt der Methode auf, wo du das Alter haben willst. Aufruf zum Beispiel: $alter = $this->get_memberage(); Nun kannst du die Variable $alter der jeweiligen Skindatei übergeben. Sollten da Probleme auftreten, meld dich einfach und ich mach eine Schritt-für-Schritt Anleitung. :) Share this post Link to post
craxelburger 0 Report post Posted December 18, 2003 Sorry, Stefan aber ich bekomme es einfach nicht hin. Hab mittlerweile schon einige Versuche dahinter. Was ich erreichen will: Anzeige des Alters so wie in meiner Memberlist. Das heisst das Alter in Klammern hinter dem Namen an folgenden Stellen meines Portals?: Statistik Beiträge: Themen: Registrierte Mitglieder: Neustes Mitglied: Mitgliedsname (Alter) Neusten Mitglieder Name Beiträge Name1 (Alter) Name2 (Alter) usw. Unter diesem Link habe ich meine Portal-Dateien gezippt liegen. Ich denke mal das das für Dich bestimmt nur eine Kleinigkeit ist. Vielen Dank schonmal im Voraus. Craxelburger Share this post Link to post
Stefan 0 Report post Posted December 18, 2003 Ich schau es mir morgen in Ruhe an, für heute hab ich genug programmiert. :) Share this post Link to post
Stefan 0 Report post Posted December 26, 2003 (edited) Hat etwas länger gedauert, da ich in den letzten Tagen nicht soviel Zeit hatte. Probier mal die folgenden Dateien aus, sollte eigentlich klappen. Ich hab das Protal jetzt mal nicht auf meinen Testforum installiert, weil ich es mir nicht ruinieren will. Bei Problemen meld dich mal per PM bei mir, dann schau ich mir das mal auf deiner Seite an. Edited December 27, 2003 by Stefan Share this post Link to post
craxelburger 0 Report post Posted December 27, 2003 Ist ja kein Problem Hab ja geduldig gewartet. Habs gleich mal auf den Server geschmissen. Leider klappts nicht ganz mit den Dateien. Ich krieg folgende Fehlermeldung: Warning: mysql_fetch_array(): 29 is not a valid MySQL result resource in /home/www/htdocs/skypeflirt.de/forum/sources/Drivers/mySQL.php on line 199 Dann wird in der Box "Statistik" beim Neusten Mitglied zwar eine Klammer angezeigt, eine Zahl mit dem Alter ist aber nicht darin. Weiter wird in der Box "Neuste Mitglieder" jetzt nur noch ein einziges Mitglied angezeigt (jedoch ohne Klammer und Zahl für das Alter). Vorher hatte ich dort die zehn neusten Mitglieder aufgelistet. MFG Craxelburger Share this post Link to post
Stefan 0 Report post Posted December 27, 2003 Such mal in der skin_portal.php folgende Stelle: $DB->free_result(); return $age; Entferne das $DB->free_result(); und probier es dann nochmal aus. :) Share this post Link to post
craxelburger 0 Report post Posted December 27, 2003 (edited) Hab ich gemacht. Fehlermeldung ist jetzt weg. Auch werden jetzt wieder alle Mitglieder aufgelistet (jedoch ohne Alter ). Die Klammer beim neusten Mitglied ist immer noch leer, obwohl das betreffende Mitglied das Alter angegeben hat. EDIT: Demo siehe mein Forum. Ich lass die Dateien mal on. Edited December 27, 2003 by craxelburger Share this post Link to post
Stefan 0 Report post Posted December 27, 2003 Kannst du mir mal FTP Zugang zu deinem Forum geben? Wenn ja, schick mir mal die Zugangsdaten per PM bitte. Share this post Link to post
craxelburger 0 Report post Posted December 27, 2003 Ich mache Dir eine Kopie auf einem anderem Webspace, da ich einige recht Private Dinge noch mit auf dem Server habe. Die Daten Schick ich Dir, sobald ich es eingerichtet hab. Share this post Link to post
benne 0 Report post Posted December 27, 2003 (edited) Also Stefan klappt super das ganze ! eines nur ich will das alter in klammern haben so wie craxel... wie mache ich das mein code ist momentan so $member['member_age'] = $age; wie füge ich da ein das der das alter in klammern anzeigt ??? das zweite prob ist Das mein Alter 1 Jahr zu wenig anzeigt aber von einem anderen User wird es richtig angezeigt beide hatten wir aber schon geb. und eingestellt ist es richtig Achso der vollständigkeit ich habe im März der andere User im November ! und ich nutze das ipb1.2 Sooo Klammern habe ich selber gelöst :-) Edited December 27, 2003 by benne Share this post Link to post
benne 0 Report post Posted December 28, 2003 mhhh also das Mit dem Alter hatts sich über nacht ohne was zu machen selbst geregelt! nun zeigt es eigentlich richtig an ! Fragt Bitte nicht warum ! Ich weiss es nicht! Share this post Link to post
craxelburger 0 Report post Posted January 12, 2004 Stefan, kannst Du die Formel nochmal überprüfen? Ein Mitglied mit dem Geburtsdatum 29 Sep. 1984 wird als 18jährig ausgeworfen. Share this post Link to post
Stefan 0 Report post Posted January 12, 2004 Die Formel ist schon richtig, aber da hat sich ein Copy & Paste Fehler eingeschlichen. f (!empty($member['bday_year'])) { $temptime = explode ("-", date("d-m-Y", time())); $age = $temptime[2] - $member['bday_year']; if ($temptime[1] < $member['bday_month']) $age -= 1; if ( ($temptime[1] == $member['bday_month']) && ($temptime[0] < $member['bday_day']) ) $age -= 1; } else { $age = "-"; } $member['member_age'] = $ibforums->lang['m_age'].' '.$age; Schau mal, die rotmarkierte Stelle, das zweite Gleichzeichen für einen Vergleich hatte gefehlt, deswegen wurde noch ein Jahr abgezogen. Naja, manchen Frauen wird es wohl lieber sein, wenn der Fehler drin bleibt. :lol: Share this post Link to post
craxelburger 0 Report post Posted January 12, 2004 Das stimmt. Dankeschön. :D Share this post Link to post
torres 0 Report post Posted April 18, 2004 Mal wieder Danke Stefan :-) Das Ganze funzt übrigens auch mit dem 1.2er. Wenn also bei dieser Version etwas nicht hinhauen sollte, liegt es mit ziemlicher Sicherheit am Einbau, jedoch nicht am Code. Share this post Link to post