Permalänk
Medlem

[PHP] - Kod till Nyhetsfunktion

Till att börja med, jag har inte den blekaste utifall någon har något som helst intresse för detta, men jag har otroligt tråkigt och har i brist på annat att göra så har jag satt mig och börjat koda om lite olika funktioner jag brukar ha på sidorna jag gör. Eftersom jag har med dem på nästan varje sida så börjar jag tröttna på att behöva skriva in dem varje gång, så tanken kom naturligtvis att göra dem så modulära det går Först ut vart nyhetsrapporteringen.

Baktanken med att posta det hela här är väl att någon kanske kan hjälpa till lite med att göra det hela bättre, och att någon kanske har någon nytta av det hela någon gång. Har sett att det efterfrågas lite då och då

Iallafall, för att förklara lite:
Hela uppbyggnaden av nyhetsvisningen ligger i en egen funktion, som sedan kan kallas var än man känner för det. När man kallar funktionen skickar man med de variabler som behövs för att sätta stilen på nyhetsrapporteringen, vilket gör det hela mycket enklare att flytta t.ex. mellan olika sidor utan att behöva koda om en massa inställningar. Var man lägger funktionen är ju valfritt, men jag har den i en extern fil som inkluderas redan i headern så att alla funktioner finns tillgängliga överallt.

Alla nyheter hämtas från en MySQL databas, där uppbyggnaden enbart kräver en tabell med fälten "title" "text" och "time", inte så farligt avancerat med andra ord.

Själva funktionen:

<?php // Newsfunction function news($amount, $width, $color, $border, $font, $padding, $margin, $table){ // Calculate the different widths $padsu = $padding[2]+$padding[4]; $borsu = $border[1]*2; $widsp = $width/2; $twid = $widsp - $padsu; $fwid = $width - $padsu; // Style the layers echo("<style type='text/css'>\n"); echo("<!--\n"); echo(" .news_container {\n"); echo(" background-color: " . $color[1] . ";\n"); echo(" width: " . $width . "px;\n"); echo(" margin: " . $margin[1] . "px " . $margin[2] . "px " . $margin[3] . "px " . $margin[4] . "px ;\n"); echo(" font-size: " . $font[1] . "px;"); echo(" color: " . $font[2] . ";"); echo(" font-family: " . $font[3] . ";"); echo(" }\n"); echo(" .news_title {\n"); echo(" background-color: " . $color[2] . ";\n"); echo(" width: " . $twid . "px;\n"); echo(" padding: " . $padding[1] . "px " . $padding[2] . "px " . $padding[3] . "px ". $padding[4] . "px ;\n"); echo(" overflow: hidden;\n"); echo(" float: left;\n"); echo(" text-align: left;\n"); echo(" }\n"); echo(" .news_time {\n"); echo(" background-color: " . $color[2] . ";\n"); echo(" width: " . $twid . "px;\n"); echo(" padding: " . $padding[1] . "px " . $padding[2] . "px " . $padding[3] . "px ". $padding[4] . "px ;\n"); echo(" overflow: hidden;\n"); echo(" float: left;\n"); echo(" text-align: right;\n"); echo(" }\n"); echo(" .news_frame {\n"); echo(" clear: both;\n"); echo(" background-color: " . $color[1] . ";\n"); echo(" width: " . $fwid . "px;\n"); echo(" padding: " . $padding[1] . "px " . ($padding[2]-$border[1]) . "px " . $padding[3] . "px ". ($padding[4]-$border[1]) . "px ;\n"); echo(" border: " . $border[1] . "px " . $border[2] . " " . $border[3] . ";\n"); echo(" text-align: left;\n"); echo(" }\n"); echo("-->\n"); echo("</style>\n"); // Get the information from the database $sql = mysql_query("SELECT title, text, time FROM $table ORDER BY time DESC LIMIT 0,$amount") or die(mysql_error()); // Output while($row = mysql_fetch_array($sql)){ $text = nl2br($row['text']); echo("<div class='news_container'>\n"); echo(" <div class='news_title'>\n"); echo(" <div>" . $row['title'] . "</div>\n"); echo(" </div>\n"); echo(" <div class='news_time'>\n"); echo(" <div>" . $row['time'] . "</div>\n"); echo(" </div>\n"); echo(" <div class='news_frame'>\n"); echo(" <div>" . $text . "</div>\n"); echo(" </div>\n"); echo("</div>\n"); } } ?>

Och själva användandet (Alla värden är plockade som exempel och kan ändras bäst man vill):

<?php // usage: // news($amount, $width, $color, $border, $font, $padding, $margin, $table) // $amount = Number of newsitems to display. // $width = The width of each newspost. // $color = Array with background and foreground colors. // $border = Array för setting the border for the news text. // $font = Array for setting the font size in px, color and style. // $padding & $margin = Settings for padding and margins, must be array. // $table = What table to get the news from. $color = array(1 => '#FFFFFF', '#C0C0CF'); $padding = array(1 => '2', '5', '1', '5'); $margin = array(1 => '5', '5', '5', '5'); $border = array(1 => '2', 'solid', '#C0C0CF'); $font = array(1 => '12', '#000000', 'Verdana'); news(2, 666, $color, $border, $font, $padding, $margin, 'news') ?>

Genom att kalla koden ovan får man alltså ut följande:

(O.B.S - Bilden vart lite grumlig då jag drog ner storleken för att den skulle passa in på forumet)

Jag håller på att jobba på att bygga om systemet för att lägga in/editera/ta bort nyheter också men det är inte riktigt klart än. I vilket fall, Håll till godo, Är det någon som har idéer om förbättringar så tackar jag och tar emot, och är det någon som vill använda det så är det bara att köra på (fast ett tack är ju aldrig fel )

Visa signatur

Xbox Live - Firaphex
Jag har inte alltid rätt, men jag utgår från det tills jag ser bevis på annat. Citera för svar
2008-06-18, Dagen då integriteten ställdes tå mot tå med maktmissbruket och förlorade.