Archive for the Category »PHP «

PHP: Dateien in einem Verzeichnis zählen

Häufig muss man bei der Programmierung wissen, wie viele Dateien in einem Verzeichnis sind. Wenn man keinen Zähler hat, der bei jeder neuen oder gelöschten Datei angepasst wird, hilft nur das Zählen der aktuell im Verzeichnis befindlichen Dateien. Und das geht so:

<?php
$pfad = “.”;
$i = 0;
$dh = opendir($pfad);
while ($datei = readdir($dh)) {
if($datei !== “” &&
$datei !== “.” &&
$datei !== “..” &&
!is_dir($datei)) {
$i++;
}
}
echo “$i Dateien im Verzeichnis”;
?>

Die Verzeichniseinträge “.” und “..” werden nicht mit gezählt. Die Variable $pfad enthält das Verzeichnis, das durchsucht wird, im Beispiel wird mit dem Punkt das aktuelle Verzeichnis durchsucht. Hier kann man natürlich auch ein anderes Verzeichnis einstellen, z.B. $pfad=”../bilder”;.

Category: PHP  Tags: , , ,  Leave a Comment

PHP/MySQL: Die ID eines neuen Datensatzes

Man hat schon so manchen schrägen Trick gesehen, um die ID eines neu angelegten Datensatzes herauszubekommen. Viele Leute schreiben mit dem INSERT einen definierten Wert, zum Beispiel “neu” in eines der Datenfelder, um dann genau diesen Wert in der Tabelle zu suchen und dann alle Daten in per UPDATE in den Datensatz zu schreiben. Dabei geht das auch viel einfacher:

<?php
$sql = mysql_query("INSERT INTO kunden
(Vorname, Nachname, Adresse) VALUES
('$vorname', '$nachname', '$adresse')"
);
$id = mysql_insert_id();
?>

Die Funktion mysql_insert_id() liefert die ID, die bei der letzten INSERT-Operation für ein Feld vom Typ AUTO_INCREMENT vergeben wurde. Wenn die Verbindungs-Kennung nicht angegeben wird, wird die zuletzt geöffnete Verbindung angenommen. Die Funktion liefert 0, wenn die vorhergehende Abfrage keinen AUTO_INCREMENT Wert erzeugt hat. Falls Sie den Wert zur späteren Verwendung speichern möchten, stellen Sie sicher, dass Sie mysql_insert_id() direkt nach der Abfrage aufrufen, die einen Wert erzeugt hat.

Category: PHP  Tags: , , , ,  Leave a Comment

PHP-Tipp: Ausgabe des Alphabets

Gelegentlich braucht man eine Alphabet-Ausgabe, zum Beispiel für ein Register. Bevor da jeder Buchstabe einzeln mit einer Ausgabe bedacht wird, kann man besser eine Schleife bilden, in der die ASCII-Codes des Alphabets nacheinander ausgegeben werden. So sieht der Code-Schnipsel dafür aus:

<?php
$i=65;                         //65 stellt den Buchstaben A dar
while($i <= 90) {        //90 stellt den Buchstaben Z dar
echo chr($i);
$i++;
}
?>

Zusätzlich zur Ausgabe des Buchstaben mit echo chr($i); kann innerhalb der Schleife natürlich noch weiterer Code stehen, ein Link auf die entsprechende Registerkarte oder die Ausgabe von Elementen mit diesem Anfangsbuchstaben – was auch immer.

Category: PHP  Tags: , , ,  Leave a Comment

Datum und Uhrzeit mit PHP ausgeben

In HTML gibt es keine Möglichkeit, Datum und Uhrzeit auf einer Seite mit auszugeben. Gerade bei statischen Seiten ist es  ein deutlicher Vorteil für die Auswertung einiger Suchmaschinen, wenn auf den einzelnen Webseiten das aktuelle Tagesdatum angezeigt wird. Der PHP-Code dazu ist nur ein übersichtlicher Einzeiler:

<?php echo date(“d.m.Y”).” – “.date(“H:I”).” Uhr”; ?>

Die Ausgabe sieht dann so aus:

30.05.2011 – 07:57 Uhr

Wenn man den Code in eine gemeinsame Kopf- oder Fußzeile eintragen kann, braucht man ihn nur einmal einsetzen und er zeigt auf jeder Seite der Präsenz das Datum und die Uhrzeit an.

Category: HTML, PHP  Tags: , , ,  Leave a Comment

Der Trinitäts-Operator in PHP

Bei einem erfahrenen PHP-Programmierer bilden sich nach einiger Zeit bestimmte Vorgehensweisen aus, durch die er schneller zum Ziel (dem fertigen Programm) kommt. Das spielt sich häufig in Strukturen oder Funktionssammlungen ab, aber eine ganz besondere Art der Effizienzsteigerung solcher Programmierer lässt denjenigen, der den Code später dann pflegen soll, stutzen: Die Benutzung des Trinitäts-Operators (Ternary Operator). Vielleicht ist Ihnen dieses Konstrukt ja schon einmal begegnet:

$wochenende = ($tag > 5) ? ‘ja’ : ‘nein’;

Das sieht ziemlich anders aus als Standard-PHP-Code und kann im ersten Moment durchaus verwirren. Dabei handelt es sich um eine normale if / else – Abfrage, die man auch so schreiben kann:

if ($tag > 5) {
$wochenende=’ja’;
} else {
$wochenende=’nein’;
}

Der Trinitätsoperator funktioniert anders als die if / else – Abfrage nur, wenn ein Wert zurückgegeben wird. Etwas wie

$wochenende = ($tag > 5) ? echo ‘ja’ : echo ‘nein’;

funktioniert nicht. Benutzt man aber statt echo print für die Ausgabe, klappt es wieder, denn print ist eine echte PHP-Funktion und gibt TRUE oder FALSE zurück. Wegen dieser komplizierten Handhabung ist der Trinitäts-Operator wohl nicht Anfänger’s Liebling.

PHP und MySQL per mysqli

Es gibt drei verschiedene Möglichkeiten für den PHP-Programmierer, auf MySQL-Datenbanken zuzugreifen. Das sind mysql, mysqli und PDO. Üblich ist die Verwendung von mysql, denn damit bleibt man kompatibel zu 4er Versionen von PHP. PDO ist ja auch schon länger bekannt und nicht datenbankspezifisch, hat sich aber unter Entwicklern kaum verbreitet.

Hier geht es um die objektorientierte mysqli-Schnittstelle, die eine elegante Programmierung und die Unterstützung von Prepared Statements bietet. Was ist also anders? Dazu ein typisches Beispiel:

// Verbindung instanziieren
$mysqli = new mysqli(“localhost”,”Benutzer”,”Passwort”,”Datenbankname”)
// Verbindung testen
if (mysqli_connect_errno()) {
echo “Keine Verbindung!”.mysqli_connect_error();
exit();
}
// Zeichensatz einstellen
$mysqli->set_charset(“utf8″);

… weiterer Programmcode …

// Verbindung trennen
$mysqli->close();