ilch Forum » Ilch Clan 1.1 » Allgemein » Link in Profilfeld

Geschlossen
  1. #1
    User Pic
    SpeedyGonzales Mitglied
    Registriert seit
    24.10.2006
    Beiträge
    28
    Beitragswertungen
    0 Beitragspunkte
    Ich möchte ein Profilfeld anlegen in dem der User ein Link einfügen kann z. B. zu seiner ESL-Player-Seite aber irgendwie funktioniert das nicht.
    Wie könnte man so was reallisieren ?
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    www.ilch.de/forum-showposts-21303-p1.html
    Vielleicht hilft dir ja das Thema weiter.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    SpeedyGonzales Mitglied
    Registriert seit
    24.10.2006
    Beiträge
    28
    Beitragswertungen
    0 Beitragspunkte
    Danke Mairu aber ich komm da nicht weider hab jetzt mal versucht das Profilfeld "Homepage" ein 2.mal zu erstellen nur mit anderem Name z.B. ESL Link.
    Hab die "profil_edit.htm" um den Eintrag erweitert, in der "profilefields.php" den
    function profilefields_show_spez_homepage ($value,$uid) {
      global $lang;
      return ( profilefields_show_echo_standart ( $lang['esllink'], (empty($value)?'':'<a href="'.$value.'" target="_blank">'.$value.'</a>') ) );
    }
    eingefügt.

    in der " profil_edit.php" den
    if ( empty ($_POST['submit']) ) {
      $design->header();
    	$abf = 'SELECT email,wohnort,homepage,esllink,aim,msn,icq,yahoo,avatar,status,staat,gebdatum,sig,opt_pm_popup,opt_pm,opt_mail,geschlecht,spezrank FROM `prefix_user` WHERE id = "'.$_SESSION['authid'].'"';
    und den
    # statische felder speichern
    		  db_query("UPDATE prefix_user 
    			  SET 
              homepage = '".get_homepage(escape($_POST['homepage'], 'string'))."',
              esllink = '".get_homepage(escape($_POST['esllink'], 'string'))."',
              wohnort = '".escape($_POST['wohnort'], 'string')."',
              icq = '".escape($_POST['icq'], 'string')."',
              msn = '".escape($_POST['msn'], 'string')."',
              yahoo = '".escape($_POST['yahoo'], 'string')."',
              ".$avatar_sql_update."
              aim = '".escape($_POST['aim'], 'string')."',
              staat = '".escape($_POST['staat'], 'string')."',
              geschlecht = '".escape($_POST['geschlecht'], 'string')."',
              status = '".escape($_POST['status'], 'string')."',
              opt_mail = '".escape($_POST['opt_mail'], 'string')."',
              opt_pm = '".escape($_POST['opt_pm'], 'string')."',
              opt_pm_popup = '".escape($_POST['opt_pm_popup'], 'string')."',
              gebdatum = '".get_datum(escape($_POST['gebdatum'], 'string'))."',
              sig = '".substr(escape($_POST['sig'], 'string'),0,$allgAr['forum_max_sig'])."'
    				WHERE id = ".$_SESSION['authid']
          );
    ergänzt

    und in der Datenbank bei "ic1_profilefields" einen neuen Datensatz Namens "esllink" angelegt.
    Es Funktioniert aber nicht ich denke ich hab bestimmt was falsch gemacht oder noch was vergessen, könnte mir jemand helfen.
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Das ist eigentlich so nicht nötig, du legst einfach im Adminbereich ein neuen Profilfeld an, das nennst du meinetwegen esllink.
    Und dann gibts das Feld ja so wie du es brauchst, nun willst du aber nicht nur einfach den Link ausgegeben haben, wenn du das Profil eines Users ansiehst, also machst du eine Funktion in der profilfields.php
    function profilefields_show_spez_esllink ($value,$uid) {
      return ( profilefields_show_echo_standart ( 'Link zum ESL Profil', (empty($value)?'':'<a href="'.$value.'" target="_blank">'.$value.'</a>') ) );
    }


    Hab das zwar nicht getestet, aber eigentlich sollte es so gehen zwinker
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    SpeedyGonzales Mitglied
    Registriert seit
    24.10.2006
    Beiträge
    28
    Beitragswertungen
    0 Beitragspunkte
    Ich hab das mal so gemacht wie du es geschrieben hast aber so funktionierts auch nicht. Die URL wird im Profil angezeigt ist aber nicht verlinkt.
    Nur nochmal was ich machen will, ich will jedem User die Möglichkeit geben das er die URL zu seiner ESL Player Seite in sein Profil eingeben kann.
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Geht tatsächlich nicht grumml
    Aber das ist schnell nachgerüstet zwinker
    Einfach in der profilfields.php noch in der Funktion profilefields_show statt
    if ( $r['func'] == 1 ) {
          $str = @db_result ( db_query ("SELECT val FROM prefix_userfields WHERE uid = ".$uid." AND fid = ".$r['id']) , 0 );
    			$l .= '<tr><td class="Cmite">'.$r['show'].'</td><td class="Cnorm">'.$str.'</td></tr>';
        } elseif ( $r['func'] == 2 ) {
    folgenden Code verwenden
    if ( $r['func'] == 1 ) {
          $str = @db_result ( db_query ("SELECT val FROM prefix_userfields WHERE uid = ".$uid." AND fid = ".$r['id']) , 0 );
    			if ( function_exists ( 'profilefields_show_spez_'.$r['show'] ) ) {
            $l .= call_user_func ( 'profilefields_show_spez_'.$r['show'], $str, $uid );
          } else {
          $l .= '<tr><td class="Cmite">'.$r['show'].'</td><td class="Cnorm">'.$str.'</td></tr>';
          }
        } elseif ( $r['func'] == 2 ) {
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    SpeedyGonzales Mitglied
    Registriert seit
    24.10.2006
    Beiträge
    28
    Beitragswertungen
    0 Beitragspunkte
    Danke Mairu es Funktioniert Yes jetzt noch eine Kleinigkeit gibt es eine möglichkeit das in diesem Feld schon das "http://" drin steht wenn man sein Profil bearbeitet, denn ohne funktionierts nicht.
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Ne aber man könnte es auch so machen, das trotzdem der richtige Link kommt zwinker
    function profilefields_show_spez_esllink ($value,$uid) {
      return ( profilefields_show_echo_standart ( 'Link zum ESL Profil', (empty($value)?'':'<a href="'.((substr($value,0,7) == 'http://' ? '':'http://').$value.'" target="_blank">'.$value.'</a>') ) );
    }
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    SpeedyGonzales Mitglied
    Registriert seit
    24.10.2006
    Beiträge
    28
    Beitragswertungen
    0 Beitragspunkte
    Ich habe heute Profiledit 1.0 installiert was auch soweit funktioniert nur hab ich jetzt wieder ein Problem mit den Links im Profilfeld. Der Link z.B. zum ESLTeamProfil wird zwar angezeigt aber nicht im Profilfeld sondern über dem Profil.
    Hier zu sehen: dmkcrew.dm.funpic.de/index.php?user-details-1-40

    Hab schon einiges probiert bekomms aber nicht hin.
    Hier der Code meiner "profilfields.php":
    <?php 
    #   Copyright by Manuel
    #   Support www.ilch.de
    
    
    defined ('main') or die ( 'no direct access' );
    
    function profilefields_functions2 () {
      $ar = array (
              1 => 'Feld',
                    2 => 'Kategorie'
            );
            return ($ar);
    }
    
    function profilefields_functions () {
      $ar = array (
              1 => 'Feld',
                    2 => 'Kategorie',
                    3 => 'Angezeigt',
                    4 => 'Versteckt'
            );
            return ($ar);
    }
    
    
    # Felder zum aendern anzeigen.
    function profilefields_change ($uid) {
      $i = 0;
      $i1 = 1;
      $test = false;
      $q = db_query("SELECT id, `show`, val, func FROM prefix_profilefields LEFT JOIN prefix_userfields ON prefix_userfields.fid = prefix_profilefields.id AND prefix_userfields.uid = ".$uid." WHERE func != 3 ORDER BY pos  ASC");
      while ( $r = db_fetch_assoc($q)) {
              $check[$i1] = $r;
              if($i){
                      if($check[$i]['func'] == 1){echo '<label style="float:left; width:40%;">'.$check[$i]['show'].'</label><input type="text" name="profilefields['.$check[$i]['id'].']" value="'.$check[$i]['val'].'"><br />';}
                      if($check[$i]['func'] == 2){
                              if($check[$i1]['func'] == 1){
                                      if($test){
                                                echo '</fieldset>';
                                      }else{$test = true;}
                                      echo '<fieldset><legend>'.$check[$i]['show'].'</legend> <br />';
                              }
                      }
              }
              $i++;
              $i1++;
      }
      if($check[$i]['func'] == 1){echo '<label style="float:left; width:40%;">'.$check[$i]['show'].'</label><input type="text" name="profilefields['.$check[$i]['id'].']" value="'.$check[$i]['val'].'"><br />';}
    
    }
    
    # Felder die uebermittelt wurden speichern.
    function profilefields_change_save ($uid) {
    
      $q = db_query("SELECT id, `show`, val FROM prefix_profilefields LEFT JOIN prefix_userfields ON prefix_userfields.fid = prefix_profilefields.id AND prefix_userfields.uid = ".$uid." WHERE func = 1 ORDER BY pos");
      while ( $r = db_fetch_assoc($q)) {
        if ( isset($_REQUEST['profilefields'][$r['id']]) ) { $v = $_REQUEST['profilefields'][$r['id']]; } else { $v = ''; }
        if ( $r['val'] == '' AND $v != '' ) {
          db_query("INSERT INTO prefix_userfields (fid,uid,val) VALUES (".$r['id'].",".$uid.",'".$v."')");
        } elseif ( $r['val'] != '' AND $v == '' ) {
                db_query("DELETE FROM prefix_userfields WHERE fid = ".$r['id']." AND uid = ".$uid);
              } elseif ( $r['val'] != '' AND $v != '' AND $r['val'] != $v ) {
                db_query("UPDATE prefix_userfields SET val = '".$v."' WHERE fid = ".$r['id']." AND uid = ".$uid);
              }
      }
    }
    
    # Diese Funktion Zeigt ALLE Felder die der Benutzer im Adminbereich unter
    # Profilefields sortieren kann an ... is eigentlich total easy ;-)...
    function profilefields_show ($uid, $posmind, $posmax, $breite = 70) {
      if($posmax < $posmind){
      return 'Error: falsche werte in den vars $postmind und $postmax!';
      }
      global $allgAr;
      $zelle =  '<td width="'.$breite.'%"';
      $l = '';
      $a = array ();
      $q = db_query("SHOW COLUMNS FROM prefix_user");
      while ($r = db_fetch_assoc($q)) {
        $a[$r['Field']] = $r['Field']; 
      }
      
      $q = db_query("SELECT id, `show`, func, pos FROM prefix_profilefields WHERE func < 4 AND pos >".$posmind." AND pos <".$posmax." ORDER BY pos ASC") OR die('verdammter mist1');
      while ( $r = db_fetch_assoc($q)) {
        if ( $r['func'] == 1 ) {
          $str = @db_result ( db_query ("SELECT val FROM prefix_userfields WHERE uid = ".$uid." AND fid = ".$r['id']) , 0 );
            if ( function_exists ( 'profilefields_show_spez_'.$r['show'] ) ) { 
            $l .= call_user_func ( 'profilefields_show_spez_'.$r['show'], $str, $uid ); 
          } else {
          $l .= '<tr><td width="30%" class="Cmite">'.$r['show'].'</td>'.$zelle.' class="Cnorm">'.$str.'</td></tr>'."\n";
          }
              } elseif ( $r['func'] == 2 ) {
          return 'Achtung: in der funktion profilefields_show in der datei Profilfields.php ist ein fehler aufgetreten. <br> Fehler = Es wurde ein Menutitel angefordert, was aber nicht passieren sollte.';
        } elseif ( $r['func'] == 3 ) {
          $str = '';
          if (isset($a[$r['show']])) {
            $str = @db_result ( db_query ("SELECT `".$r['show']."` FROM prefix_user WHERE id = ".$uid) , 0 );
          }
          if ( function_exists ( 'profilefields_show_spez_'.$r['show'] ) ) {
            $l .= call_user_func ( 'profilefields_show_spez_'.$r['show'], $str, $uid, $zelle);
          } elseif ($r['show'] != 'opt_pm_popup') {
            $l .= '<tr><td width="30%" class="Cmite">'.ucfirst($r['show']).'</td>'.$zelle.' class="Cnorm">'.$str.'</td></tr>'."\n";
          }
        }
      }
      return ( $l );
    }
    
    # hier kommen die speziellen funktionen hin...
    ##
    ###
    function profilefields_show_spez_geschlecht ($value,$uid,$colspan) {
      global $lang;
      $ar = array ( 0 => $lang['itdoesntmatter'], 1 => $lang['male'], 2 => $lang['female'] );
      return ( profilefields_show_echo_standart ( $lang['sex'], $ar[$value] , $colspan) );
    }
    function profilefields_show_spez_status ($value,$uid,$colspan) {
      global $lang;
      return ( profilefields_show_echo_standart ( $lang['status'], ($value?'aktiv':'inaktiv'), $colspan) );
    }
    function profilefields_show_spez_usergallery ($value,$uid,$colspan) {
      global $allgAr, $lang;
      if ($allgAr['forum_usergallery'] == 1) {
        return ( profilefields_show_echo_standart ( 'Usergallery', '<a href="index.php?user-usergallery-'.$uid.'">ansehen</a>', $colspan) );
      }
    }
    function profilefields_show_spez_homepage ($value,$uid,$colspan) {
      global $lang;
      return ( profilefields_show_echo_standart ( $lang['homepage'], (empty($value)?'':'<a href="'.$value.'" target="_blank">'.$value.'</a>'), $colspan) );
    }
    function profilefields_show_spez_ESLTeamLink ($value,$uid) {
      return ( profilefields_show_echo_standart ( 'ESL Team Link', (empty($value)?'':'<a href="'.$value.'" target="_blank">'.$value.'</a>') ) ); 
    }
    function profilefields_show_spez_opt_mail ($value,$uid,$colspan) {
      global $lang;
      return ( profilefields_show_echo_standart ( $lang['mail'], ($value?'<a href="index.php?user-mail-'.$uid.'">'.$lang['send'].'</a>':''), $colspan) );
    }
    function profilefields_show_spez_opt_pm ($value,$uid,$colspan) {
      global $lang;
      return ( profilefields_show_echo_standart ( $lang['privatemessages'], ($value?'<a href="index.php?forum-privmsg-new=0&amp;empfid='.$uid.'">'.$lang['send'].'</a>':''), $colspan) );
    }
    function profilefields_show_spez_sig ($value,$uid,$colspan) {
      global $lang;
      return ( profilefields_show_echo_standart ( $lang['signature'], bbcode($value),$colspan) );
    }
    function profilefields_show_spez_staat ($value,$uid,$colspan) {
      global $lang;
      return ( profilefields_show_echo_standart ( $lang['state'], ((!empty($value) AND file_exists('include/images/flags/'.$value))?'<img src="include/images/flags/'.$value.'" alt="'.$value.'" title="'.$value.'" />':''), $colspan) );
    }
    function profilefields_show_spez_wohnort ($value,$uid,$colspan) {
      $mapcname=@db_result ( db_query ("SELECT `cname` FROM prefix_map WHERE uid = ".$uid) , 0 );
      if(!empty($mapcname)){$value.=($value=='' ? $mapcname :'').'&nbsp;<a href="?map-uid-'.$uid.'">Karte</a>';}
      return ( profilefields_show_echo_standart ( 'Wohnort', $value, $colspan ) );
    }
    ###
    ##
    # help funcs
    function get_nationality_array () {
      $ar = array();
            $o = opendir ( 'include/images/flags' );
            while ( $f = readdir ( $o ) ) {
              if ( $f != '.' AND $f != '..' ) {
                      $ar[$f] = $f;
                    }
            }
            return ( $ar );
    }
    
    function profilefields_show_echo_standart ( $k, $v, $colspan ) {
      return ( '<tr><td width="30%" class="Cmite">'.$k.'</td>'.$colspan.' class="Cnorm">'.$v.'</td></tr>'."\n" );
    }
    ?>
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Auf jeden Fall müsste noch , $zelle mit rein, wie bei $l .= call_user_func ( 'profilefields_show_spez_'.$r['show'], $str, $uid, $zelle); zu sehen ist.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    SpeedyGonzales Mitglied
    Registriert seit
    24.10.2006
    Beiträge
    28
    Beitragswertungen
    0 Beitragspunkte
    Ups hab ich übersehen danke jetzt funktionierts wieder.
    0 Mitglieder finden den Beitrag gut.
  12. #12
    User Pic
    Ron Mitglied
    Registriert seit
    24.08.2006
    Beiträge
    45
    Beitragswertungen
    0 Beitragspunkte
    ZitatZitat geschrieben von Mairu

    Ne aber man könnte es auch so machen, das trotzdem der richtige Link kommt zwinker
    function profilefields_show_spez_esllink ($value,$uid) {
      return ( profilefields_show_echo_standart ( 'Link zum ESL Profil', (empty($value)?'':'<a href="'.((substr($value,0,7) == 'http://' ? '':'http://').$value.'" target="_blank">'.$value.'</a>') ) );
    }



    Wenn ich das so einfüge bekomm ich folgende Fehlermeldung:
    Parse error: syntax error, unexpected ';' in E:\xampp\htdocs\include\includes\func\profilefields.php on line 122

    kann die Stelle mit dem Komma nicht finden.

    Gruß Ron
    0 Mitglieder finden den Beitrag gut.
  13. #13
    User Pic
    freak Mitglied
    Registriert seit
    31.01.2007
    Beiträge
    856
    Beitragswertungen
    0 Beitragspunkte
    das were in der profil_edit.php
    zeile 19
    	$abf = 'SELECT email,esllink,wohnort,homepage,aim,msn,icq,yahoo,avatar,status,staat,gebdatum,sig,opt_pm_popup,opt_pm,opt_mail,geschlecht,spezrank FROM `prefix_user` WHERE id = "'.$_SESSION['authid'].'"';



    in zeile 131 ne zeile hinzufügen mit
    esllink= '".get_homepage(escape($_POST['esllink'], 'string'))."',


    das wars glaube ich, das template kannste selber machen??

    wenn nicht dann mach ichs dir au noch

    und in der db schon noch nen eintrag hinzufügen mit
    esllink :-)


    [EDIT]

    ohh übersehen das mairu schon ne lösung hat :-P


    Zuletzt modifiziert von freak am 10.03.2008 - 19:26:01
    0 Mitglieder finden den Beitrag gut.
  14. #14
    User Pic
    Ron Mitglied
    Registriert seit
    24.08.2006
    Beiträge
    45
    Beitragswertungen
    0 Beitragspunkte
    Mairu seine Lösung geht ja, auser wenn ich versuche das das schon da stehen soll, da bekomm ich die Fehlermeldung.
    0 Mitglieder finden den Beitrag gut.
  15. #15
    User Pic
    realmac Mitglied
    Registriert seit
    08.05.2009
    Beiträge
    128
    Beitragswertungen
    1 Beitragspunkte
    hallo hier habe ich das problem das bei mir garnichts im profielfields php von den zeilen die oben gepostet wurden drinnen stehen ich hab adobe dreamweaver und der hat ja die funktion das er was finden kann und direkt mit einen text ersetzen kann.... aber des steht in meinem script angeblich nicht drinnen traurig
    Learning by Doing
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Allgemein

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten