» Forum » Clanscript » Allgemein » Link in Profilfeld
  Mitglieder   |   Gallery   |   FAQ's   |   Regeln

[ Anmelden zum schreiben ]

Link in Profilfeld
SpeedyGonzales
Mitglied
0 Beitragspunkte
Posts: 28

0 Mitglieder finden den Beitrag gut.

Merkliste 21.06.2007 - 14:30:21     Zitieren
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 ?
Mairu
Coder
128 Beitragspunkte
Posts: 12770

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 21.06.2007 - 14:40:15     Zitieren
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
SpeedyGonzales
Mitglied
0 Beitragspunkte
Posts: 28

0 Mitglieder finden den Beitrag gut.

Merkliste 21.06.2007 - 15:56:26     Zitieren
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.
Mairu
Coder
128 Beitragspunkte
Posts: 12770

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 21.06.2007 - 16:18:49     Zitieren
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
SpeedyGonzales
Mitglied
0 Beitragspunkte
Posts: 28

0 Mitglieder finden den Beitrag gut.

Merkliste 21.06.2007 - 19:36:07     Zitieren
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.
Mairu
Coder
128 Beitragspunkte
Posts: 12770

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 21.06.2007 - 19:52:56     Zitieren
Geht tatsächlich nicht Grummel
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
SpeedyGonzales
Mitglied
0 Beitragspunkte
Posts: 28

0 Mitglieder finden den Beitrag gut.

Merkliste 21.06.2007 - 21:12:04     Zitieren
Danke Mairu es Funktioniert jep 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.
Mairu
Coder
128 Beitragspunkte
Posts: 12770

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 21.06.2007 - 21:41:27     Zitieren
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
SpeedyGonzales
Mitglied
0 Beitragspunkte
Posts: 28

0 Mitglieder finden den Beitrag gut.

Merkliste 25.06.2007 - 16:10:26     Zitieren
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" );
}
?>
Mairu
Coder
128 Beitragspunkte
Posts: 12770

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 25.06.2007 - 16:52:36     Zitieren
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
SpeedyGonzales
Mitglied
0 Beitragspunkte
Posts: 28

0 Mitglieder finden den Beitrag gut.

Merkliste 25.06.2007 - 17:46:27     Zitieren
Ups hab ich übersehen danke jetzt funktionierts wieder.
Ron
Mitglied
0 Beitragspunkte
Posts: 45

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 10.03.2008 - 19:14:16     Zitieren
Zitat 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
freak
Mitglied
0 Beitragspunkte
Posts: 858

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 10.03.2008 - 19:25:03     Zitieren
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


www.sidemax.de
Ron
Mitglied
0 Beitragspunkte
Posts: 45

User Pic

0 Mitglieder finden den Beitrag gut.

Merkliste 12.03.2008 - 18:10:43     Zitieren
Mairu seine Lösung geht ja, auser wenn ich versuche das das schon da stehen soll, da bekomm ich die Fehlermeldung.
realmac
Mitglied
0 Beitragspunkte
Posts: 83

0 Mitglieder finden den Beitrag gut.

Merkliste 10.05.2009 - 13:28:50     Zitieren
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

[ Anmelden zum schreiben ]