<?php
#Test:
print ErsterWochentagImMonat( 11, 2011, 1 )."\n";
function ErsterWochentagImMonat(
$intMonat, $intJahr, $intWochentag
) {
### Erwartete Daten:
#$intMonat = '1...12 (Januar...Dezember)
#$intWochentag = 0 für Sonntag;
#$intWochentag = 1 für Montag
# ...
#$intWochentag = 6 für Sonnabend;
# Plausibilitätsprüfungen:
if ( 1 > $intMonat || 12 < $intMonat ) {
return false;
}
if ( 0 > $intWochentag || 6 < $intWochentag ) {
return false;
}
# Berechnung:
$intTag=date( 'w', mktime ( 0, 0, 0, $intMonat, 1, $intJahr ) );
# Ergebnis: 0 ... 6
if ( $intTag == $intWochentag ) {
return '01.' . ZweiStellig($intMonat) . '.' . $intJahr;
} else {
if ( $intTag < $intWochentag ) {
return ZweiStellig( $intWochentag - $intTag + 1 )
. '.' . ZweiStellig($intMonat)
. '.' . $intJahr;
} else {
return ZweiStellig( $intWochentag - $intTag + 8 )
. '.' . ZweiStellig($intMonat)
. '.' . $intJahr;
}
}
return false;
}
function ZweiStellig( $int ) {
$int = intval( $int );
if ( $int < 10 ) {
return '0' . $int;
}
return $int;
}
?>
Mittwoch, 2. November 2011
PHP: Erster Montag im Monat
Dienstag, 7. Juni 2011
Ticketsystem für mittelständischen Webshop-Betreiber fertiggestellt
Für ein mittelständisches Kassler Unternehmen mit ca. 60 Beschäftigten habe ich ein Ticketsystem fertiggestellt. Dieses erlaubt, ergänzend zum bestehenden Webshop, die Bearbeitung eingehender Anfragen und das Erstellen individueller Angebote. Prinzipiell ist auch die Bearbeitung von Reklamationen damit möglich.
Das System ist natürlich mehrnutzerfähig, webbasiert (also auch sehr gut für die Heimarbeit geeignet). Es bietet einen Dateiupload - der spätestens dann nützlich ist, wenn z.B. Zeichnungen in einer Werkstatt benötigt werden und über die Ticket-Nummer abrufbar sein sollen. Eingehende Emails können natürlich in das Ticket-System übernommen werden.
Das Ticket-System befindet sich in Betrieb und entlastet insbesondere den Vertrieb und den Kundendienst - allein die Angebotserstellung läuft bis zu 60% schneller ab und natürlich ist besser kontrollierbar, ob auch alle Kundenanfragen bearbeitet wurden und was den Kunden wann von wem mitgeteilt wurde.
Eine Besonderheit des Systems: Es läuft in einem relativ kleinen Fenster z.B. neben dem Webshop. In der konkreten Ausführung erlaubt es durch sinnvollen Einsatz von Frames Angebotsbeschreibungen und Preise direkt aus dem Webshop zu übernehmen
Samstag, 15. Mai 2010
Des fastix kleines CMS
fastix.orgbiete ich ein kleines und deshalb recht einfach zu bedienendes CMS-System an. Es hat die Besonderheit, dass es ohne Datenbank funktioniert.
Wem es reicht, dass er seine Webseite in Kategorien einteilen kann, in die wieder Artikel eingestellt werden können, welche kommentiert werden können, die dann wieder erst freigeschaltet werden müssen, wer mit einer kleinen Bilderverwaltung zu recht kommt und eine einfache Terminverwaltung benötigt (oder eben nicht mal diese...), der wird mit dem
Des fastix kleines CMSschon zufrieden sein.
In Übrigen habe ich
fastix.orgund das
Portalzu
Des fastix kleines CMSmit dem CMS erstellt.
Man muss es ja testen. Es funktioniert also:
Dienstag, 22. Dezember 2009
PHP, Einlesen einer Excel-Datei
Hallo Community,
bitte dringend um Hilfe beim einlesen einer Excel Datei...
Also ich lade eine Excel Datei hoch, und möchte sie Zeile für Zeile und Spalte für Spalte aus lesen.
So sieht mein Script etwa aus:----------------
$dom = DOMDocument::load( $_FILES['file']['tmp_name'] );
$rows = $dom->getElementsByTagName( 'Row' );
foreach ($rows as $row)
{
$cells = $row->getElementsByTagName( 'Cell' );
foreach( $cells as $cell )
{
$cellwas=$cell->nodeValue;
...
---------------
Leider kann ich so nur alle Zellen mit Inhalt auslesen. Also leere Zellen werden einfach übergangen, wodurch das ganze unbrauchbar wird.
Kann mir irgendjemand sagen wie ich zum Beispiel in einer Zeile jede Zelle einzeln abfragen kann, auch wenn diese Leer ist?
Eine schnelle Lösung:
Beim Blick in den Quelltext einer solchen Datei sehe ich: Leere Zellen lassen sich gar nicht abfragen. Die Zelle existiert in den Daten schlicht nicht. Die Zellen nach leeren Zellen haben aber ein Attribut 'ss:Index'. Also: Nach der Existenz des Attributes fragen, wenn es existiert den Spaltenzähler auf den Wert setzen.
Bei mir funktionierte mit test.xml als (aus OpenOffice exportierte) Excel-2003-xml-Datei:
<?php
$dom = DOMDocument::load( "test.xml" );
$rows = $dom->getElementsByTagName( 'Row' );
$zeile=0;
$arValues=array();
foreach ($rows as $row) {
$cells = $row->getElementsByTagName( 'Cell' );
$spalte=0;
foreach( $cells as $cell ) {
if ($cell->hasAttribute('ss:Index')) {
$spalte=$cell->getAttribute('ss:Index')-1;
}
$arValues[$zeile][$spalte]=$cell->nodeValue;
$spalte++;
}
$zeile++;
}
$zeile=0;
$maxSpalten=0;
# spalten zählen
foreach ($arValues as $arZeile) {
if ($maxSpalten < count($arZeile)) {
$maxSpalten = count($arZeile);
}
}
# Array mit false aufüllen und für foreach schön machen:
$arTemp=$arValues;
$arValues=array();
for ($zeile=0; $zeile < count($arTemp); $zeile++) {
for ($spalte=0; $spalte < $maxSpalten; $spalte++) {
if (isset($arTemp[$zeile][$spalte])) {
$arValues[$zeile][$spalte]=$arTemp[$zeile][$spalte];
} else {
$arValues[$zeile][$spalte]=false;
}
}
}
unset($arTemp);
print "Werte:<pre>";print_r($arValues);print "</pre>";
?>
Hinweis:
Diese schnelle Lösung berücksichtigt übrigens noch nicht, dass ein solches Dokument auch Tabellenblätter hat.
htpasswd-Generator - Eine Lösung für kleine Webs
Einfach als Datei
htpasswd.phpin dem zu schützendem Verzeichnis speichern.
Danach Aufruf mit
http://DeinHost/DeinVerzeichnis/htpasswd.php- Benutzer anlegen, Schutz einschalten. Das sollte auch schnell getan werden, denn sonst kann es jeder andere auch...
Ein Bild sagt mehr als tausend Worte:


