Die dritte Lektion: Strings und Arrays

tempa wrote this 13:25:

Die Variablentype String (auf deutsch: Zeichenkette) haben wir bereits kennengelernt und eingesetzt. Schauen wir uns den Variablentyp jetzt etwas genauer an. Strings werden mit Anführungszeichen eingeleitet. Doppelte Anführungszeichen werden auf PHP-Code in der Zeichenkette (string) hin untersucht. In Zeichenketten können Variablen und Anweisungen vorkommen. Wenn Steuerzeichen in einer Zeichenkette vorkommen, die als Zeichen interpretiert und nicht als Steuerzeichen, dann muss das Zeichen mit einem Gegenschrägstrich (backslash) maskiert werden, andere Zeichen werden als Zeichen interpretiert und damit sie als Steuerzeichen erkannt werden müssen sie mit einem Gegenstrich (Backslash) maskiert (escaped) werden. In der folgenden Tabelle ist eine Liste der Steuerzeichen.

Spezielle Steuerzeichen / Sonderzeichen
Code Erläuterung
\n Neue Zeile Linefeed (LF, 0x0A)
\r Absatz Carriage return (CR, 0x0D)
\t Horizontaler Tab (HT, 0x09)
\\ Gegenstrich (Backslash) schreiben
\$ Dollar schreiben statt Variable interpretieren
\" Anführungszeichen schreiben statt Zeichenkette zu beenden

Für unseren aktuellen Stand ist die Liste erst einmal ausreichend, die vollständige Liste findet ihr unter Variablentypen: String

Strings können auch von einzelnen Anführungszeichen, Hochkommatas, umschlossen werden, dann werden Sonderzeichen mit Ausname der Maskierungen des Gegenschrägstrichs (\\) und dem Hochkommata (\') und Variablen nicht interpretiert. Variablen werden bei einzelnen Hochkommatas in Zeichenketten über einen Punkt zwischen zwei durch Hochkommatas abgeschlossene Zeichenketten eingefügt. Achten Sie auf die Anführungszeichen, Gegenschrägstriche und Punkte, die Ausgabe ist in den grünen Kommentaren der echo-Anweisung nachgestellt.

  1. $var = "Anna";
  2. echo "Hier betreut Sie $var."; // Hier betreut Sie Anna.
  3. echo "Hier betreut Sie \$var."; // Hier betreut Sie $var.
  4. echo 'Hier betreut Sie '.$var.'.'; // Hier betreut sie Anna.
  5. echo 'Hier betreut Sie $var.'; // Hier betreut Sie $var.
  6. echo 'Darstellung in \'\' von \\\' durch \\\\\\\'';
    // Darstellung in '' von \' durch \\\''

Ein Gegenschrägstrich (Backslash „\„) in Hochkommata (single Quotes) muss nicht notwendiger Weise in allen Fällen maskiert werden, wenn aber Ausgegeben werden soll, wie man Hochkommatas maskiert in Hochkommata mit echo, dann kann das zu exzessivem Maskieren von Gegenschrägstrichen und dem Hochkommata führen. Es bedarf sieben Gegenschrägstriche und ein Hochkommata um \\\' in Hochkommata zu schreiben, für jeden der drei Gegenschrägstriche einen Maskierungs-Gegenschrägstrich und einen Maskierungs-Gegenschrägstrich für das Hochkommata.

In dem nachfolgenden Codeblock sind zwei nützliche Dinge mehrzeilige Kommentare zum ein und ausblenden von Funktionen im Script und die mehrzeilige String-Variable:

  1. // Kommentartrick zum temporären Auskommentieren
  2. /**
    /
    // Mehrzeiliger Kommentar:
    echo <<<VARNAME
    Diese echo-Anweisung ist auskommentiert und alles was es braucht, die echo-Anweisung wieder scharf zu schalten, ist die einzelnen Schrägstriche am Anfang und am Ende in eine Zeile wie folgt /**/ zu nehmen. In der Entwicklungsphase eines Scripts ist das sehr nützlich.
    VARNAME;
    /
    **/

Der mehrzeilige Kommentar ist nicht nur um im Kopf des Skriptes für Metatext zum Skript geeignet, sondern auch um schnell Codeteile zu deaktivieren und aktiveren, z.B. um in der Entwicklungsphase Variationen zu testen oder Fehlerquellen zu identifizieren und eliminieren. (mehr …)

Die zweite PHP-Lektion: Rechnen mit Zahlen und das Datumsformat

tempa wrote this 12:12:

Um sich noch etwas mehr mit dem Datum und Variablen austoben zu können, z.B. im Dezember mit schönen Sprüchen einen Adventskalender zu produzieren oder etwas aktueller für den kommenden Sommer Freizeittipps zu geben.

Rekapitulieren wir noch mal. „Variablen deklarieren“ geht wie folgt. Eine Variable wird mit dem $-Zeichen eingeleitet, dem der Unterstrich oder ein Buchstabe folgt. Eine Zahl darf nicht direkt nach dem Dollarzeichen stehen, dazwischen muss schon noch ein Unterstrich oder einem Buchstaben stehen. Ein Variablenname kann Zahlen enthalten, aber __nicht__ direkt dem $-Zeichen gefolgt. $XYZ123 ist zulässig, $123XYZ ist nicht zulässig. Ebenfalls unzulässig ist ein Bindestrich bzw. Minuszeichen. Das Minuszeichen ist ein Operator und führt im Variablennamen zum Syntaxfehler.

Schaut man in die PHP-Dokumentation, begegnen uns unter anderen folgende Variablentypen:

  • Wahrheitswert: (bool), (boolean) – nach boolean
  • Ganzzahl: (int), (integer) – nach integer
  • Fließkommazahl: (float), (double), (real) – nach float
  • Zeichenkette: (string) – nach string

Die restlichen Variablentypen stellen wir hinten an für spätere Exkursionen in PHP.

Ganzzahlen werden positiv oder negativ geschrieben, Ganzzahlen sind nicht gesondert markiert. Um eine Zahl in eine Variable zu speichern, wird die Zahl ohne Zusatznotationen zwischen dem Gleichheitszeichen und Semikolon geschrieben:

$ganzzahl = 10; bzw. $ganzzahl = -10;

PHP rechnet in den meisten Fällen im Dezimalsystem, muss aber nicht. Stellt man der 10 eine 0 voran so wird daraus die oktale 8 und 0x vorangestellt ergibt hexadezimal 16.

  1. $a = 10; // dezimal 10
  2. $b = 0x10; // hexadezimal: 16
  3. $c = 010; // octal: 8
  4. $d = $a + $b + $c;
  5. var_dump($a); // (int)10
  6. var_dump($b); // (int)16
  7. var_dump($c); // (int)8
  8. var_dump($d); // (int)34

PHP rechnet mit den verschiedenen Formaten im bunten Kompott problemlos, am Ende wird ein Dezimalwert ausgegeben. Im Kommentar (mit doppelten Schrägstrichen eingeleitet) ist das Format und der Wert in den Zeilen 1 bis 3 angegeben. Übrigens Kommentare mit vorangestellten Doppelschrägstrich sind einzeilig und helfen den Code verstehen. Für den Augenblick sind die Codes überkommentiert, da sehr viel noch erklärt werden muss. Mehrzeilige Kommentare werden mit Schrägstrich und Stern /* Kommentar */ umklammert.

Weiter geht es – Rechnen mit Fließkomma (floats):

  1. $a = 10; // integer
  2. $b = 0.5; // float
  3. $c = $a*$b;
  4. var_dump($a); // (int)10
  5. var_dump($b); // float(0.5)
  6. var_dump($c); // float(5)

Obwohl PHP mit echo $c; 5 und nicht 5.0 ausgibt, also Ganzzahl nach dem Erscheinungsbild, wird die 5 als Fließkommazahl registriert. Achtung: PHP verwendet englische Konventionen. Kommastellen werden mit einem Punkt statt eines Kommas dargestellt.

Das Zahlenformat lässt sich den jeweiligen nationalen Konventionen mit number_format($Fließkommazahl = 1.5, $Dezimalstellen = 0 , $Dezimaltrennzeichen = ',' , $Tausendertrennung = '\'') anpassen.

(mehr …)

Die erste PHP-Lektion

tempa wrote this 00:06:

PHP Tutorials langweilen ihre Leser in der Regel mit den ewig gleichen Beispielen, die in der echten Welt nur selten Sinn machen. Angefangen mit folgender PHP Anweisung:

  1. <?php echo "Hallo Welt"; ?>

Beginnen wir mit der Frage „Was ist PHP?“ bevor wir auf die Anweisung näher eingehen. PHP stand ursprünglich für „Personal Home Page Tools“ und heutzutage für „PHP: Hypertext Preprocessor“. Für alle die mit Hypertext nichts anfangen können. Hypertext im Internet ist die beschreibende Sprache, die der Maschine erklärt, wo in der Hirarchie der Text steht, bzw. welche Aufgabe der Text erfüllt. Hypertext gibt z.B. an, ob es sich um eine Überschrift, eine Liste oder einen gewöhnlichen Absatz handelt. Mit Hypertext kann ein Text von einem Marker, wie dem Blockelement „<div>“ oder dem Inline-Element „<strong>„, umschlossen werden und dergestalt können Inhalte zusammengefasst und sowohl semantisch wie optisch hervorgehoben werden.

(mehr …)

Tooltip mit bösem inline Javascript

tempa wrote this 02:17:

Eigentlich bin ich ja ein absoluter Verfechter der Trennung von strukturiertem Inhalt, Aussehen und Benimm einer Website, aber in der Administration eines CMS ist es manchmal dann doch praktischer, wenn man mit dem alten onmouseover="" onmouseout="" im HTML-<TAG> arbeitet. Ein netter Tooltip an einer kryptischen Schaltfläche hilft dem Nutzer, der so oder so Javascript für das CMS aktiviert haben muss, bei der Bedienung des Werkzeugs.

Das ist zwar alter Kram aber weil ich das gerade gemacht habe und das eine oder andere erst Nachschlagen musste, will ich hier mein Ergebnis verposchten, für Andere zum Finden:

Tooltipp mit inline-Script

  1. <a onClick="funktion()"
  2. onmouseover="this.firstChild.style.display='block';"
  3. onmouseout="this.firstChild.style.display='none';" >
  4. <spanstyle="position: absolute; width: 200px; height: auto; margin-top: 28px; margin-left: -100px; padding=".5em" border: 1px solid #aaa; color: #494949; background: #efefef; display: none;">
  5. Tooltip-Text</span><img src="buttoff.gif" alt="Button-Text"
  6. onmouseover="this.setAttribute('src','button.gif');"
  7. onmouseout="this.setAttribute('src','buttoff.gif');" /></a>

Und so kann das dann aussehen:

Viel Platz für den Namen der Funktion und Anweisungen ;).Tool-Button

Nachtrag: ach Gottchen, mein frisch aktualisierter Firefox mag nicht, was ich da gemacht habe. Nur gut, dass ich es nur für den IE brauchte und hier auch keine Rücksicht auf die veralteten Versionen genommen habe. Aber dann … der Firefox nimmt eh gruselige Entwicklung und ich mag ihn immer weniger. Ich weiß wirklich nicht was der FF an diesen simplen DOM-Anweisungen auszusetzen hat. Meine Güte. OK. Der Firefox wollte unbedingt auch noch Javascript blockieren, obwohl ich dafür ein Addon habe … jajaja Javascript ist böse und es macht Sinn es nur von Fall zu Fall zu gestatten. Einstellungen korrigiert — jetzt tut’s auch im FF.

Vektor-Silhouette in 5 Schritten mit Photoshop

tempa wrote this 20:39:

Der Weg zu einer Silhouette ist sehr einfach und blitzschnell erzeugt:

Vektor Silhouette Deckblatt

Nachdem ich die Quelle der 8 Vektorgrafiken[1] erst heute alle abgeklappert habe und dabei nur eine Sammlung für nichtkommerzielle Zwecke außerhalb von Demianart zur Verwertung vorfand, stehe ich ein wenig in der Schuld. Daher hier das Tutorial. Es fängt damit an, dass man ein geeignetes Bild heraussucht. Entweder ein helles Objekt vor dunklem Untergrund oder ein dunkels Objekt vor hellem Untergrund. Um Urheberrechte muss man sich nur bedingt Gedanken machen, da das Endergebnis sehr weit vom Original entfernt ist und es der Fotograf schwerhaben dürfte, der späteren Vektorgrafik anzusehen, dass sein Foto einst die Basis darstellte. Hier im Tutorial sieht das anders aus. Das Foto steht in direktem Zusammenhang mit der Silhouette. Ich nehme daher aus Flickr.com ein Foto aus dem creativ commons by 2.0 des Users officialstarwarsblog.

Die fünf Schritte zur Vektorgrafik: (mehr …)

Addi, der Blitz-Zeichner oder Wie man ein Foto in eine Zeichnung verwandelt

tempa wrote this 08:26:

Blitzskizze mit Ebene und Filtern (Dammhirsch von aboutpixel.de User Stormpic)

Fast schon dachte ich, ich hätte eine dritte Methode entdeckt, wie man aus einem Foto eine Zeichnung macht, aber dann beim Test bedurfte es doch wieder einer der alten Methoden, um die Umrisse hervorzuheben.

Wovon ich spreche? Von einem ziemlich alten Beitrag, bei dem ein Foto in eine Comiczeichnung umgewandelt wird im alten templaterie blog. Dort werden zwei Methoden gegenüber gestellt.

Die neue Methode, die ich nun auf Tutorial-Place.com fand, verwandelt ein Foto 4 Schritten und mittels drei Ebenen in eine Zeichnung. Als ich die Methode am Hirsch von Rainer Storm testete, war das Ergebnis nicht zufriedenstellend. Aber ich konnte mir mit einem der alten Tricks helfen. Und so verwandelt man das Foto vom Hirsch in eine Zeichnung vom Hirsch:

  1. Foto 4 mal dublizieren und bis zur vierten Ebene Desaturieren (STRG+U)
  2. Ebene 5: Opacity 60%, Ebenen-Filter: Color ODER: Opacity 100%, Ebenen-Filter: Color Burn oder Multiply für kräftigere Farben
  3. Ebene 4: Opacity 85%, Ebenen-Filter: Color-Dodge, Invertieren (STRG+I), Gaussian-Blur ca. 3px
  4. Ebene 3: Opacity 20%, Filter Artistic Brushes/Crosshatches Default oder ein wenig gespielt mit den Filtern
  5. Ebene 2: Opacity 70%, Ebenen-Filter: Multiply, Invertieren, Filerset-Blur/Smart-Blur (Radius 50, Threshhold 100, Quality high, Overlay Edge), invertieren

Wer noch den angefressenen Rand möchte, kann in einer neuen Ebene einen 10-12 Pixel breiten Papierfarbenen Rand erzeugen (STRG+A, Edit/Stroke: ca. 10px Location inside, Filter/Blur/Gaussien blur 3,0, Ebene-Filter: Dissolve).

Bildquelle aboutpixel.de Hirsch von stormpic aka Rainer Storm

PHP: Index 0 in Arrays und die humanoide Syntax

tempa wrote this 21:13:

Ich wette, der Programmierer, der sich das mit dem Index „0“ für das erste Element im Array ausdachte, fand das tierisch clever und amüsant. Und weil das in der Welt der Programmierer fortan nun einmal so war und immer noch ist, dass man das erste Element eines Arrays mit $arrayVariable[0] anspricht und das letzte folglich mit $arrayVariable[$Anzahl-1], dürfen alle Manchmal~ und Gelegenheits-Programmierer sich ein Schleifchen an den Finger machen, damit sie diese Tatsache nicht vergessen. Ich für meinen Teil habe bei den ersten Zählübungen im zarten Toddler-Alter verinnerlicht, dass beim Zählen der Gummibärchen in der Hand, das Schnabulieren mit dem ersten Gummibär beginnt und nicht mit dem nullten. Daher zum Trotz und für ein gegrummeltes „Und Überhaupt!“:

  1. <?PHP
  2. $i = 1;
  3. $arrayVariable = array(
  4. $i++ => 'Erstes Element',
  5. $i++ => 'Zweites Element',
  6. $i++ => 'Drittes Element'
  7. );
  8. echo '<pre>$arrayVariable: ';
  9. print_r($arrayVariable);
  10. echo '</pre>';
  11. ?>

Und bei diesem Script stimmt die Ausgabe mit den Zählerfahrungen aus frühster Kindheit wieder überein:

< ?php $tci = 1; $arrayVariable = array($tci++ => ‚Erstes Element‘,$tci++ => ‚Zweites Element‘,$tci++ => ‚Drittes Element‘);
echo ‚

$arrayVariable: ';
print_r($arrayVariable);
echo '

‚;
?>

Für alle, die das erste Mal sich mit PHP beschäftigen und das mit der Null noch ganz neu ist, hier ein paar kleine Erläuterungen zum Skript: (mehr …)

Webdesign für Agrarwirte oder wie man eine hohe Wiese-Kachel erzeugt

tempa wrote this 23:41:

Website-Entwurf für die Agrarwirtschaft in frischen Farben.

Website-Entwurf für einen Agrarwirt mit saftig grüner hoher Wiese

Der Entwurf entstand durchs Daddeln mit Brushes in dem Versuch eine kleine Kachel zu machen die dennoch nicht zu kleingrieselig werden sollte, was nicht ganz gelang. Zum trost folgt ein Tutorial, wie man ohne Daddeln, schnurstracks eine Kachel erzeugt, wie die, die für diesen Entwurf den Hintergrund bildet. (mehr …)

   

Recent Comments:

  • Silke schümann { Du warst auf dieser Seite: Step1 zur Archiv-Thumbgalerie via Custom fields Marke Eigenbau http://templaterie.de/blog/931/step1-zur-archiv-thumbgalerie-via-custom-fields-marke-eigenbau/ Hier war ich noch am Basteln. Ich fürchte meine PHP-Kenntnisse sind... } – Aug 26, 9:29 AM
  • Andreas { Hey, ich habe den Code wie oben benutzt und auch $dgal = get_posts('category=1′); on der richtigen Zeile eingesetzt nur bei mir läufts immernoch nicht. Kann... } – Aug 26, 3:20 AM
  • Fred { "wer Smarty lernt, kann tatsächlich gleich auch PHP mitmachen, ich hatte es eine zeitlang auch eingesetzt, aber jetzt mach ich es wieder auf meine art... } – Jan 06, 7:14 PM
  • Silke Schümann { Das klingt nach einem Syntaxfehler in der ersten Zeile. Anführungszeichen korrekt? Und das Plugin funktioniert nur innerhalb von Editland. Die index.php ausserhalb von Editland aufzurufen... } – Jun 18, 3:40 PM
  • Jörg { Hallo, ich habe die index.php im ersten Abschitt Nr. 3 beschrieben, angelegt. Beim Aufruf der Seite wird folgende Fehlermeldung angezeigt: Parse error: parse error, unexpected... } – Jun 18, 3:14 PM
  • Michael { Gern geschehen 😉 } – Mai 29, 2:31 PM
  • Silke Schümann { Jepp. Das war's: ES tut! Lösung ist nun in einem eigenen Beitrag: Step1 zur Archiv-Thumbgalerie via Custom fields Marke Eigenbau Fertig und betriebstüchtig! 🙂 } – Mai 29, 1:25 PM
  • Michael { Wie wäre es, wenn Du die Zeile $dgal = get_posts('category=1'); auslagerst und den Rest in eine Funktion packts, der Du $dgal übergibst. Das wäre auch... } – Mai 29, 12:45 PM
  • Silke Schümann { Ich ziehe diees Variante ebenfalls vor, dovh wenn ich Code übernehmen, dann ändere ich hierfür nicht extra. Es dürfte gehzpft wei gesprungen sein, welche man... } – Mai 29, 2:00 AM
  • Ulf { ich würde bei der Syntax für Schleifen konsequent die C-ähnliche Variante mit geschweiften klammern nehmen, nicht die alternative mit Doppelpunkt und "endwhile" bzw. "endforeach". } – Mai 29, 12:00 AM
  • Silke Schümann { Ich habe ich http://franchie.de die Thumbs in der Sidebar erfolgreich ausgelesen. Ansonsten ist die Test-Umgebung unter 1a-test dot de / blog Ich will diese Adresse... } – Mai 28, 11:37 PM