ilch Forum » Ilch Clan 1.1 » Fehlersuche und Probleme » Award ausgabe in den Userdeatails

Geschlossen
  1. #61
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.675
    Beitragswertungen
    1212 Beitragspunkte
    Also irgendwas macht er falsch! In seinem Quelltext ist nach jeder Bildausgabe ein Umbruch <br> gesetzt! Dieser taucht aber nicht in meinem geposteten Code auf! Profil_az1 ist mit width:100px gesetzt!
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  2. #62
    User Pic
    MagistYata Mitglied
    Registriert seit
    22.12.2007
    Beiträge
    861
    Beitragswertungen
    6 Beitragspunkte
    Morgen Leute,
    ich muss wohl mal mein Gehirn durch einen Aktivator laufen lassen.
    Ich habe das ganze Zeug nun nochmal neu angefangen.
    in profilfields.php folgendes eingefügt:
    function profilefields_show_spez_az1($value, $uid) {
    $output = '';    
    $sql = db_query("SELECT a.platz, a.text, a.wofur, a.team, a.bild, DATE_FORMAT(a.`time`, '%d.%m.%Y') AS time FROM `prefix_az1` a INNER JOIN prefix_user b ON a.team = b.name WHERE b.id = $uid ORDER BY `time` DESC");
        while($row = db_fetch_assoc($sql) ) {
            $output .= '<div>'.(!empty($row['bild']) ? '<img src="'.$row['bild'].'" [u]alt="'.$row['wofur'].'" title="'.$row['wofur'].'"/>' : $row['wofur']).'<br /><font class="smalfont">'.$row['time'].'</font></div>';[/u]
        }
        $output = '<div id="profil_az1">'.$output.'</div>';
        return profilefields_show_echo_standart( 'Auszeichnungen', $output);
    }

    Das ganze wofür und Time Zeug würde ich gar nicht benötigen, aber wenn ich es herauslösche erhalte ich immer Fehlermeldungen.

    In der style.css habe ich folgendes eingefügt:
    #profil_az1 div {float:left; margin: 0px 2px;}
    .profil_az1 {width:100px;}

    Das mit :<span class="profil_az1"><img ...><img ...>...</span>
    habe ich nicht in die style.css geschrieben, da wir über 60 kleine Grafiken haben, und diese sich in naher Zukunft noch vermehren werden.
    Im übrigen wüsste ich gar nicht, was ich nach img ... schreiben müsste. Wahrscheinlich den Pfad zur Grafik.

    in der userdetails.php habe ich folgenden Code (Teilstücke der userdetail):
    $erg10 = db_query("SELECT platz, text, wofur, team, bild, DATE_FORMAT(time, '%d.%m.%Y') as time FROM `prefix_az1` WHERE team = BINARY '{$row['name']}' ORDER BY time DESC");
    .
    .
    'AZ1'=>$row['az1'],


    Das Feld für die Datenbank wurde nach Mairus Anweisung erstellt und ist vorhanden.
    Die im AdminMenü erstellten Einträge werden in der Datenbank prefix_az1 gespeichert.
    In der userdetails.htm wurde {AZ1} eingefügt.
    Meine aktuelle userteails könnt ihr hier sehen:oskorei.de/index.php?user-details-122

    Wie ich schon weiter oben geschrieben habe, wäre es besser, wenn man die Auszeichnungen nicht in einem Profilfeld, sondern in einem extra Feld, so wie bei unseren Orden, ausgeben lassen kann.


    Zuletzt modifiziert von MagistYata am 26.10.2009 - 09:14:08
    Streß ist Lebensdiebstahl
    0 Mitglieder finden den Beitrag gut.
  3. #63
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Der Code für die CSS muss
    #profil_az1 {width:100px;}
    #profil_az1 div {float:left; margin: 0px 2px;}
    sein, ggf. bei der 2. Zeile noch eine feste Größe machen und die 100 muss breiter sein, das ist der gesamte Container und nicht nur für ein Bild gedacht, das wäre dann eben die 2. Zeile.

    Wenn du es in der Box darunter haben willst, musst du den Datenbankeintrag halt wieder entfernen.

    Kannst die funktion im Grunde aus der profilefields wieder rausnehmen, und leicht verändert in der user_details.php einfügen, halt dann so.

    function genAwards($uid) {
    $output = '';    
    $sql = db_query("SELECT a.platz, a.text, a.wofur, a.team, a.bild, DATE_FORMAT(a.`time`, '%d.%m.%Y') AS time FROM `prefix_az1` a INNER JOIN prefix_user b ON a.team = b.name WHERE b.id = $uid ORDER BY `time` DESC");
        while($row = db_fetch_assoc($sql) ) {
            $output .= '<div>'.(!empty($row['bild']) ? '<img src="'.$row['bild'].'" [u]alt="'.$row['wofur'].'" title="'.$row['wofur'].'"/>' : $row['wofur']).'<br /><font class="smalfont">'.$row['time'].'</font></div>';[/u]
        }
        $output = '<div id="profil_az1">'.$output.'</div>';
        return $output;
    }


    Wobei du dann halt weiter irgendwo in der user_details.php mit
    $tpl->set('awards', genAwards($uid));
    die Variable setzt und dann in dein Template mit {awards} einfügst.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  4. #64
    User Pic
    MagistYata Mitglied
    Registriert seit
    22.12.2007
    Beiträge
    861
    Beitragswertungen
    6 Beitragspunkte
    Voll geil das ganze. Vielen, vielen Dank Mairu. Jetzt ist es so, wie wir es haben wollten.
    Ich danke natürlich auch den Lord Schirmer für die Mithilfe.

    Nur noch ne kleine Bitte. Wie kann ich das finduser Dropdownmenü (das wo man mit * suchen muss) anstatt der Namenseingabe als Dauerhaft anzeigen. Also ohne das * zu benutzen.


    Zuletzt modifiziert von MagistYata am 26.10.2009 - 11:53:57
    Streß ist Lebensdiebstahl
    0 Mitglieder finden den Beitrag gut.
  5. #65
    User Pic
    Don Alex Mitglied
    Registriert seit
    29.04.2007
    Beiträge
    187
    Beitragswertungen
    0 Beitragspunkte
    ZitatZitat geschrieben von Mairu

    OK dann mal wieder auf ein neues, zuerst legt man in der Datenbank das Feld für die Userdetails an, dazu folgende SQL Anweisung mit phpmyadmin ausführen (SQL) und dabei prefix durch sein eigenes meist ic1 ersetzen (2mal).
    INSERT INTO prefix_profilefields (`show`, `pos`, `func`) SELECT 'awards', MAX(pos) + 1, 3 FROM prefix_profilefields;


    Und als Funktion wäre das dann eben
    function profilefields_show_spez_awards($value, $uid) {
    $output = '';	
    $sql = db_query("SELECT a.platz, a.text, a.wofur, a.team, a.bild, DATE_FORMAT(a.`time`, '%d.%m.%Y') AS time FROM `prefix_awards` a INNER JOIN prefix_user b ON a.team = b.name WHERE b.id = $uid ORDER BY `time` DESC");
        while($row = db_fetch_assoc($sql) ) {
    		$output .= (!empty($row['bild']) ? '<img src="'.$row['bild'].'" alt="'.$row['wofur'].'" title="'.$row['wofur'].'"/>' : $row['wofur']).'<br /><font class="smalfont">'.$row['time'].'</font><br />';
    	}
    	return profilefields_show_echo_standart( 'Awards', $output);
    }



    Zuletzt modifiziert von Mairu am 23.08.2008 - 12:43:16


    kann mir das einer vielleicht genauer erkläre hätte es auch so GERNE aber... iwie komm ich net kla.
    Weil ich so noch nie mit dieser SQL eintragung gearbeitet habe. Könnte mir evtl jemand eine schritt für schritt anleitung machen ich wäre UNENDLICH dankbar!
    0 Mitglieder finden den Beitrag gut.
  6. #66
    User Pic
    MagistYata Mitglied
    Registriert seit
    22.12.2007
    Beiträge
    861
    Beitragswertungen
    6 Beitragspunkte
    Zu 1.
    Dazu musst du in phpmyadmin gehen (in der Regel gibst Du hinter deinem Url www.deineseite.de/phpmyadmin ein. Es kann aber auch sein, dass Du es vor deinem Url eingeben musst. Am besten Du schaust dir deinen Webhoster mal an, dort findest Du auch den Zugang zur Datenbank=phpmyadmin) und dort unter SQL diesen Befehl eingeben.
    Achte aber darauf, dass Du anstatt prefix_profielfields ic1_profilfields verwendest (natürlich nur, wenn deine Datenbankeinträge ic1 als Bezeichnung haben.
    Dieser Befehel sorgt dafür, dass ein neues Profilfeld angelegt wird.

    Zu 2.
    Das hat Mairu in seinem letzten Post sehr gut dokumentiert und benötigt also keine weitere Erklärung.
    Streß ist Lebensdiebstahl
    0 Mitglieder finden den Beitrag gut.
  7. #67
    User Pic
    Don Alex Mitglied
    Registriert seit
    29.04.2007
    Beiträge
    187
    Beitragswertungen
    0 Beitragspunkte
    danke!


    also wäre mein code dann:

    INSERT INTO ic1_profilefields (`show`, `pos`, `func`) SELECT 'awards', MAX(pos) + 1, 3 FROM ic1_profilefields;


    ok

    und was mache ich mit diesen function code? dann bin ich fertig!

    habs, danke lächeln


    Zuletzt modifiziert von Don Alex am 31.12.2009 - 02:17:51
    0 Mitglieder finden den Beitrag gut.
  8. #68
    User Pic
    Don Alex Mitglied
    Registriert seit
    29.04.2007
    Beiträge
    187
    Beitragswertungen
    0 Beitragspunkte
    function profilefields_show_spez_awards($value, $uid) {
    $output = '';  
    $sql = db_query("SELECT a.platz, a.text, a.wofur, a.team, a.bild, DATE_FORMAT(a.`time`, '%d.%m.%Y') AS time FROM `prefix_awards` a INNER JOIN prefix_user b ON a.team = b.name WHERE b.id = $uid ORDER BY `time` DESC");
        while($row = db_fetch_assoc($sql) ) {
            $output .= (!empty($row['bild']) ? '<img src="'.$row['bild'].'" alt="'.$row['wofur'].'" title="'.$row['wofur'].'"/>' : $row['wofur']).'<br /><font class="smalfont">'.$row['time'].'</font><br />';
        }
        return profilefields_show_echo_standart( 'Awards', $output);
    }


    Kann mir Jemand den Code so abändern, das man neben Award-Bild und Datum, auch noch die Beschreibung sieht?
    0 Mitglieder finden den Beitrag gut.
  9. #69
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Die wird sogar schon mit abgefragt, du müsstest sie dann nur so ausgeben, wie du es halt haben willst, sie ist in der Variable $row['text'] hinterlegt.

    z.B.

    $output .= (!empty($row['bild']) ? '<img src="'.$row['bild'].'" alt="'.$row['wofur'].'" title="'.$row['wofur'].'"/>' : $row['wofur']).'<br /><font class="smalfont">'.$row['time'].'</font><br />'. $row['text'] . '<br />';


    Wie du es bei dir daneben bekommst, solltest du selbst mal versuchen herauszubekommen.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  10. #70
    User Pic
    MagistYata Mitglied
    Registriert seit
    22.12.2007
    Beiträge
    861
    Beitragswertungen
    6 Beitragspunkte
    Jetzt muss ich doch nochmal etwas fragen.

    Das ganze funktioniert ja bestens. Allerdings habe ich jetzt festgestellt, dass nichts in die prefix_user eingetragen wird, und sobald ein Member seinen Namen ändert, sind auch alle awards aus seinem Profil verschwunden.
    Ich müsste sie dann mühsam alle im Adminbereich auf den aktuellen Namen des Users ändern.
    Streß ist Lebensdiebstahl
    0 Mitglieder finden den Beitrag gut.
  11. #71
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Kannst auch mit einer simplen SQL Abfrage machen (phpmyadmin -> sql).

    UPDATE ic1_awards SET team = 'neuer Name' WHERE team = 'alter Name';
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  12. #72
    User Pic
    MagistYata Mitglied
    Registriert seit
    22.12.2007
    Beiträge
    861
    Beitragswertungen
    6 Beitragspunkte
    Danke Mairu das funzt. Habe gerade in unseem Adminbereich gesehen, dass die ganzen awards (vergeben wurden ca. 110 Stück) alle untereinander stehen.

    Da gibt es doch einen MPL Befehl, der dann immer nur 20 pro Seite anzeigt.

    Hier habe ich einmal den Code unserer Datei.
    <?php 
    #   Copyright by: Manuel Staechele
    #   Support: www.ilch.de
    
    
    defined ('main') or die ( 'no direct access' );
    defined ('admin') or die ( 'only admin access' );
    
    $design = new design ( 'Admins Area', 'Admins Area', 2 );
    $design->header();
    
    ##### F u n k t i o n e n
    
    function getteam () {
      
    	$squads = '';
      $erg1 = db_query("SELECT name, id FROM prefix_groups ORDER BY pos");
      while ($row = db_fetch_assoc($erg1) ) {
        $squads .= '<option>'.$row['name'].'</option>';
      }
    	return ($squads);
    	
    }
    
    ##### A k t i o n e n
    
    #Löschen
    if ($menu->getA(1) == 'd' AND is_numeric($menu->getE(1))) {
      db_query('DELETE FROM `prefix_az1` WHERE id = "'.$menu->getE(1).'" LIMIT 1');
      }
    
    #Eintragen
    if (isset($_POST['ins'])) {  
      $datum = get_datum ($_POST['datum']);
      $wofur = escape($_POST['wofur'], 'string');
      $text  = escape($_POST['text'], 'string');
      $platz = escape($_POST['platz'], 'string');
      $bild  = get_homepage(escape($_POST['bild'], 'string'));
      if ($_POST['atype'] == 'user') {
        $team = escape($_POST['name'],'string');
      } else {  
        $team = escape($_POST['team'],'string');
      }
          
      if ($menu->getA(1) == 'e' AND is_numeric($menu->getE(1))) {
        $id = $menu->getE(1);
        db_query("UPDATE `prefix_az1` SET time = '$datum', platz = '$platz',
                  team = '$team', wofur = '$wofur', bild = '$bild', text = '$text' WHERE id = $id");
        echo mysql_error();
        $menu->set_url(1,'');    
        }
      else {
        db_query("INSERT INTO `prefix_az1` (time, platz, team, wofur, bild, text) VALUES
        ('".$datum."', '".$platz."', '".$team."', '".$wofur."', '".$bild."', '".$text."')");
        }
      }
    
    #Ändern/Ausgabearray füllen
    if ($menu->getA(1) == 'e' AND is_numeric($menu->getE(1))) {
      $r = db_fetch_assoc(db_query("SELECT * FROM `prefix_az1` WHERE id = ".$menu->getE(1)));
      $r['id'] = '-e'.$r['id'];
      $t = explode('-',$r['time']);
      $r['datum'] = $t[2].'.'.$t[1].'.'.$t[0];
      }
    else {
      $r = array('id' => '', 'datum' => date('d.m.Y'), 'platz' => '', 'wofur' => '',
                 'bild' => '', 'text' => '', 'teams' => getteam());
      }
    
    #Ausgabe
    $tpl = new tpl('az1', 1);
    $tpl->set_ar_out($r,0);
    if (empty($r['team'])) $tpl->set_ar_out($r,1);
    else $tpl->set_ar_out($r,2);
    $tpl->set_ar_out($r,3);
    
    $erg = db_query('SELECT * FROM `prefix_az1` ORDER BY time DESC');
    while ($row = db_fetch_assoc($erg)) {
      $t = explode('-',$row['time']);
      $row['datum'] = $t[2].'.'.$t[1].'.'.$t[0];
      $tpl->set_ar_out($row,4); 
      }
    $tpl->out(5);
    
    $design->footer();
    ?>


    Ich weiß, dass man das it MPL machen kann. Nun habe ich mir den Code der user.php angeschaut, da steht folgendes drin:
    $limit = 15;  // Limit
        $page = ($menu->getA(1) == 'p' ? $menu->getE(1) : 1 );
        $MPL = db_make_sites ($page , "WHERE name LIKE '".$q."'" , $limit , '?user' , 'user' );
        $anfang = ($page - 1) * $limit;
        $class = '';
        $q = "SELECT name,recht,id,spezrank FROM `prefix_user` WHERE name LIKE '".$q."' ORDER by recht,posts DESC LIMIT ".$anfang.",".$limit;
        $erg = db_query($q);
        while ($row = db_fetch_object($erg)) {
    	    if ($class == 'Cmite') { $class = 'Cnorm'; } else { $class = 'Cmite'; }
        	$ar = array ( 'name' => $row->name,
            'class' => $class,
            'id' => $row->id,
            'grouplist' => user_get_group_list($row->id),
          	'recht' => dblistee($row->recht,"SELECT id,name FROM prefix_grundrechte ORDER BY id ASC"),
    		'spezrank' => '<option></option>'.dblistee($row->spezrank,"SELECT id,bez FROM prefix_ranks WHERE spez = 1"),
            'modslist' => user_get_mod_change_list($row->id),
        	);
    
    	    $tpl->set_ar_out($ar,1);
        }
        $tpl->set_out('MPL',$MPL,2);

    Ich bräuchte da bitte ein Tutorial, wie ich das machen kann.
    Streß ist Lebensdiebstahl
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Fehlersuche und Probleme

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten