Timestamp 2 Date

Dienstag, 12. August 2008

Diese kleine Funktion wird in allen Projekten immer wieder gebraucht und ist auch sicher für den Einen oder anderen von Euch interessant. Die Funktion konvertiert von dem typischen Datenbank Datumsformat (yyyy-mm-tt hh:mm:ss) in ein über "modus" auswählbares Format.

Wobei hier gilt:

mode = 1: nur Zeit (18:20)
mode = 2: nur Datum (02.06.2005)
mode = 3: komplett (18:20 2.6.05)
mode = 4: datum zurück (2005-06-02)

 
function  timestamp2date($timestamp, $mode){
 
 // mode = 1: nur Zeit (18:20)
 // mode = 2: nur Datum (02.06.2005)
 // mode = 3: komplett (18:20 2.6.05)
 // mode = 4: datum zurück (2005-06-02)
 
 // 0 1 2 3 4 5 6 7 8 9
 // t t . m m . j j j j
 
if ($mode == 1) {
     return( substr($timestamp,  11,  2)  .  ':'
     .  substr($timestamp,  14,  2) );
 
    }
 
if ($mode == 2) {
     return( substr($timestamp,  8,  2)  .  '.'
     .  substr($timestamp,  5,  2) . '.'
     . substr($timestamp,  0, 4) );
    }
 
if ($mode == 3) {
     return( substr($timestamp,  11,  2)  .  ':'
     .  substr($timestamp,  14,  2) . '  '
     .  substr($timestamp,  8,  2)  .  '.'
     .  substr($timestamp,  5,  2) . '.'
     . substr($timestamp,  2, 2) );
    }
 
if ($mode == 4) {
     return( substr($timestamp,  6,  4)  .  '-'
     .  substr($timestamp,  3,  2) . '-'
     . substr($timestamp,  0, 2) );
    }
 
}
 

TagCloud mit PHP

Dienstag, 6. November 2007

Tagclouds sind heutzutage auf (fast) jeder Seite zu finden. Zum Einen erhöhen Sie die Wahrscheinlichkeit bei google und Co eine gute Platzierung zu erreichen und zum Anderen erlauben sie dem Besucher schnell an bestimmte Themen zu kommen.
Hier ist nun ein Script für eine einfache Tagcloud, wie sie auch auf dieser Website zu finden ist.
Die ganze Geschichte benötigt lediglich eine Datenbank in der die Tags drin gespeichert sind. In diesem Beipiel sind sie durch ein einfaches Leerzeichen voneinander getrennt.

 
$res = mysql_query ("SELECT tags FROM your_database");
 
$num = mysql_num_rows ($res);
 
while ($row = mysql_fetch_array ($res)){
 
$data[] = $row['tags'].' ';}
$data = implode('',$data);
$words = explode(" ", $data);
$acv = array_count_values( $words );
$bannedwords = array('');
$i = 0;
$count = 0;
 
foreach($acv as $k=>$v) {
if (!array_search(strtolower($k),$bannedwords)
and eregi("[a-zA-Z]",$k) and $i<=40 and strlen($k)>2) {
 
if (isset($new_acv[strtolower($k)] ))
$new_acv[strtolower($k)] += $v;
 
else $new_acv[strtolower($k)] = $v;
 
$i++;
$count++;
}
}
 
ksort( $new_acv );
$i = 0;
 
foreach( $new_acv as $k=>$v) {
 
$size = ($v / $count )* 500; /*Dieser Wert kann
 
je nach Anzahl der Tags Variiert werden*/
$weight = $v*10;
$color = '#ccc';
if ($size >= 250) {$size = 250; $color = '#ff9900';}
if ($size <= 35) {$size = 40;}
$kurl = urlencode("$k");
if ($i < 20){
 
echo '<a href="index.php?req=search&amp;begriff='.$k.'"
style="border: 0px none ; float: left">'.$k.'</a>';
}
$i++;
}
 
?&gt;
 

XHTML im Browser überprüfen

Freitag, 12. Oktober 2007

XHTML hat den Vorteil, dass eine mit XHTML erstellte Web-Seite einfach auf ihre Gültigkeit überprüft, validiert, werden kann. Mit einem einfachen XML-Parser wird man zum Beispiel darauf hingewiesen, wenn man vergessen hat ein HTML-Tag zu schließen. XHTML im Browser überprüfen XHTML hat den Vorteil, dass eine mit XHTML erstellte Web-Seite einfach auf ihre Gültigkeit überprüft, validiert, werden kann. Mit einem einfachen XML-Parser wird man zum Beispiel darauf hingewiesen, wenn man vergessen hat ein HTML-Tag zu schließen.

