Mit ‘Programmieren mit PHP’ getaggte Artikel

PHP Programmierung – PHP Funktion zur Generierung von transparenten Spacer

Mittwoch, 05. Mai 2010

Wir hatten in unserem letzten Artikel darüber informiert, wie man mittels einer PHP Funktion die Generierung von <img /> Tags erleichtern kann. Diese Funktion spart Zeit, sichert eine einheitliche Schreibweise aller <img /> Tags und erlaubt Änderungen in der Schreibweise, sollte diese sich durch Richtlinien oder Suchmaschinenoptimierung ändern sollen. Heute werden wir präsentieren wir man mit Hilfe dieser Funktion die sehr oft benutzten Spacer (transparente 1×1 Pixel Bilder) generieren kann.

Die PHP Funktion zur Erstellung von Spacer wir ein Aufruf der Funktion CreateImage sein, dass bestimmte Parameter immer wieder nutzt. Anbei die Funktion:

function CreateSpacer($nWidth=1, $nHeight=1) {
    return CreateImage(IMAGES_PATH."trans.gif","","width: ".$nWidth."px; height: ".$nHeight."px; border: 0px","");
}

Was macht die Funktion?

Es wird die Funktion CreateImage aufgerufen, wobei der Pfad zu der 1×1 Pixel Grafik (trans.gif) vorgegeben ist und explizit keinen Rahmen angezeigt wird. Die Konstante IMAGES_PATH kann in einer Konfigurationsdatei als der Pfad zu dem Ordner definiert werden, wo sich Ihre Grafiken befinden. Die Funktion übernimmt die übergebenen Parameter Breite und Höhe, die die meistbenutzen Parameter bei der Erstellung von Spacer <img /> sind. Diese können auch nicht angegeben werden zwecks einer einfacheren Ausführung der Funktion, dann wird das Bild mit 1px Höhe und 1px Breite erstellt.

Beispiel der Nutzung

Normalerweise hätten Sie mit HTML eine solche Schreibweise zur Erstellung eines Spacers nutzen sollen:

<td><img src="<?php echo IMAGES_PATH;?>trans.gif" style="width: 200px; height: 20px; border: 0px;" alt="" title="" /></td>

Mit unserer Funktion geht das einfacher:

<td><img src="<?php echo CreateSpacer(200,20);?></td>

Somit vererbt die CreateSpacer Funktion die Funktion CreateImage auf eine einfache Art und Weise. Die Grundfunktion kümmert sich bei diesem Aufruf um den alternativen Text, korrekte Schreibweise des Tags usw.

PHP Programmierung – PHP Funktion zur Generierung von W3C-konformen img Tags

Montag, 03. Mai 2010

Die PHP Programmierung kann auf sehr vielen Art und Weisen in der Optimierung der HTML Programmierung eingesetzt werden. Das beinhaltet die Automatisierung von HTML Routinen, die sich immer wieder wiederholen und eine aufwändige Schreibweise mit sich bringen. Die Erstellung von korrekten und W3C-konformen <img> Tags erfordert das Ausfüllen von mehreren Attributen dieses Tags, was man auch gerne vergisst, da die Browser die Bilder nur mit dem source (src) Attribut auskommen und das Bild korrekt darstellen. Jedoch gibt es ein Paar Probleme, die man durch die Automatisierung der Erstellung von <img> Tags vermeiden kann:

1. Wenn ein Bild verlinkt wird, wird automatisch einen Rahmen erstellt – wenn das Bild ohne den Attribut style=”border: 0px”; erstellt wird, macht der Browser automatisch einen Rahmen um das Bild, um zu zeigen, dass man darauf klicken kann.

2. Wenn man keine genauen Maße angibt, wird das Bild beim Aufrufen der Seite erstmal auf der Breite des alternativen Textes gespannt – da der Browser beim Laden des Bildes nicht weiß, wie breit und hoch es ist, muss das Bild erstmal geladen werden und dann analysiert werden. Bis das erfolgt, wird der Platzhaltern vom Bild automatisch auf die Breite des angegebenen Alternativtextes gespannt, was mit vielen Bildern eine deutliche Unruhe beim Laden der Seite bereitet.

3. Der alternativ Text wird nur angezeigt, wenn das “title” Attribut benutzt wird.

Wir präsentieren an der Stelle eine PHP Funktion, die <img > Tags mit den entsprechenden Attributen je nach Aufruf in HTML generiert.

function CreateImage($sSrc="", $sAlt="", $sStyle="", $sId="") {
 
 if(is_file($sSrc)){
  $arImageInformation = getimagesize($sSrc);
  $nImageWidth = $arImageInformation[0];
  $nImageHeight = $arImageInformation[1];

  $PrintId="";
  if ($sAlt!="" &amp;&amp; $sId!="") $PrintId = ' id="'.$sId.'"';
  
  if(!strstr($sStyle, "width") &amp;&amp; !strstr($sStyle, "height") &amp;&amp; $sStyle!= ""){
   $sImageInfo = 'style="width: '.$arImageInformation[0].'px; height: '.$arImageInformation[1].'px;'.$sStyle.'"';
  }
  elseif(!strstr($sStyle, "width") &amp;&amp; !strstr($sStyle, "height") &amp;&amp; $sStyle== ""){
   $sImageInfo = 'style="width: '.$arImageInformation[0].'px; height: '.$arImageInformation[1].'px; border: 0px;"';
  }
  else {
   $sImageInfo = 'style="'.$sStyle.'"';
  }
  $sImage =  '<img src="'.$sSrc.'" '.$sImageInfo.' alt="'.$sAlt.'" title="'.$sAlt.'" '.$PrintId.'/>'; 
   return $sImage;
 }else{
  return "Pfad ".$sSrc. " not correct";
 }
}

Was macht die PHP Funktion und welche Parameter übernimmt sie?

1. Funktion – es wird zunächst geprüft, ob der angegebene Pfad zum Bild (übers src Attribut) existiert. Wenn nicht, wird einfach ein Text mit dem Falschen Pfad zurückgegeben. Wenn der Pfad existiert, werden die Maße des Bildes mittels der Funktion getimagesize ausgelesen. Dann wird das style Attribut, das alle nicht mehr als einzelne Attribute zu nutzende Attribute vereiningt, generiert. Das entspricht auch die W3C Richtlinien. In das style Attribut werden width, height, (die automatisiert ermittelt werden) border und weitere durch den User anzugebenden Eigenschaften reingeschrieben. Je nach dem, ob der User die Eigenschaften selber angibt, wird die border Eigenschaft automatisiert dazu geschrieben. Eventuellen id und alt werden ergänzt, wobei der title Tag wird automatisch wie der alt hinzugefügt. Das stellt sicher, dass der Besucher immer den alternativ Text wahrnehmen kann.

2. Parameter

 - $sSrc – der Pfad zum Bild
 - $sAlt – der alternativ Text des Bildes – hierüber kann man über PHP automatisiert Texte nutzen, die für die gesamte Seite relevant sind.
 - $sStyle – die durch den User definierten Style-eigenschaften wie width, height, border, margin etc.
 - $sId – die ID vom Bild, falls es durch Javascript Funktionen manipuliert werden wird.

Diese Funktion stellt eine konforme Art der Schreibweise von den <img /> Tags dar und erlaubt das Vermeiden der kleinen Fehler bei der täglichen Programmierung mit HTML. Sie lässt sich mit weiteren Parameter beliebig erweitern, es lässt sich beispielsweise die URL per Parameter übergeben, wohin das Bild verlinken soll.

Multiple Select Auswahl an PHP Array übergeben

Samstag, 20. März 2010

Als Fortsetzung von unserem letzten Artikel “Select Options automatisch mit Javascript markieren“, nehmen wir uns heute ein weiteres Problem vor, dass sich auf die Übergabe der Mehrfachauswahl der Selectoptions an PHP bezieht. Nachdem wir unsere Mehrfahauswahl mit Javascript getroffen haben, wollen diese komfortabel an PHP übergeben.

Problematik

Der Standardfall, wenn wir ein HTML-Select nutzen, sieht bei der gängigen Programmierung so aus:

<select name="MeinSelect">
<option value="1">Erster Element</option>
<option value="1">Erster Element</option>
</select>

Hier können wir nur eine Option auswählen und auch nur eine Option beim Absenden des Formulars abfangen. Um die Mehrfach-Auswahl des Selects zuzulassen, müssen wir das Feld so definieren:

<select name="MeinSelect" multiple="multiple">
</select>

Hier fängt PHP jedoch nur ein Element ab, wenn man das Formular absendet. Was tun?

Lösung

Um PHP zu helfen einzusehen, dass wir nicht einfach nur eine Option mit unserem Select abschicken, müssen wir unseren Select wie folgt definieren:

<select name="MeinSelect[]" multiple="multiple">
</select>

Hier fällt auf, dass wir beim Namen des HTML-Feldes die Zwei eckige Klammern hinzugefügt haben – name=”MeinSelect[]“. Da ändert sich nichts an der HTML Programmierung, jedoch somit teilen wir PHP mit, dass wir eigentlich ein Array übergeben und dieses Array wird automatisch über die $_POST Variable verfügbar:

foreach($_POST['MeinSelect'] as $MarkiertesElement) {
echo MarkiertesElement;
}

Aufgrund des Positionieren der Klammer, berücksichtigt PHP unser Select auf eine andere Art und Weise und kann die Auswahl auslesen. Was uns bleibt ist diese Werte in einer for Schleife auszulesen und zu nutzen. Somit können Sie beispielsweise eine Auswahl an Tags einer Seite zuordnen und bei jedem Durchgehen der Schleife führen Sie ein MySQL “Insert” aus.

Fazit

Die Übergabe der Mutliple Select Auswahl an PHP hilft Ihnen eine Mehrfachauswahl auch Ihren Nutzer zur Verfügung zu stellen. Die Alternative hierzu wäre die Elemente zu listen und neben jedem Element eine Checkbox zu implementieren, die Sie dann einzeln auswerten müssen. Diese Methode ist viel komplizierter. Die Nutzer sind mittlerweile an die Mehrfachselektierung gewöhnt. Wenn Sie ihnen das bequemer machen wollen, können Sie nützliche Auswahl-Methoden mit Javascript einbauen. Lesen Sie hier mehr dazu – “Select Options automatisch mit Javascript markieren“.