[PHP,MySQL] Datumsformate

Bei Interaktionen von Datumsformaten zwischen PHP und MySQL kann man nicht ohne weiteres direkt aus der Datenbank auslesen und ausgeben. Genau das gleiche Problem gilt auch für die andere Richtung.
Während das Format „date“ und „datetime“ in MySQL fix sind, kann man in PHP bequem sich die Ausgabe des Datums aussuchen. Folgende Zeilen geben in PHP das für MySQL nötige Format aus:

$heute_datetime = date("Y-m-d H:i:s"); // Mit Uhrzeit
$heute_date = date("Y-m-d"); // Ohne Uhrzeit

Wird allerdings aus MySQL ausgelesen, muss man diesen Wert allerdings in das deutsche Format umwandeln:

$datum = explode("-",$wert_aus_db);
$datum = $datum[2].'.'.$datum[1].'.'.$datum[0]; // Nur Datum ohne Uhrzeit

Ich hoffe, ich konnte euch bei diesem Problem helfen.

Veröffentlicht in PHP. Schlagwörter: , , , . 1 Comment »

[PHP] Text mit nicht standard Font auf zum Teil transparentes Bild

Möchte man mal eine Schrift verwenden, die nicht standardmäßig in jedem Betriebssystem und/oder Browser integriert ist, kann man dies nicht ohne weiteres per CSS lösen.
Ich stand auch vor diesem Problem und musste feststellen, dass man einen Umweg machen muss, indem man ein Bild mit dieser Schriftart per PHP erstellen muss.

Damit dies überhaupt möglich ist, muss man sich die GD-Library herunterladen und installieren. Diese gibt es für Windows, Linux und Mac OS X.

Man startet dann damit, dass man sich in z.B. Gimp oder Photoshop ein transparentes Bild mit dem gewünschten Format erstellt und dann als PNG abspeichert. Dieses wird am besten in einem Unterordner „Bilder“ (um Ordnung zu halten) im Verzeichnis erstellt, wo sich die PHP-Datei befindet.

Um möglichst flexibel zu sein, ist es empfehlenswert sich hierfür eine eigene Funtion in einer eigenen PHP-Datei mit den nötigen Parametern (je nach Belieben) zu erstellen, z.B.:

function erzeugeTextAufBild($text, $fontsize)

Anschließend fügt man in dieser Funktion folgenden Code ein:

Header('Content-type: image/png');
$img = ImageCreateFromPNG("Pfad zum transparenten Bild");
$color = ImageColorAllocate($img, 255, 255, 255); //Farbe der Schrift
$ttf = "Pfad zur Schriftart"; //Schriftart
$ttfsize = $fontsize; //Schriftgroesse
$angle = 0;  // Winkel der Schrift
$t_x = 21; // Startpunkt x auf dem transparenten Bild
$t_y = 35;  // Startpunkt y auf dem transparenten Bild

imagealphablending($img, true); //  alphablending aktivieren
imagesavealpha($img, true); // alphablending settings speichern
imagettftext($img, $ttfsize, $angle, $t_x, $t_y, $color, $ttf, $text); // Text auf Bild packen
imagepng($img); // Bild erstellen
imagedestroy($img); // Der belegte Zwischenspeicher des Bildes wird wieder freigegeben

Das waren die wichtigsten Einstellungen, an einigen müsst ihr noch eine Feinjustierung vornehmen, z.B. $t_x und $t_y.

Tipps: Ich habe für diese Funktion eine eigene PHP-Datei (bild.php) erstellt, um damit flexibler agieren zu können (Meiner Meinung nach ist es sogar zwingend erforderlich, dies in einer eigenen Datei zu erledigen, da der Header der Datei auf PNG geändert wird). So kann man in der CSS-Datei eine Klasse für das Bild erstellen und per

background-image: url("./bild.php?bild=HalloWelt");

ansteuern. Vergesst an dieser Stelle nicht, die Größe per „width“ und „height“ entsprechend der Größe eures transparenten Bildes anzupassen.

In der bild.php würde dann am Anfang folgendes stehen:

$bild = '';
if ( isset($_POST['bild'])){
$bild = $_POST['bild'];
} else { $bild = $_GET['bild']; }

switch($bild){
case 'HalloWelt':
erzeugeTextAufBild("Hallo Welt", 45);
break;
}

Natürlich lassen sich noch beliebig viele Parameter ergänzen, aber dies dürfte für eine kleine Einführung reichen.

Bei Fragen und Anregungen, könnt ihr mir diese natürlich gerne per Kommentar mitteilen.

Veröffentlicht in PHP. Schlagwörter: , , , , , . Leave a Comment »

[MySQL,PHP] Probleme mit Umlauten

Beruflich entwickele ich zur Zeit ein Web-Projekt mit PHP, MySQL und ExtJS auf einem iMac mit MAMP, das Mac-Pendant zu XAMPP.

Hier habe ich ein interessantes Umlaute-Problem, welches ich nicht sofort lösen konnte.
Umlaute wurden erst nicht richtig vom JavaScript zur Serverseite (PHP) geschickt und anschließend kamen auch Umlaute nicht richtig vom DBMS MySQL zurück.

Die Lösung für dieses Problem ist allerdings eigenartig:

	mysql_query('set character set utf8;');

Dieser Code-Schnipsel muss nach dem mysql_connect() eingefügt werden und sorgt somit, dass wirklich auch immer per UTF8 übertragen bzw. erzwungen wird.

Weitere Möglichkeiten um Probleme mit Umlauten zu lösen:

header('content-type: text/html; charset=UTF-8');

(am Besten direkt am Anfang nach dem <? – Tag)

UND/ODER

<meta http-equiv=„Content-Type“ content=„text/html; charset=UTF-8″ />

(oben innerhalb des HEAD-Tags einer HTML/PHP-Seite einbinden)

Natürlich ist es auch empfehlenswert, die erstellten Dateien direkt im UTF8-Format abzuspeichern.
Notepad++, mein Favorit in einer Windows-Umgebung, kann das zum Beispiel sehr fix und ist kinderleicht einzustellen.

Weiterhin sehr hilfreich und manchmal sogar notwendig ist es besonders auch in JavaScript (nicht nur), wenn man Umlaute HTML-codiert ausgibt oder umschreibt.
Dazu hilft folgende Tabelle:

ä / Ä &auml; / &Auml;
ü / Ü &uuml; / &Uuml;
ö / Ö &ouml; / &Ouml;
ß &szlig;

Man sieht, es ist nicht schwer sich den Aufbau zu merken: Erst ein „&“ (Ampersand), dann vom Umlaut der normale Laut und danach ein „uml;“ .
Mehr Kodierungen gibt es bei SELFHTML.

Veröffentlicht in MySQL. Schlagwörter: , , . Leave a Comment »

Mein neuer Blog

Hallo,

dies ist mein neuer Blog, dieses Mal gezielt zu dem Thema „Webentwicklung“, wo ich einige interessante Themen vorstellen und praktische Tutorials veröffentlichen möchte.

Viel Spaß (und natürlich auch Erfolg)
maTTes

Veröffentlicht in Blog. Schlagwörter: . Leave a Comment »