<tr>
<td>asdf</td>
<td>muh<td> <!-- Fehler -->
</tr>

Wie man hier sieht, sind solche Fehler nicht immer leicht zu sehen. Hier könnte ein XML-Parser darauf hinweisen, dass das zweite TD-Tag nicht ordnungsgemäß geschlossen wurde. Wie brigen wir aber unseren Browser dazu, einen XML-Parser zu verwenden und uns unsere Fehler anzuzeigen? Die Lösung des Problems ist es, im HTTP-Header mitzuteilen, um was für ein Dokumenten-Typ es sich bei unserer Web-Seite handelt. Normalerweise ist dieser Dokument-Typ text/html. Für XHTML sollte application/xhtml+xml verwendet werden. Wir bedienen uns dazu PHP.

<?php
$charset = UTF-8;
header( 'Content-Type: application/xhtml+xml; charset=' . $charset );
echo '<?xml version=1.0 encoding=UTF-8?>';
?><!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Strict//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd>

Dieser Code am Anfang der PHP-Seite sorgt dafür, dass der Browser weis, dass es sich um XHTML handelt. Browser, wie Firefox und Opera, werden uns von nun an anzeigen, wenn unsere HTML-Seite fehlerhaft ist. Wenn einen anderen Zeichensatz als UTF-8 verwendet werden soll, müssen wir die Variable $charset entsprechend anpassen. Meistens verwendet man statt UTF-8 den Zeichensatz ISO-8559-1. Einen Haken hat die Sache allerdings noch. Der Internet-Explorer (zumindest in der Version 6) hat keinen Plan von XHTML. Wenn er den Dokument-Typ application/xhtml+xml sieht, weis er nicht, was er machen soll und bietet die Datei zum Download an, statt sie anzuzeigen. Wir müssen also überprüfen, ob unser Browser weis, was XHTML ist.

<?php
$charset = UTF-8; // Check if browser supports XHTML. IE does not!!!
$does_xhtml = stristr( $_SERVER['HTTP_ACCEPT'], 'application/xhtml+xml' );
if ($does_xhtml) {
header( 'Content-Type: application/xhtml+xml; charset=' . $charset );
} else {
header( 'Content-Type: text/html; charset=' . $charset );
}
echo '<?xml version=1.0 encoding=UTF-8?>';
?><!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Strict//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd>

Noch ein weiteres Problem taucht mit dem Internet Explorer auf. Wenn er am Anfang des Dokuments <?xml version=1.0 encoding=UTF-8?> findet, verfällt er in den Quirks-Modus. Dieser Modus ist normalerweise dazu gedacht, um Webseiten anzuzeigen, die nicht standard-konform sind. Das Problem dabei ist, dass der Internet Explorer, dann auch sein eigenes Box-Model verwendet. Das bedeutet, dass die Abstände in CSS-Style-Angaben falsch dargestellt werde. Also unser Layout nicht mehr richtig angezeit wird. Um das zu verhindern geben wir die erste Zeile nur aus, wenn wir sicher sind, dass unser Browser XHTML kann. Unsere Seite sieht nun also folgendermaßen aus.

<?php
$charset = UTF-8; // Check if browser supports XHTML. IE does not!!!
$does_xhtml = stristr( $_SERVER['HTTP_ACCEPT'], 'application/xhtml+xml' );
if ($does_xhtml) {
header( 'Content-Type: application/xhtml+xml; charset=' . $charset );
} else {
header( 'Content-Type: text/html; charset=' . $charset );
}
if ($does_xhtml) {
echo '<?xml version=1.0 encoding=UTF-8?>'
}
?><!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Strict//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd>
<html xmlns=http://www.w3.org/1999/xhtml xml:lang=en lang=en>
<head>
<title>Neue Seite</title>
</head>
<body> Text </body>
</html>

Mit diesem Grundgerüst und eine XHTML-Kompatieblen Browser, wie z.B. Firefox, kriegen wir die meisten Fehler die wir machen, angezeit, was die Qualität unseres HTML-Codes deutlich erhöht. Manche Fehler bleiben aber auch für den XML-Parser unentdeckt.