Zufallsgenerierte Bildergalerie

tempa wrote this 19:27:

Gesteuert wird die Galerie von zwei ini-Files, um die Daten und Einstellungen aufzunehmen und an PHP zu übergeben. Die Datenstruktur eines Ini-Textfiles ist einfach und übersichtlich und wird mit parse_ini_file() (siehe Zeile 4) direkt in einem Array aufgenommen.

In eckigen Klammern ist der Array-Key, gefolgt vom Parameter-Key ‚param1‘, ‚param2‘ in einem nested Array. Die Bezeichnungen sind frei wählbar. und erlauben so die sprechende und übersichtliche Darstellung der Array-Inhalte, siehe Galerie-Setting und Galeriedaten.

  1. [Key]
  2. param1= ""
  3. param2= ""

Der Zufallsgenerator kommt von array_rand() (siehe Zeile 7). Schließlich noch mittels der Bausteine und dem array_rand den HTML code generieren (Zeile 10).

  1. $cPath = "";
  2. $tcPhrases = $cPath.'tc_randomizer_setting.ini';
  3. $tcThumbs = $cPath.'tc_randomizer.ini';
  4. $phrasesArr = (file_exists($tcPhrases)) ?
    parse_ini_file($tcPhrases, TRUE) : die("Phraselist does not exist.");
  5. $thumbsArr = (file_exists($tcThumbs)) ?
    parse_ini_file($tcThumbs, TRUE) : die("Thumbslist does not exist.");
  6. $tci =($phrasesArr['repeatLine']['anz']=="")?
    '2' : $phrasesArr['repeatLine']['anz'];
  7. $randThumbs = array_rand($thumbsArr,6);
  8. for($tcj=0; $tcj< $tci; $tcj++){
  9. $picArr = explode(',',$thumbsArr[$randThumbs[$tcj]]['listPic']);
  10. echo "{$phrasesArr['htmlBausteine']['htmlB1']}<a
    href=\"{$tcjumper}index.php?p={$randThumbs[$tcj]}\" {$phrasesArr['linkParam']['aP3']}
    {$phrasesArr['linkParam']['aP4']}>{$phrasesArr['htmlBausteine']['htmlB2']}<img
    src=\"{$tcjumper}img/{$picArr[array_rand($picArr)]}\"
    alt=\"{$phrasesArr['theLine']['phrase1']}{$thumbsArr[$randThumbs[$tcj]]['range1']}
    {$thumbsArr[$randThumbs[$tcj]]['altText']}\" {$phrasesArr['htmlBausteine']['imgP1']}
    {$phrasesArr['htmlBausteine']['imgP2']}{$phrasesArr['htmlBausteine']['imgP3']} {$slash}>
    {$phrasesArr['htmlBausteine']['htmlB3']}</a>{$phrasesArr['htmlBausteine']['htmlB4']}<a
    href=\"{$tcjumper}index.php?p={$randThumbs[$tcj]}\" {$phrasesArr['linkParam']['aP3']}
    {$phrasesArr['linkParam']['aP4']}>{$phrasesArr['theLine']['phrase2']}
    {$thumbsArr[$randThumbs[$tcj]]['range2']}{$thumbsArr[$randThumbs[$tcj]]['linkText']}</a>
    {$phrasesArr['htmlBausteine']['htmlB5']}\r\n";
  11. }

Das Resultat des Codes sieht unter der Haube (im Source) wie Folgend aus:

  1. <dl class="randgal">
  2. <dt><a href="index.php?p=t01"><img
    src="img/t01e_thumb.jpg" alt="Template 01 A-G" /></a></dt>
  3. <dd><a href="index.php?p=t01">Template 01 A-G</a></dd>
  4. <dt><a href="index.php?p=t02"><img
    src="img/t02a_thumb.jpg" alt="Template 02 A" /></a></dt>
  5. <dd><a href="index.php?p=t02">Template 02 A</a></dd>
  6. <dt><a href="index.php?p=t10"><img
    src="img/t10a_thumb.jpg" alt="Template 10 A" /></a></dt>
  7. <dd><a href="index.php?p=t10">Template 10 A</a></dd>
  8. <dt><a href="index.php?p=t14"><img
    src="img/t14b_thumb.jpg" alt="Template 14 A-F" /></a></dt>
  9. <dd><a href="index.php?p=t14">Template 14 A-F</a></dd>
  10. <dt><a href="index.php?p=t20"><img
    src="img/t20f_thumb.jpg" alt="Template 20 A-F" /></a></dt>
  11. <dd><a href="index.php?p=t20">Template 20 A-F</a></dd>
  12. <dt><a href="index.php?p=t21"><img
    src="img/21d_thumb.jpg" alt="Template 21 A-H" /></a></dt>
  13. <dd><a href="index.php?p=t21">Template 21 A-H</a></dd>
  14. </dl>

Die Demo gibt es hier (Demo-Source).

Was brauche ich, wenn ich meine Website selbst pflegen möchte?

tempa wrote this 09:01:

Die Frage ist schnell und einfach beantwortet: Kenntnisse und einen Texteditor oder ein Redaktionssystem (CMS)/Webeditor.

Kenntnisse in der Websitepflege

