ilch Forum » Ilch Clan 1.1 » Fehlersuche und Probleme » Bewertungssystem Ergebnis mit Farben.

Geschlossen
  1. #1
    User Pic
    wiskyjim Mitglied
    Registriert seit
    29.03.2009
    Beiträge
    96
    Beitragswertungen
    0 Beitragspunkte
    Hi ich möchte bei meiner downloads.php das Ergebnis vom Bewertungssystem in verschiedene Farben ausgeben lassen.

    z.B.
    1 = rot
    5 = gelb
    10 = grün

    Ich habe mal einen Schnipsel geschrieben, habe aber keine Idee ob dieser funktionstüchtig ist und überhaupt wo dieser eigendlich reingeschrieben werden muss.

    if ( $row['vote_wertung'] > 0) {	
    	echo '<td><font color="558800">'.$row['vote_wertung'].'</font></td>' ;
    	} elseif ($row['vote_wertung'] > 1) {
    	echo '<td><font color="FF3300">'.$row['vote_wertung'].'</font></td>' ;
    	}
    ...
    Ilch: 1.1 I
    Homepage:externer Link
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    oink Mitglied
    Registriert seit
    23.09.2010
    Beiträge
    740
    Beitragswertungen
    227 Beitragspunkte
    na so nicht junge

    50 springt in die erste condition obwohl du wahrscheinlich denkst 50 ist ja mehr >1.

    definiere von bis werte

    if $wert > x & $wert < y so das du auch conditions für cases zwischen bewertungen von 13 - 28 machen kannst
    before creation there must be destruction
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    wiskyjim Mitglied
    Registriert seit
    29.03.2009
    Beiträge
    96
    Beitragswertungen
    0 Beitragspunkte
    Verstehe ich jetzt nicht ganz mit deinem 50er beispiel.
    vote_wertung kann doch min-wert=1 und max-wert=10 haben, da doch die gesamtpunktezahl durch die anzahlt der vote_klicks geteilt wird.

    Oder bin ich auf den Holzweg unterwegs? zwinker
    Ilch: 1.1 I
    Homepage:externer Link
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    oink Mitglied
    Registriert seit
    23.09.2010
    Beiträge
    740
    Beitragswertungen
    227 Beitragspunkte
    x = 5

    if x>0 then bla
    else if x>1 then blu


    dadurch das du verknüpfte bedingungen hast (if else if) und wahrscheinlich jedes ding mit einem vote n punkt hat wird dir dennoch jedes ding mit beliebiger anzahl punkte in die erste condition (bla) laufen.

    gecheckt?
    before creation there must be destruction
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Tr3icio gelöschter User
    Du prüfst erst ob der Wer größer als 0 ist. Alle Bewertungen von 1 bis 10 sind größer was heißt, dass sobald eine Bewertung abgegeben wurde immer

    if ( $row['vote_wertung'] > 0) { 
        echo '<td><font color="558800">'.$row['vote_wertung'].'</font></td>' ;
    }


    ausgeführt wird.
    Das Skript prüft erst den IF-Block. Wenn dieser aber FALSE als Ergebnis der Abfrage bekommt, so kann der Wert auch nicht größer als 1 sein. Nun wird der Bock mit dem ELSEIF ausgeführt. Logischerweise ist es wieder FALSE.

    Du suchst nach folgendem:

    if ( $row['vote_wertung'] == 10 ) { 
        echo '<td><font color="558800">'.$row['vote_wertung'].'</font></td>' ;
    } elseif ( $row['vote_wertung'] >= 5 ) { 
        echo '<td><font color="558800">'.$row['vote_wertung'].'</font></td>' ;
    } else {
        echo '<td><font color="558800">'.$row['vote_wertung'].'</font></td>' ;
    }


    Wenn der Wert 10 ist wird der erste Block ausgeführt. Falls er es nicht ist, wird geprüft ob der Wert 5 oder größer ist ( 5 bis 9, da bei 10 ja der erste Block ausgeführt werden würde ) und falls dies nicht zutrift, wird einfach der ELSE-Block ausgeführt, da kein anderer Block ausgeführt wurde.
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    oink Mitglied
    Registriert seit
    23.09.2010
    Beiträge
    740
    Beitragswertungen
    227 Beitragspunkte
    dein beispiel ist aber kaputt da alle scores dieselbe farbe haben lachen

    geiler ist btw noch in den conditions einfach nur die color zu setzen und den string mit speifisch gesetzter color nach den conditions auszugeben, so haste nur ein echo
    before creation there must be destruction
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    Tr3icio gelöschter User
    Das es immer die selbe Farbe ist weiß ich xD Kenne ich die gewünschten Farbcodes?^^
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    wiskyjim Mitglied
    Registriert seit
    29.03.2009
    Beiträge
    96
    Beitragswertungen
    0 Beitragspunkte
    Vielen Dank! Dann war ich ja doch nicht so verkehrt unterwegs.

    @oink
    Das mit den conditions ist ganz gut jedoch hat deine Beschreibung mich anfangs ein wenig iritiert, da ich noch nicht sehr gewand in php bin.

    Eine Sache wäre da noch.
    Wo baue ich den Schnipsel nun ein?

    original downloads.php Zeile 208-217
    $fid = escape($menu->get(2), 'integer');
        $erg = db_query("SELECT xic_downloads.cat,ssurl,surl,url,hits,vote_klicks,vote_wertung,xic_downloads.name,version,creater,downs,descl,xic_downloads.id,DATE_FORMAT(time,'%d.%m.%Y') as datum FROM xic_downloads LEFT JOIN xic_downcats ON xic_downcats.id = xic_downloads.cat WHERE xic_downloads.id = ".$fid." AND (".$_SESSION['authright']." <= xic_downcats.recht OR (xic_downloads.cat = 0 AND xic_downcats.recht IS NULL))");    
        if (@db_num_rows($erg) <> 1) {
          $title = $allgAr['title'].' :: Downloads ';
          $hmenu = '<a class="smalfont" href="?downloads">Downloads</a>';
          $design = new design ( $title , $hmenu );
          $design->header();
          echo 'Der Download wurde nicht gefunden';
          $design->footer(1);
        }

    mit Schnipsel
    $fid = escape($menu->get(2), 'integer');
        $erg = db_query("SELECT xic_downloads.cat,ssurl,surl,url,hits,vote_klicks,vote_wertung,xic_downloads.name,version,creater,downs,descl,xic_downloads.id,DATE_FORMAT(time,'%d.%m.%Y') as datum FROM xic_downloads LEFT JOIN xic_downcats ON xic_downcats.id = xic_downloads.cat WHERE xic_downloads.id = ".$fid." AND (".$_SESSION['authright']." <= xic_downcats.recht OR (xic_downloads.cat = 0 AND xic_downcats.recht IS NULL))");    
        if ( $row['vote_wertung'] == 10 ) {
        echo '<td><font color="00FF00">'.$row['vote_wertung'].'</font></td>' ;
    	} elseif ( $row['vote_wertung'] >= 5 ) {
        echo '<td><font color="FFDD00">'.$row['vote_wertung'].'</font></td>' ;
    	} else {
        echo '<td><font color="FF0000">'.$row['vote_wertung'].'</font></td>' ;
    	}
    	if (@db_num_rows($erg) <> 1) {
          $title = $allgAr['title'].' :: Downloads ';
          $hmenu = '<a class="smalfont" href="?downloads">Downloads</a>';
          $design = new design ( $title , $hmenu );
          $design->header();
          echo 'Der Download wurde nicht gefunden';
          $design->footer(1);
        }
    Ilch: 1.1 I
    Homepage:externer Link
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    wiskyjim Mitglied
    Registriert seit
    29.03.2009
    Beiträge
    96
    Beitragswertungen
    0 Beitragspunkte
    Sry für Doppel-post.

    Habs fast hinbekommen. Meine Lösung Zeile 251-253
    $tpl = new tpl ('downloads_show' );
    		$row['ssurl'] = ( $row['ssurl'] != '' ? '<img src="'.$row['ssurl'].'" alt="'.$row['name'].' '.$row['version'].'" title="'.$row['name'].' '.$row['version'].'" style="float:left; border: none; padding-right:5px;" />' : '' );
        $row['surl']  = ( empty($row['surl']) ? '' : '&nbsp;&nbsp;&nbsp; <a href="'.$row['surl'].'" target="_blank">Demo/Screenshot</a>' );

    Ich habe folgendes in Zeile 252 eingefügt:
    $tpl = new tpl ('downloads_show' );
    		$row['ssurl'] = ( $row['ssurl'] != '' ? '<img src="'.$row['ssurl'].'" alt="'.$row['name'].' '.$row['version'].'" title="'.$row['name'].' '.$row['version'].'" style="float:left; border: none; padding-right:5px;" />' : '' );
    		
    		if ( !empty($row['vote_wertung']) ){
    	    $row['vote_wertung'] = ( $row['vote_wertung'] == 10 ? '<font color="00FF00">'.$row['vote_wertung'].'</font>' : '' );	
    		} elseif ( !empty($row['vote_wertung']) ) {
    		$row['vote_wertung'] = ( $row['vote_wertung'] >= 5 ? '<font color="FFDD00">'.$row['vote_wertung'].'</font>' : '' );
    		} else {
    		$row['vote_wertung'] = ( $row['vote_wertung'] <= 0 ? '<font color="FF0000">'.$row['vote_wertung'].'</font>' : '' );
    		}
    		
    		$row['surl']  = ( empty($row['surl']) ? '' : '&nbsp;&nbsp;&nbsp; <a href="'.$row['surl'].'" target="_blank">Demo/Screenshot</a>' );

    Wert 10 = grün - wird angezeigt
    Werte 9-5 = gelb - jetzt kommt keine Zahl mehr
    Werte 5-0 = rot - jetzt kommt keine Zahl mehr

    Jetzt steh ich schon wieder auf'n Schlauch zwinker


    edit: Hab bei "elseif" die ein und selbe Bedingung angegeben wie bei "if" dadurch wurden mir die Werte nicht angezeigt. Habe es nun so abgeändert:
    $tpl = new tpl ('downloads_show' );
    		$row['ssurl'] = ( $row['ssurl'] != '' ? '<img src="'.$row['ssurl'].'" alt="'.$row['name'].' '.$row['version'].'" title="'.$row['name'].' '.$row['version'].'" style="float:left; border: none; padding-right:5px;" />' : '' );
    		
    		if ( $row['vote_wertung'] == 10 ) {
    	    $row['vote_wertung'] = ( $row['vote_wertung'] != '' ? '<font color="00FF00">'.$row['vote_wertung'].'</font>' : '' );	
    		} elseif ( $row['vote_wertung'] >=5 ) {
    		$row['vote_wertung'] = ( $row['vote_wertung'] != '' ? '<font color="FFDD00">'.$row['vote_wertung'].'</font>' : '' );
    		} else {
    		$row['vote_wertung'] = ( $row['vote_wertung'] != '' ? '<font color="FF0000">'.$row['vote_wertung'].'</font>' : '' );
    		}
    		
    		$row['surl']  = ( empty($row['surl']) ? '' : '&nbsp;&nbsp;&nbsp; <a href="'.$row['surl'].'" target="_blank">Demo/Screenshot</a>' );



    Zuletzt modifiziert von wiskyjim am 24.11.2011 - 01:48:42
    Ilch: 1.1 I
    Homepage:externer Link
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    Tr3icio gelöschter User
    Du prüfst erst ob der Wert 10 ist und dann ob er leer ist? Unnötig :-P Wenn der Wert == 10 ist kann es nicht leer sein xD

    Mach vor die if-Abfrage einfach ein:

    $row['vote_wertung'] = isset($row['vote_wertung']) && !empty($row['vote_wertung']) ? $row['vote_wertung'] : 0;


    Edit: Sry ausversehen neu gepostet anstatt zu editieren xD


    Zuletzt modifiziert von Tr3icio am 24.11.2011 - 13:43:45
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Fehlersuche und Probleme

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten