wenn die Google Suche mich zu selfHTML führt…

28. Juli 2010

Es ist immer wieder lustig, wenn ich bei Recherchen auf selfHTML stoße. Eigentlich ist selfHTML ja großartig, unglaublich nützlich und es war mir, bevor ich jQuery entdeckte, eine große Hilfe bei Javascript DOM Fragen. Das selfHTML Forum ist allerdings immer wieder ein Grund, in die Tischplatte zu beißen. Dort lauern, teilweise schon seit Jahren, diverse selbstgerechte Forentrolle, die statt einer Antwort gerne mal mit arroganten Antworten aufwarten. Interessanterweise sagen mir die auffälligsten inzwischen sogar schon namentlich etwas, ein gewisser Typ der mit w beginnt und ahsaga aufhört, dürfte jedem HTML Suchenden schon untergekommen sein.

Jedenfalls suchte ich heute für mein iframe Problem nach “iframe durchsichtig” und google führte mich direkt  zum selfHTML Forum, wo jemand genau die Frage hatte, auf die ich eine Antwort suchte. Und was kam von oben genanntem Forenuser für eine Antwort?

hatten wir erst gestern wieder: http://forum.de.selfhtml.org/?t=105048&m=648702

Der verlinkte Beitrag enthielt dann dieselbe Frage, allerdings keine Antwort, sondern den Verweis auf die selfHTML Suche von einem mir ebenfalls schon des öfteren durch weniger hilfreiche Beiträge aufgefallenen Users. Das erste Ergebnis der entsprechenden Suche liefert dann einen weiteren Beitrag mit zahllosen RTFM Bemerkungen. Ob da irgendwo dann auch die Antwort dabei steht, weiß ich nicht, ich habs dann sein lassen nach der dritten Verlinkung und nochmal google befragt. Der zweite Google Treffer hat mich dann DIREKT auf eine Antwort gebracht.

Die selfHTML Foren bieten eigentlich so viele Beispiele für sinnfreie Antworten auf Fragen, dass die allein mein Blog füllen könnten. Das Gute ist, dass man Antworten auf die Fragen meistens dann auch woanders finden kann. Das selfHTML Forum ist höchstens für einen Lacher zwischendurch geeignet.

Facebook Like Box

28. Juli 2010

Das werd ich wohl noch öfter machen müssen… Daher hier mal meine Variante, wie ich eine Facebook “gefällt mir” Box auf einer Seite einbinden kann…

Facebooks Anleitung zum Einbinden einer Like Box

Connections: die Anzahl der Beispieluser, die die entsprechende Gruppe auch mögen
Stream: das Zeug in der Mitte halt… mir fällt grad keine adäquate Beschreibung ein und “stream” find ich auch nich sehr ergiebig
Header: der blaue Header mit “find us on facebook”

Und um das ganze mal zu testen, binde ich hier mal eine Testgruppe ein:

iframe Transparenz für IE

28. Juli 2010

Es ist traurig, dass ich überhaupt noch mit iframes arbeiten muss. Aber der Kunde wünschte auf seiner Typo3 Seite eine Möglichkeit, sich auf einer externen Seite einzuloggen. Mir fiel da beim besten Willen keine andere Möglichkeit ein, als auf der Typo3 Seite ein iframe reinzubasteln, dessen Inhalt bereits auf der externen Seite ist, auf der man sich einloggen will. Das  funktionierte auch einwandfrei – jedenfalls fast. Denn die olle Diva IE hat sich mal wieder quergestellt und statt eines transparenten Hintergrunds das iframe weiß unterlegt.

Meine 2 Sekunden andauernde Google Suche brachte mich erstmal zu selfHTML, wo die dort übliche Antwort zu der Frage natürlich ein “such mal” war, aber beim zweiten Treffer wurd ich dann fündig. Damit auch IE sich bequemt, das iframe durchsichtig zu machen, mache man folgendes:

1. allowtransparence auf true setzen

  1. <iframe src="login.html" frameborder="no" allowtransparency="true"></iframe>

2. dem Hintergrund der Seite, auf die das iframe verweist, sagen, er soll transparent sein.

  1. body{background: allowtranyparency: true}

Diese CSS Schreibweise kannte ich übrigens noch nicht, aber solang’s funktioniert…

MySQL: Einträge die jünger als 1 Monat sind

26. Juli 2010

Memo an mich: so funktioniert das. Ich will alle Daten aus der DB holen, die vor weniger als einem Monat hinzugefügt (date_added) wurden.

  1. SELECT * FROM table WHERE date_added >= date_sub(CURDATE(), INTERVAL 1 MONTH)

Zusammengesetzte Variablen in Smarty

09. Juli 2010

Die Ausgangslage: Ich habe ein Produkt, dem in der Datenbank eine Statusvariable zugewiesen wird (0=normal, 1=abgelaufen, 2=ausverkauft, usw). Beim Ansehen des Produkts möchte ich jetzt den entsprechenden Text ausgeben über den Status des Produkts. Da meine Seite mehrsprachig ist, sind meine Texte alle in einem großen $trans Array gespeichert. Heißt, wenn ich den jeweiligen Status ausgeben will, muss ich

  1. {if $product.status == 0}
  2. {$trans.statusmeldung0}
  3. {elseif $product.status == 1}
  4. {$trans.statusmeldung1}
  5. {elseif $product.status == 2}
  6. {$trans.statusmeldung2}
  7. {elseif $product.status == 3}
  8. {$trans.statusmeldung3}
  9. {/if}

schreiben. Da noch nicht feststeht, ob nicht weitere Zustände für den Status hinzukommen, hab ich mir in den Kopf gesetzt, das mit zusammengesetzten Variablen zu machen. Und siehe da, im Gegensatz zu Typo3 und seiner stinkenden Community wurde ich binnen kürzester Zeit fündig und gebe meine Statusmeldung jetzt so aus:

  1. {assign var=thestatus value="statusmeldung%s"|sprintf:$product.status}
  2. {$trans.$thestatus}

eigene Smarty Funktion und Umlaute

08. Juli 2010

Sehr interessant. Um Titel URL-tauglich zu machen, habe ich eine Funktion geschrieben, die mir einen Titel in eine URL umwandelt. Weil ich die Funktion gerne gleich direkt im HTML nutzen wollte, hab ich mir die Funktion dann im Smarty registriert. Das ganze sah so aus:

  1. function cleanName($txt) {
  2. $umlaute = Array("ä", "ö", "ü", "Ä", "Ö", "Ü", "ß");
  3. $umlauts = Array("ae", "oe", "ue", "Ae", "Oe", "Ue", "ss");
  4. //string in kleinbuchstaben umwandeln
  5. $txt = strtolower($txt);
  6. //umlaute umwandeln z.b. ä => ae, ö => oe
  7. $txt = str_replace($umlaute, $umlauts, $txt);
  8. //sonstige sonderzeichen durch underscore ersetzen
  9. $txt = preg_replace( '|[^a-zA-Z0-9]|s', '_', $txt );
  10. //leerzeichen durch underscore ersetzen
  11. $txt = str_replace(" ", "_", $txt);
  12. return $txt;
  13. }
  14. $smarty->register_modifier('productCleanName', 'cleanName');

Das ganze funktionierte grundsätzlich auch gut, nur stellte ich nach einer Weile fest, dass Umlaute nicht wie geplant durch ae, oe, ue ersetzt wurden, sondern als Sonderzeichen gewertet und durch underscore ersetzt wurden. Wenn $var = “Statistik für Anfänger” dann ergibt

{$var|productCleanName}

komischerweise

statistik_f__r_anf__nger

Ich hab ne ganze Weile gebraucht, um zu begreifen, woran das liegt und eigentlich hab ichs auch nur durch Zufall entdeckt. Ich suchte nach Umlautproblemen in Smarty Funktionen und stieß dabei auf allgemeine Umlautprobleme mit strtolower. Und siehe da, als ich strtolower auskommentierte, funktionierte das Umlaut Ersetzen plötzlich einwandfrei.

Jetzt habe ich meine Funktion etwas umgestellt und plötzlich funktionierts:

  1. function cleanName($txt) {
  2. $umlaute = Array("ä", "ö", "ü", "Ä", "Ö", "Ü", "ß");
  3. $umlauts = Array("ae", "oe", "ue", "Ae", "Oe", "Ue", "ss");
  4. //umlaute umwandeln z.b. ä => ae, ö => oe
  5. $txt = str_replace($umlaute, $umlauts, $txt);
  6. //string in kleinbuchstaben umwandeln
  7. $txt = strtolower($txt);
  8. //sonstige sonderzeichen durch underscore ersetzen
  9. $txt = preg_replace( '|[^a-zA-Z0-9]|s', '_', $txt );
  10. //leerzeichen durch underscore ersetzen
  11. $txt = str_replace(" ", "_", $txt);
  12. return $txt;
  13. }
  14. $smarty->register_modifier('productCleanName', 'cleanName');


Nachtrag:

Inzwischen kenne ich noch eine andere Lösung. Danke an meinen Lieblingsleser für den Hinweis. strtolower ist generell wohl nicht geeignet, mit Umlauten umzugehen. Deshalb sollte man statt strtolower besser folgendes verwenden:

  1. //string in kleinbuchstaben umwandeln
  2. $txt = mb_strtolower($txt, "UTF-8");

fonts für fpdf

01. Juli 2010

Ums mir mal zu notieren, wie man für fpdf seine Fonts umwandelt…

Dieses Turotial erklärts ausführlich und gut.

2: The upload has failed, no uploaded file found!

01. Juli 2010

Diese Meldung hab ich heute von typo3 bekommen, als ich versuchte, im Backend Dateien hochzuladen:

2: The upload has failed, no uploaded file found!

Ich muss durchaus zugeben, die Recherche zu dem Problem war die erste, die mich wirklich schnell zu einer Lösung des Problems gebracht hat. Dabei geholfen hat mir inbesondere dieser Forumspost, wo der Poster anschließend seine eigene Frage beantwortet hat.

Das Problem ist normalerweise

  • falsche Ordnerberechtigungen (am besten mit777 testen, obs dann immer noch nicht funktioniert)
  • Einstellungen in der php.ini
  • fehlendes tmp Verzeichnis für Fileupload

Bei mir wars letzteres. Und das ist ein Problem, das eigentlich nur der Webspace Anbieter lösen kann. Ich bin ja wahrlich kein Experte für sowas, aber wenn ich das richtig verstanden habe, gibts ein tmp Verzeichnis, in das beim Fileupload die Dateien gespeichert werden, bevor sie dann weiterverschoben werden. Gibts das Verzeichnis nicht, wirft typo3 diese Meldung aus.

Ich hab also bei UPC angerufen und mein Problem geschildert. Erste Reaktion war: “Das kann nix mit uns zu tun haben. Wenn Sie ein tmp Verzeichnis brauchen, legen Sie’s halt an.” Nach einigen Diskussionen war der Herr dann bereit, sich mit seinen Kollegen zu beraten. 5 Minuten später kommt er etwas zerknirscht wieder an den Apparat: “Ja, das war tatsächlich ein Problem bei uns, wir haben jetzt das tmp Verzeichnis angelegt und mit den entsprechenden Rechten versehen. Tut mir leid.”

Ich nehm’s ihm gar nicht übel. Wär ich an seiner Stelle würd ichs auch als erstes für einen Userfehler halten. Aber dass die Hotline Fuzzies einen fast immer mit diesem “selber schuld” abwimmeln wollen, ohne sich das Problem überhaupt anzuhören, stört mich schon. Grad bei so Server Geschichten kenn ich mich dann auch zu wenig aus, um dem Typ am Telefon klarzumachen, dass es am Server liegen MUSS.

Naja. Problem jedenfalls gelöst und diesmal nur binnen einer halben Stunde. Weiter so!

2: The upload has failed, no uploaded file found!