Mit einem guten Template und der Trennung von Inhalt und Gestaltung, benötigt man nur noch wenige HTML-Kenntnisse um Inhalte in eine Seite einzupflegen. Die meisten Texteditoren beherrschen Textbausteine, die man in eine Seite einbauen kann. Z.B. könnte ein Template-Textbaustein wie folgt aussehen:

  1. <?PHP echo '<?xml version="1.1" encoding="iso-8859-1"?>'; ?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  5. <head>
  6. <body>
  7. <div id="header">
  8. <!--[ ###### Kopfzeile ###### ]-->
  9. </div>
  10. <div id="navigation">
  11. <?PHP include(navigation.php); ?>
  12. </div>
  13. <div id="content">
  14. <!--[ ###### Inhalt ###### ]-->
  15. </div>
  16. <div id="footer">
  17. <!--[ ###### Fußzeile ###### ]-->
  18. </div>
  19. </body>
  20. </html>

In dem Beispiel wird die Navigation in einer separaten Datei verwaltet und alle Seiten beruhen auf PHP, das erspart dem Redakteur der Website, dass er bei einer neuen Seite alle Seiten öffnen und aktualisieren muss oder auf eine zentrale Navigation angewiesen ist. Hat man SSI (Server Side Includes) kann man auch die Navigation darüber einfügen und eine Dynamik (hervorhebung der aktuellen Seiten sowie Seitenlinks hierarchisch ein- und ausblenden) z.B. via Perl erzielen.

Je nach Anforderung macht die eine oder die andere Art bzw. eine Kombination (z.B. zentral und linear oder vernetzt und linear oder alle drei) der Vernetzung der Seiten Sinn. Je nach Art der Vernetzung müssen in reinen HTML-Seiten mal mehr mal weniger Seiten erneut geöffnet und bearbeitet werden, ändert sich das Seitengefüge durch zufügen, löschen oder umstrukturieren. (siehe auch Yale Styleguide zum Thema Navigation auf TU-Chemnitz.de und Sitestruktur von selber Quelle)

Navigationsarten

Dergestalt die Arbeit vorbereitet, benötigt der Redakteur nun noch ein grundlegendes Verständnis der folgenden HMTL-Tags: H1-H6, P, PRE, OL, UL, LI, DL, DT, DD, TABLE, TH, TD, IMG, A, DIV, BLOCKQUOTE, Q, CODE, STRONG, EM und SPAN sowie die Attribute 'src', 'href' und 'class'. Die Liste ist kurz und das Regelset dieser Tags nicht allzu kompliziert (siehe hierzu selfhtml: HTML-Kurzreferenz). Wer nun noch die PHP-Datei für die Navigation entsprechend organisiert, kann auch dem Laien mit einem beliebigen Text-/Webeditoren wie z.B. dem Notepad in Windows (mein Favoriten sind PSPad, Weaverslave und Textpad) und FTP die Website-Pflege anvertrauen.

So manchem aber ist das schon zu kompliziert und dem sei ein Redaktionssystem oder Webeditor empfohlen.

Websitepflege mit dem Redaktionssystem (CMS/Webeditor)

Je nach Anforderung bezüglich Websitekomplexität und Größe des Redaktionsteams braucht man ein funktionsreiches Redaktionssystem mit dem Leser, Autoren, Redakteure und Administratoren verwaltet werden können oder Publikationsfristen, Seitenstrukturen, etc. oder aber es ist eine kleine Site und das Redaktionsteam ist klein und in Rufweite, neue Seiten werden fast immer dann publiziert wenn diese auch geschrieben werden und dann genügt ein einfacher Webeditor (gelegentlich auch MiniCMS genannt). Wie in der Textverarbeitung Word stehen dem Autor oder Redakteur Schaltflächen zur Verfügung. Einige Formulare dienen zur Seitenstrukturierung und Benutzerverwaltung. Je nach Komplexität benötigt man für das CMS eine Schulung (Joomla, Drupal, Contenido, Moodle, etc. … ) oder ein 15-minütiges Telefongespräch (Editland, WordPress, Textpattern, …). siehe auch CMSMatrix.org

CMS = Contentmanagementsystem ist der Oberbegriff für diverse Systeme unterschiedlicher Prägung, wobei so mancher CMS mit dem Redaktionssystem gleichsetzt und Webeditoren, die außer Inhalt und Seitenstruktur nichts weiter verwalten können die Bezeichnung CMS absprechen. Genaugenommen ist auch ein Online-Shop ein Contentmanagementsystem ebenso wie ein Weblog, ein Wiki oder eine Community mit Profilen, Chat und Foren. Je umfangreicher der Inhalt, je komplexer die Nutzerrechte, die Kombination/Sortierung von Textbausteinen und Seitengefüge, desto eher empfiehlt sich eine Datenbank, in der all dies verwaltet wird. Welches CMS letztendlich das geeignetste ist, hängt mit dem Website-Pfleger bzw. -Pflegeteam ebenso zusammen, wie mit den Inhalten und deren Flexibilität in Bezug auf Darstellung, Vernetzung, Zuordnung und Publikationszeiten sowie Nutzungsrechten.

Was es mit Seitensystemen/Seitenstrukturen auf sich hat, davon ein andermal mehr …

Ursprünglich gepostet am 6. Dezember 07, 16:13 in meinem Blog “Silkester erzählt”.

Design ./. Javascript ./. Accessibility

tempa wrote this 04:13:

Freier Raum ist für ein Design wichtig. Ohne Freien Raum keine Ordnung und wenig Harmonie. Designs ohne freie Stellen, sind meist vollgestopft und chaotisch. Dies war der Grund, dass ich überhaupt anfing Teile der Site über remote skripting und Javascript-Style-Anweisungen aus dem Layout temporär entfernen will.

Template TC-0044 A mit Steilkueste

Das Design

Das Design kann als Entity im Viewport (sichtbarer Bereich im Browserfenster) gestellt werden, doch wenn es als Ganzes im Viewport erscheinen soll, dann ist der Platz begrenzt und jedes Element will wohl überlegt sein. So ist der hellgrüne Bereich, der die Navigation enthält und zu der auch die Stichwortwolke im gelbgrünen bereich zählt ist nicht identisch gestaltet. In der linken Spalte und hellgrün, enhält die erste Ebene. Die Links sind reich gestaltet. Ihre Wichtigkeit wird allein durch die Gestaltung klar. Die zweite Ebene horizontal unterhalb des Kopfes ist ebenfalls als wichtig durchgestaltet, wohingegen die dritte zusätzliche Navigation über dem Fuß nur eine zusätzliche Brotkrumennavigation ist und blaß klein sich in das Design hineinschleicht. Vorhanden und sichtbar aber schüchtern zurückhaltend überlässt es anderen Elementen die Volle Aufmerksamkeit. Die Stichwortwolke versucht ebenfalls im Hintergrund zu bleiben, aber allein Schon Ort und Umfang wirken dem entgegen. Entweder die Grenzen des Viewports werden gesprengt und die Stichwortwolke macht sich unterhalb des Textes sowie oberhalb der Fußzeile inkl. Brotkrumennavigation breit oder aber es muss zunächst einmal ausgeblendet werden und nur bei Bedarf ins Design geholt werden.

Javascript

Javascript ist clientseitig. Das heißt, die Kontrolle über Version, Fähigkeiten und gar dessen Existenz ist ganz in der Hand des Websitebesuchers. Javascript kann deutlich Ressourcen vom Rechner belegen, das heißt, wenn der Endnutzer der Website bereits durch Multitasking die Ressourcen seines Rechners ausgeschöpft hat, kann ein Javascript der letzte Tropfen zum Absturz des Gesamtsystems darstellen. Javascript will als mit Bedacht eingesetzt sein und zur letzlich sollte es auch ohne gehen.

Accessibility

Zugänglichkeit oder Accessibility ist nicht nur eine Frage, ob die Navigation auf Javascript verzichtet, ABBR-Tags und LANG-Tags verwendet wurden, auf Kontraste und Schriftgrößen geachtet wurde, es ist auch eine Frage der Datenorganisation. Über welche Wege werden Inhalte zur Verfügung gestellt. Wieviele Klicks sind notwendig, welche Hilfen zur Orientierung auf der Site stehen zur Verfügung. Eine Stichwortwolke, die mehrere Seiten zu einem Thema gruppiert und in einer Vorauswahl zur Verfügung stellt ist ein Dienst im Sinne einer optimierten Zugänglichkeit.

Das Dilemma

Das Design profitiert von der Fokusierung auf wesentliche Inhalte. Javascript kann bei alten Browsern nicht ganz ausgelagert werden. Der Trend im Javascript geht in die richtige Richtung und wie in Übergangsphasen üblich kann man es nur falsch machen. Es wäre viel sinnvoller die neuen Methoden einzusetzen, doch sind da draußen in der Wildnis des Internets noch so viele IE6, dass es eben nicht geht. Und in Bezug auf Zugänglichkeit der Website mit dem Template möchte ich die Stichwortwolke drin habe, aber eben nicht wenn es das Design in Chaos stürzt.

Ich werde mich entscheiden müssen, … Ich schätze ich werde das onClick im Quelltext belassen und auf allen Ebenen Design (Optik), Dynamik (Techik, JS), Design (Ergonomie) … mich für den Kompromiss mit einer Träne im Auge entscheiden, im Moment kämpfe ich noch ein wenig mit mir. Was für ein Beruf.

Ursprünglich gepostet am 21. Oktober 06, 14:11 in meinem Blog “Silkester erzählt”.

Klick Klick Klick auf eine Blick

tempa wrote this 03:47:

„Ich weiß schon, was ich will“ sagt ein Interessent zu mir und ich höre ‚Fünf-Seiten-Webprospekt‘. „Ich will eine professionelle Site um Businesskunden adäquat anzusprechen.“ und in meinem inneren Kino beginnt die Vorstellung: an der Wurst- und Käsetheke: „ein Mal Flashintro, Wir über uns, Leistungen, Referenzen, Kontakt.“ — „Darf’s a bisserl mehr sein?“ — „Ah ja, dann geb’n’s mir noch ein Aktuell“

Auch das kann ein Einstieg in das Internet sein. Er ist ja auch sehr weit verbreitet.

Seitenstruktur
Von MA meist wenig bis nichts zu sehen und vom YA unerträglich viel — viel zu viel YA.

Professionalität hat viele Gesichter:

  • jene kleinen statischen Prospekte
  • WebTV-artige Flashfilme
  • Datenbank mit (Bezahl-)Inhalten
  • (Wissenschftl.) Essays, Anekdoten, Bilder, etc.
  • Interaktive Seiten für Gespräche

Eine Kombination aus den oben genannten Formen.

  • Eine WebAgentur setzt A-Z um
  • Eine WebAgentur schafft einen Rahmen,
    der vom Kunden bestückt wird

Jede erdenkliche Kombination dieser beiden.

Einige Fragen sind zu klären:

Wie soll die Website in Ihre Unternehmenskommunikation eingebettet sein?
Wieviel Zeit ist für die Kommunikation über und mit der Website innerhalb des eigenen Unternehmens geplant?
Über welche Kanäle soll die Zielgruppe Aufmerksam gemacht werden?

Für wen ist die Website gedacht?
Was soll der Seitenbesucher mitnehmen/tun?
Wann wird sich das Wiederkommen lohnen?
Wofür wird die Website aufgesucht/geschätzt?

Ursprünglich gepostet am 26. April 04, 19:43 in meinem Blog “Silkester erzählt”.

Zebrastreifen im CSS

tempa wrote this 01:02:

Irgendwie ist es doof, dass CSS selbst Modulo nicht zu kennen scheint … zumindest habe ich nichts gefunden. Es gibt zahlreiche Javascriptlösungen. Hier jene auf A List apart: Zebra Tables

Und das ist meine Lösung per PHP:

  1. <tr<?php $num = ($num+1); echo ($num % 2) ? '' : ' class="odd"';?>>
  2. <td>SP1R1 Zelleninhalt</td>
  3. <td>SP2R1 Zelleninhalt</td>
  4. <td>SP3R1 Zelleninhalt</td>
  5. </tr>
  6. <tr<?php $num = ($num+1); echo ($num % 2) ? '' : ' class="odd"';?>>
  7. <td>SP1R2 Zelleninhalt</td>
  8. <td>SP2R2 Zelleninhalt</td>
  9. <td>SP3R2 Zelleninhalt</td>
  10. </tr>

Das geht vermutlich eleganter, aber immerhin, es ist immer die selbe Zeile so dass man sich keine Gedanken machen muss, ob dies nun eine gerade oder ungerade Zeile ist und man kann jederzeit zwischenrein eine Zeile einfügen. Die Streifen bleiben erhalten.

Ursprünglich gepostet am 23. Oktober 06, 03:34 in meinem Blog „Silkester erzählt“.

Update:

CSS3 bietet für diese beliebte Listendarstellung mittlerweile nth-child siehe W3C Pseudoklassen (6.6.5.2. : nth-child() pseudo-class)

  1. foo:nth-child(even) { backrgound-color: "#999" }
  2. foo:nth-child(odd) { backrgound-color: "#CCC" }

nth-child wird in fast allen aktuellen Browsern unterstützt. Unbeachtet bleibt die Pseudo-Klasse im IE, selbst im IE8. Für IE gibt es den folgenden Heckmeck:

  1. /* li:nth-child(2) */
  2. li:first-child + li {}/*Works for IE8*/

Was ist ein Template?

tempa wrote this 00:21:

Wozu ist ein Template gut?

Gestern [geschrieben am 24 Okt. 2006] fiel mir nicht schlecht die Kinnlade herunter, als ich hörte, dass bei der Vorstellung zur Planung von größeren Projekten ein Punkt sich mit der Design-Änderung während des Projektverlaufs und der daraus resultierenden, stundenlangen Anpassung des bis dahin fertigen Zwischenstandes befasste. Da es sich dabei auch noch um einen ehemaligen Interessenten handelte, also die Templaterie bekannt sein dürfte, habe ich offensichtlich noch ein Problem Sinn und Zweck von Templates zu transportieren.

Ein Template ist ein Grid, ein Raster, eine Matrix, ein Rahmen, in den veränderliche Inhalte eingefüllt werden können. Ein gutes Template besteht nicht nur aus modularen Kopf- und Fußzeilen oder einem Seitenstreifen, den man beliebig austauschen kann. Ein gutes Template berücksichtigt auch Seitenstrukturen. Das gestrige Beispiel – eine Seite mit Kochrezepten – ist dabei eine wunderbare Ausgangssituation.

Ein Kochrezept besteht aus:

  1. Titel des Rezeptes
  2. Kategorieen wie z.B. Land, Vegetarisch,
    Dunkles Fleisch, Menufolge, etc.
  3. Abbildung des aufgetafelten Gerichtes
  4. Liste der Zutaten
  5. evt. Liste der Gerätschaften
  6. Arbeitsanweisung in x Schritten inklusive Illustrationen
  7. Rezept-Historie, Quellen, Einkauftipps

Das sind sieben verschiedene Elemente mit unterschiedlichen Anforderungen und Positionierungen und Rahmenbedingungen, welche sich in HTML-Strukturen wiederspiegeln. Jeder HTML-Struktur kann eine ID oder eine Klasse zugeordnet werden und zu jeder HTML-Struktur, zu jeder ID und zu jeder Klasse werden in der CSS Designanweisungen hinterlegt.

Was bringt es ein, ein Template von A-Z
durchzuplanen und umzusetzen?

Gerade in größeren Projekten ist die Planung und Identifizierung der Objekte, Elemente und Bausteine essentiell, um:

  1. Design-Entwicklung und Projektinhalte zusammenstellen parallel beginnen zu können
  2. Frei zu sein in der Design-Entwicklung und sich z.B. auf Sponsorenfarben einstellen zu können
  3. Im Design den Modetrends auch in den kleinen Details folgen zu können, und damit frisch und aktuell zu wirken.
  4. !Most important: Sich das stundenlange Fieseln mit Design-Änderungen in 100ten und 1.000den von Textstellen zu ersparen.

Planung und die Verwendung von Semantik für Layout-Anforderungen ist nicht nur eine Spielerei mit dem man einen CSS-Zengarden ins Netz stellen kann. Es ist bares Geld, das man spart, weil man vorher ein wenig mehr Zeit in die Meta-Ebene (dem was ist was und was bedeutet was …, welche Mengen, Grade der Bedeutsamkeit, etc.) steckt und kontinuierlich der Versuchung wiedersteht, mal g’schwind einen Inlinestyle oder schlimmer einen Font-Tag zur Gestaltung zu verwenden.

Ursprünglich gepostet am 24. Oktober 06, 13:52 in meinem Blog “Silkester erzählt”.

Farbklang: Hellblau, Ziegelrot und Creme

tempa wrote this 00:01:
Farbkombinationen

Farbklang: Hellblau, Ziegelrot und Creme

Der Farbklang zählt zu den Klassikern. Es ist ein solider konservativer Farbklang, den man immer wieder in den Kleider- und Tapetenmustern findet. Er hat etwas wohliges ohne allzu langweilig zu sein. Ich kann dem Farbklang viel abgewinnen und mir viele gefällige Designs vorstellen, doch eines sollte man bei diesem Farbklang bedenken, man benötigt eine vierte Farbe für die Schrift, wenn man hellblau als Hintergrundfarbe wählt. Ziegelrot flimmert und Creme auf Hellblau bietet zu wenig kontrast. Schwarz wäre mir persönlich zu hart, weswegen ich persönlich Schwarz abschwächen würde. Ich empfehle ein dunkles Petrol oder ein sehr dunkles Blaugrau.

Das nur weil es mir gerade in einer Website begegnete … ich klickte weg. Ich wollte mich nicht zum Lesen der Site überreden und das obwohl ich mir vorgenommen hatte, mich über die Forenautorin mal näher zu informieren. Das ist eine verpasste Chance.

Ursprünglich gepostet am 1. November 06, 05:56 in meinem Blog „Silkester erzählt“.

PHP: regex kurz notiert

tempa wrote this 23:33:

Ich treibe mich noch immer bei den PHP-Freaks herum. Jetzt im Regex-Tutorial (link lost). Die Regeln sind klar und einfach zusammengefasst und hier ist ein guter Platz, um die Audrücke für mich nochmal zu notieren:

REGEX-Metacharacters (~Ausdrücke)
Ausdruck Bedeutung
Kleine Übersicht der Regex-Audrücke
^ „Start der Zeile“/innerhalb eines Ausdrucks bedeutet es ’nicht‘
$ „Ende der Zeile“ bzw. genauer „bis zu einer neuen Zeile Zeichen“
Sobald ein Zeilenwechsel (n) im String vorkommt, ergibt ‚$‘ einenTreffer.
* „Zero (kein) oder mehr Treffer“ oder anders ausgedrückt egal wieviel,egal was
+ „Wenigstens ein Treffer muss sein“ also fast egal wieviel, egal was
? = optional, „kann vorkommen“
() Ausdrücke gruppieren
| = oder (a|b) bedeutet klein A oder klein B
. bedeutet ein beliebiges Zeichen
[] kennzeichnet eine Zeichenklasse [0-9] Zahlen 0-9 oder [a-z] Kleinbuchstaben A-Z
(latin-1…Umlaute und Sonderzeichen nicht eingeschlossen.)
{n,m} wenigsten ’n‘ Vorkommen und maximal ‚m‘ Vorkommen

Weiter geht es mit Teil Zwei dieses Tutorials auf PHP-Freak hier: Introduction to regular expressions (#2): ERE POSIX (link lost)

Ursprünglich gepostet am 1. November 06, 05:56 in meinem Blog „Silkester erzählt“.

Mailinhalte fischen mit PHP und Javascript

tempa wrote this 20:55:

Ich programmiere noch für den kleinen Hausgebrauch und was da so zusammenkommt, das kann man teilweise hier zum gefälligen Gebrauch oder Nichtbeachtung wiederfinden. ES dient auch mir als Erinnerungstütze.

z.B. sollte ich nicht vergessen die Methode <form action="?" method="post"> anzugeben. Wenn ich auf $_SERVER[php_self] von wegen dem XSS-Exploit das heutzutage nicht mehr bei allen Servern geht und damit ist $_SERVER[php_self] nicht mehr generell böse … wie auch immer geht eben auch ohne.

  1. <?php $m = isset($_POST[m]) ? intval($_POST[m]) : 1 ; ?>
  2. <form action="?" method="post">
  3. <input type="text"
  4. value="<?php echo $m; ?>" name="m" id="m"
  5. style="width: 4em;"
  6. onfocus="this.value=''"
  7. onChange="this.value= isNaN(this.value)? 1 : parseInt(parseFloat(this.value))"
  8. onBlur="this.value= isNaN(this.value)? 1 : parseInt(parseFloat(this.value))"/>
  9. <input type="submit" value="go" class="button" />
  10. </form>

Es wird per Javascript schon dafür gesorgt, dass in das Formularfeld nur Ganzzahlen dürfen, nur Javascript kann leicht abgeschaltet werden oder im Browser überabeitet werden, ergo wird die Eingabe selbstredend auch in PHP noch einmal überprüft und überarbeitet bzw mit dem Defaultwert ersetzt. OK im PHP war ich noch etwas Faul. Schließlich müsste ich auch dort prüfen mit PHP is_float() prüfen statt mit PHP isset() seltsamer Weise aber scheint hier das Ergebnis immer false zu sein und der Default wird gewählt.

Dass die Werte in Javascript neben parseInt (= runde auf Ganzzahl ab) zunächst noch mit parseFloat (= behandle Wert als Zahl) bearbeitet wird liegt daran, dass bei der Suche nach der Javascript-Syntax für PHP intval() und Co mir die folgenden beiden Links begegneten:

  1. javascript parseInt is broken
  2. JavaScript parseInt() bug

(mehr …)

Link-Tipp: PHP – Regular Expression

tempa wrote this 13:41:

Yessss! Endlich habe ich eine Seite gefunden mit einem guten Cheatsheet für regular Expression. Hier zwei Links die einem wirklich weiterhelfen mit diesen Ungetümen, wobei der erste Link mir einen Tick mehr zusagt als der Zweite:

  1. php-regex: Regular Expressions Tutorial
  2. weblogtoolscollection: Regular Expressions Tutorial
     

Hier ist noch ein nützlicher Link: Powerfull onliner – PHP leere Zeilen entfernen (RegEX in der Praxis)

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