Skip to content

Aktuelle Artikel

1
Feb

Tabelle umbenennen

Wer kennt das Problem nicht. Man erstellt eine Tabelle und merkt im Nachhinein, dass eine andere Bezeichnung doch viel besser wäre.

Dazu gibt es folgenden Query:

ALTER TABLE 
	'old_table_name' 
RENAME 
	'new_table_name';
5
Nov

Opera Twitter-Widget: Twiget

1 Um was gehts?

Bis vor kurzem hielt ich noch sehr wenig von Opera‘s kläglichem Versuch, Widgets zu integrieren. So waren diese im Vergleich zu den Addons von Firefox nicht direkt im Browser integriert, sondern kleine Anwendungen die wie eine Art Popup Fenster in der Betriebssystemleiste rumschwierten.

Doch es hat sich viel getan und so bin ich auf das geniale Twitter Tool Twiget gestoßen. Es ist zwar trotzdem nicht direkt im Software Interface von Opera integriert, dafür lässt es sich aber prima mit dem Windows XP Desktop verschmelzen. Dieses kann man auch aufrufen, ohne dass Opera gestartet sein muss oder sich automatisch öffnet. Ein Beispiel wie schick das aussehen kann gibt es obendrauf:
ganzen Artikel lesen »

30
Aug

IES Generator – Webdesign Lichteffekte

Ein Bekannter zeigte mir neulich ein interessantes Tool, mit welchem man ohne großen Aufwand Lichteffekte erstellen kann. Dieses Tool nennt sich IES Generator, dieser liegt aktuell in der Version 4 vor.

ganzen Artikel lesen »

29
Aug

[Auth] Callback Funktion in Klasse aufrufen

1 Beschreibung

Setzt man bei einem Projekt auf das leistungsstarke und sichere Framework PEAR, so spart man sich viel Zeit durch die bereitgestellten Module. Eines davon ist Auth, welches die Authentifizierung von Benutzern durchführt.

Dieses Modul setzt auf Callback Funktionen für gewisse Ereignisse, wie der erfolgreiche oder fehlgeschlagene Anmeldeversuch. Je nach Vorfall ruft diese Callback Funktion eine weitere Funktion auf, sofern dieses Ereignis eingetreten ist. So spart man sich die Arbeit, dass man den fehlgeschlagenen Anmeldeversuch abfangen muss.

2 Problem

Schön und gut. Doch wenn man dieses Konzept in einer objektorientierten Programmierumgebung einpflegen will, möchte man meist eine Methode aufrufen in der dafür zuständigen Benutzerverwaltungsklasse und nicht eine externe Funktion. Wie stellt man das an?

3 Lösung

Mittels der magischen Konstante __CLASS__ wird während der Laufzeit der aktuelle Klassenname ermittelt. Über das Array kann noch der Name der Methode hinzugefügt werden, welcher aufgerufen werden soll. Diese muss statisch sein!

Hier ein Beispiel, wie das Ganz aussehen könnte:
ganzen Artikel lesen »

29
Aug

Zeitdifferenz von Timestamps ermitteln

1 Problemstellung

Für ein Projekt stand ich vor dem Problem, dass ich von zwei Timestamps die Zeitdifferenz in Sekunden ausgeben wollte. Mittels PHP ist dies natürlich kein Problem. Doch alles was sich mittels der Datenbankabfrage lösen lässt, ist meist performanter und schöner.

2 Lösung

So habe ich mich daran gesetzt, dieses Problem zu knacken und habe folgende Lösung ausgearbeitet:

SELECT
	tbl_quote.quote_title,
	tbl_quote.quote_content,
	TIMESTAMPDIFF(SECOND,tbl_quote.quote_date,NOW()) AS quote_diff_in_sec_to_now
FROM
	tbl_quote
LIMIT 1

Dabei erhält man die Zeitdifferenz zwischen dem Timestamp, welcher in dem Datenfeld tbl_quote.quote_date gespeichert ist und der aktuellen Uhrzeit, was mittels dem Befehl NOW() abgefragt wird. Die aktuelle Uhrzeit kann natürlich durch einen weiteren Timestamp ersetzt werden. SECOND gibt an, dass das Ergebnis in Sekunden ausgegeben werden soll. Weitere Werte sind zum Beispiel HOUR, DAY oder, Ihr ahnt es schon, WEEK. Alle Details zu der Funktion TIMESTAMPDIFF() und weiteren Datums- und Zeitfunktionen könnt Ihr in der MySQL Dokumentation nachlesen. Viel Spaß!

3 Fazit

Mittels der Funktion TIMESTAMPDIFF() lässt sich schnell und einfach die Zeitdifferenz zwischen zwei Timestamps ausgeben.

28
Aug

Array rekursiv durchsuchen nach Schlüssel

1 Nicht ausreichende Lösung für eindimensionale Arrays

Möchte man in PHP ein eindimensionales Array durchsuchen, so ist dies schnell erledigt. Dazu gibt es die vordefinierte Funktion array_search(). Hier ein kleines Praxis Beispiel:

// Beispiel Array
$userArray = array(
	0 => 'Hans',
	1 => 'Sepp',
	2 => 'Franz'
);
$singleUserKey = array_search('Sepp', $userArray);

print $singleUserKey; // Ausgabe: 1

2 Lösung für mehrdimensionale Arrays

Doch bei einem mehrdimensionalem Array reicht diese Funktion nicht mehr aus und man muss sich eine neue Lösung suchen. Seht es euch am Besten selbst an:

// Durchsucht ein Array rekursiv
function getArrayKey($search, $array) {
	foreach($array as $key => $values) {
		if(in_array($search, $values)) {
			return $key;
		}
	}
	return false;
}

// Beispiel Array
$userArray = array(
	'IT' => array(
		0 => 'Sepp',
		1 => 'Hans'
	),
	'Planung' => array(
		0 => 'Josef',
		1 => 'Walter',
		2 => 'Peter'
	),
	'Verwaltung' => array(
		0 => 'Frida',
		1 => 'Berta'
	)
);
$singleUserKey = getArrayKey('Josef', $userArray);

print $singleUserKey; // Ausgabe: Planung

Mit dieser Funktion erhält man den Schlüssel für das erste Hauptarray und weiß, in welchem sich der gesuchte Wert befindet. Meist will man gerade diesen Wert herausfinden. So erhält man in diesem Beispiel den Abteilungsnamen, in welcher sich der Benutzer befindet.

Oder aber, wenn man ein zweidimensionales Array bearbeitet, kann man den zweiten Schlüssel wieder mittels array_search() herausfinden.

Nicht geeignet ist diese Methode für sehr tief gehende Arrays, bei welchen man alle Schlüssel herausfinden will. Dazu gibt es dann komplexere Varianten, die aber auch weniger performant sind.

3 Fazit

Dies ist eine übersichtliche, performante Lösung die den Schlüssel des ersten Arrays wiedergibt.