Windows Media Player 12 auf Taskleiste minimieren/auf WMP 11 downgraden unter Windows 7

13. Mai 2010

Teilen

Die oft gejubelte neue Betriebssystemversion von Microsoft – Windows 7, hat eine komplett neue Benutzerinteraktion eingeführt. Unter anderem werden offene Programme per Mouseover mittels Buttons auf der kleinen Vorschau gesteuert. Windows 7 kommt mit einer neuen Version von Windows Media Player – 12, im Gegensatz zu der 11-er Version von Windows Vista. Die 12-er Version von WMP ist in vielen Bereichen leichter und einfacher zu nutzen, jedoch fehlt aufgrund der Funktionalität von Windows Media Player 12, der Richtlinien von Windows 7 und der neuen Nutzeroberfläche eine oft genutzte und entscheidende Funktion – das Minimieren von Windows Media Player 12 in die Taskleiste, wobei ein Miniplayer direkt auf der Taskleiste eingeblendet werden sollte.

Das ist im Windows 7 nicht mehr möglich. Stattdessen werden Wiedergabebuttons per Mouseover vom Programm in der Taskleiste angezeigt, die jedoch etwas langsam kommen und es ist keine Lautstärkeänderung möglich. Insbesondere für Nutzer wie ich, die sich seit vielen Jahren ans Miniplayer gewohnt haben, ist das ein Nutzungsbruch.

Welche Auswege gibt es?

Downgrade auf Windows Player 11 unter Windows 7 – ich habe das erfolgreich bei mir geschafft, da mir WMP 11 besser gefällt. Hier sind die Schritte (auf eigene Gefahr!!)

  1. Eine Installationsdatei herunterladen von dieser Adresse.
  2. Tippen Sie services.msc in der Kommandozeile
  3. Stoppen Sie den Service Windows Media Player Network Sharing Service
  4. Übernehmen Sie den Zugriff auf alle Dateien unter Programme/Windows Media Player, alle Dateien die mit wmp* anfangen und die Datei wmploc.dll.mui (Suchen Sie danach).
  5. Führen Sie die unter (1) heruntergeladene Datei aus
  6. Tippen Sie regedit in der Kommandozeile und löschen Sie folgenden Eintrag aus der Registry, nach dem Sie ein Backup davon machen - HKEY_LOCAL_MACHINE\Software\Microsoft\MediaPlayer\Setup\Installed Versions
  7. Starten Sie Windows 7 neu
  8. Anbei ein Screenshot des Miniplayers auf der Taskleiste von Windows Media Player 11 unter Windows 7

    WMP11 auf Windows7

    WMP11 auf Windows7

Windows Media Player 12 in die Taskleiste minimieren (nur Windows 7 32-bit) (auf eigene Gefahr!!!)

Seit ein Paar Wochen gibt es die Möglichkeit eine DLL Datei von Windows Media Player 12 mit einer verälteten aus WMP 11 zu überschreiben, die sich genau um die Funktionalität des Minimierens in die Taskleiste kümmert. Da ich das nicht ausprobiert habe, werde ich einfach den folgenden Link posten, wo die einzelnen Schritte verfolgt werden können. Das habe ich selber nicht ausprobiert, deswegen würde ich vorab die aktuelle Version backupen.

Javascript Programmierung – Zahl formatieren mit Javascript

11. Mai 2010

Teilen

Bei der Programmierung mit Javascript (JS), müssen wir oft mit Zahlen arbeiten. Diese Zahlen werden aber vom System automatisch auf die U.S. Schreibweise angepasst. Das bedeutet, dass das Komma zur Gruppierung der Tausenderstellen benutzt wird, wobei der Punkt als Trennzeichen für die Nachkommastellen gilt. Eine solche Zahl würde so aussehen:

1000.00 – U.S. Schreibweise

Wir möchten aber, dass die Zahl nach der deutschen Schreibweise generiert wird, und zwar:

1000,00 – deutsche Schreibweise

Oft müssen wir mit Javascript zahlen “on-the-fly” formatieren, wenn wir beispielsweise buchhalterische Rechnungen mit JS/Ajax machen, wo die Seite nicht neu aufgerufen und somit vom Server nicht generiert wird. Wir könnten mit PHP die Zahlen formatieren, manchmal aber brauchen wir eine einfache Funktion, die die Zahl so verarbeiten kann, dass sie der deutschen Schreibweise entspricht und das Webdesign konform behält. Anbei eine solche Funktion, geschrieben in Javascript:

function ZahlFormatieren(x) {
  var k = (Math.round(x * 100) / 100).toString();
  var sEnding;
  var sReturn;
  if (k.indexOf('.') == -1)
    sEnding = '.00';
  else
    sEnding = '00';
 
  k = k + sEnding;
 
  var p = k.indexOf('.');
  sReturn = k.substring(0, p);
  sReturn = sReturn + ',';
  sReturn = sReturn + k.substring(p+1, p+3);
  return sReturn;
}

Was macht die Funktion?

Die Javascript Funktion zur Formatierung von Zahlen übernimmt lediglich die vom System generierte Zahl, z.B. von einer Berechnung von anderen Zahlen. Zunächst wird geprüft, ob die Zahl bereits Nachkommastellen hat und wenn nein, werden automatisch die .00 am Ende der Zahl angehängt. Dann wird der Punkt durch ein Komma ersetzt und die Zahl wird zurückgegeben.

Implementierung der Funktion

Sie können die Funktion auf ein Ereignis setzen, so etwa wie onclick. Beispielsweise können Sie ein Feld haben, wo Sie eine Zahl eingeben und ein Button haben, der die Zahl in dem Feld formatiert:

<input type="text" value="24.5" id="FieldToFormat" />
<input type="button" value="Zahl formatieren" onclick="document.getElementById('FieldToFormat').value=ZahlFormatieren(document.getElementById('FieldToFormat').value);" />

Natürlich muss die Funktion bereits per Include oder im Head per <script></script> der Seite zur Verfügung stehen, um aufgerufen werden zu können.

Erweiterungen

Man kann relativ einfach noch den Punkt zur Gruppierung von Tausenderstellen einfügen, sowie diverse Währungszeichen anhängen, z.B. €. Diese müsste man als Parameter übergeben. Wenn Sie eine dynamische Aktualisierung eines Warenkorbs oder Positionen in einer Rechnung programmieren, so hilft Ihnen diese Funktion die Zahlen der deutschsprachigen Nutzer korrekt darzustellen und eine Irritation zu vermeiden.

PHP Programmierung – PHP Funktion zur Generierung von transparenten Spacer

05. Mai 2010

Teilen

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

03. Mai 2010

Teilen

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.

MySQL Fehler – Incorrect table name

14. April 2010

Teilen

Die Programmierung von SQL Abfragen mit MySQL im Kombination mit PHP ist ein klassisches Vorgehen und einer unserer Schwerpunkte.
Wir ermöglichen es auch unseren Kunden, mit unseren Tools selber frei ihre Datenbankstrukturen zu definieren. Das Konzept beinhaltet das anlegen einer MySQL Tabelle und ihre zugehörigen Felder per User-Interface. Die MySQL Tabelle wird im Hintergrund erstellt, jedoch kann der Kunde fast eigenständig den Namen der Tabelle bestimmen.

Jedoch sind bestimmte Grundsätze bei der Erstellung von MySQL Tabellen zu halten. Falls diese nicht eingehalten werden, kommt am häufigsten die Fehlermeldung:

ERROR #1103 – Incorrect table name ‘IHR_TABELLENNAME’

Diese hat in den meisten Fällen folgende Gründe:

1. Der Tabellenname ist leer, das heißt Sie haben eine leere Zeichenkette in der “CREATE TABLE” Abfrage eingesetzt.
2. Der Tabellenname ist länger als 64 Zeichen – das versuchen die Nutzer unseres Tools.
3. Es wurden ungültige Zeichen benutzt, wie (’) – Apostrophe.

Grundsätze

Es gibt viele Zeichen, die in Tabellennamen nicht erlaubt sind, wie beispielsweise ein Bindestrich (-). Jedoch können diese trotzdem benutzt werden, wenn der Tabellenname bei der Abfrage, die die Tabelle erzeugt, in entsprechenden Apostrophen abgeschlossen werden, wie folgt:

`Tabellenname`

Anbei eine Beispielsabfrage:

CREATE TABLE `DATENBANKNAME`.`Test-tabelle` (

`Überschrift1` VARCHAR( 10 ) NOT NULL ,
PRIMARY KEY ( `Überschrift1` )

) ENGINE = MYISAM

Kind sein vs. Web 2.0

12. April 2010

Teilen

War es überhaupt je möglich sich Kindgerecht in der Onlinewelt zu bewegen? Wenn man mal davon absieht dass im Internet ausreichend unbedarfte Kindsköpfe unterwegs sind, stellt sich mir die ernste Frage was mit unseren Kids passieren wird.

Gerade junge Menschen nutzen das Internet intensiv und lassen es in alle Bereiche ihres Lebens. Dass die einmal eingestellten Daten nicht mehr beherrschbar sind hat der eine oder andere sicher schon mal gehört. ;)

Wie umfangreich kann ich ein Persönlichkeitsprofil erstellen wenn ich die ersten Gehversuche im Internet mit einbeziehen kann? Natürlich hab ich da direkt die Gegenfrage parat; Sind diese Informationen überhaupt langfristig relevant?
mmh…

Artgerechte Haltung?
Ich glaube es bleibt uns nur der Weg unsere Kinder in geschlossene Bereiche zu bringen, damit sie nicht später unter ihren Sandkastenerfahrungen zu leiden haben, also eine Art Internetkindergarten. Ein echter Ansatz ist hier die Schul-Community.

Floating Div als Container

08. April 2010

Teilen

Die Nutzung von Div-Layer im Kombination mit Float wird heuzutage von W3C als gewünschte Maßnahme gesehen und ersetzt hiermit die alten align Parameter, die jetzt nicht mehr von allen Browsern akzeptiert werden. Sehr oft möchte man Elemente programmieren, die per Float nach links oder rechts aligniert werden, den übergeordneten Container auf ihre Höhe spannen. Und hier entsteht das Problem, dass wir heute betrachten:

Problematik

Die floating Divs spannen nicht ihre Container-Divs, das heißt dass der Container sich einfach nicht auf die Höhe der darunter liegenen floating divs spannt, was ein deutlicher Bruch in Ihrem Webdesign-Layout ist, insbesondere wenn Sie dem Container eine kachelnde Grafik programmiert haben. Wenn Sie beispielsweise ein Border auf dem äußeren Container-Div programmieren, der floating Elemente/Divs enthält, dann sehen Sie nun eine 2 pixel Linie über dem Inhalt der floating Div-Layers. Auch wenn Sie dem Container-Div feste Breite und Höhe programmieren, spannt er sich nicht.

Ihr Code würde so aussehen:

div.container {
     border: 1px solid #000000;
}

div.links {
     float: left;
}

div.rechts {
     float: right;
}

und Ihr HTML:

<div class="container">
     <div class="links">Mein Text Links</div>
     <div class="rechts">Mein Text Rechts</div>
</div>

Hier stehen die beiden floating Divs “in der Luft” unter dem Container-Div. Das ist schließt jegliche Gestaltungsmöglichkeiten für den Container aus.

Lösung 1

Die Lösung, mit der man bisher leben musste, ist in dem Container ein weiteres “nicht-floating” Element zu programmieren, der die bestimmte Style-Eigenschaft “clear:both” haben muss:

<div class="container">
     <div class="links">Mein Text Links</div>
     <div class="rechts">Mein Text Rechts</div>
     <div style="clear:both;"></div>
</div>

Jedoch ist das unnötige Hinzufügen von Elementen mit leerem Inhalt keine gute Praxis. Es gibt eine wesentlich einfachere und bessere Lösung:

Lösung 2

Die einfachere und bessere Programmierlösung für dieses Problem ist dem Container-Div per CSS diese zusätzlichen Eigenschaften zu vergeben:

div.container {
     border: 1px solid #000000;
     overflow: auto;
     width: 100%;
}

div.links {
     float: left;
}

div.rechts {
     float: right;
}

Um sicherzugehen, haben wir hier nebst overflow:auto; auch width: 100% hinzugefügt. Das wird von den meisten Browser erfordert, damit overflow überhaupt in Kraft treten kann. Bei Safari könnten Sie overflow: hidden; nehmen, um unnötige Scrollbalken zu vermeiden. overflow: none; ist der einzige Wert für overflow, mit dem man dieses Ergebnis nicht hinbekommen kann.

Windows 7 – Skype, ICQ und Messenger ins Systemtray minimieren

30. März 2010

Teilen

Die gängigen Instant-Messaging Programme, die man täglich nutzt nehmen viel Platz an der Taskleiste und deswegen werden sie einfach ins Systemtray minimiert. Das erspart Platz und macht die Nutzung einfacher. Natürlich wenn man eine Nachricht bekommt, müssen die Fenster mit den jeweiligen Gesprächspartner an der Taskleiste blinkend angebracht werden.

Seit der Veröffentlichung von Windows 7 gibt es Probleme unter anderen solche Programme ins Systemtray zu minimieren. Das Hauptfenster vom Programm bleibt auf der Taskleiste und kann sogar an dieser fest angeheftet werden. Was ist die allgemeine Lösung, die sowohl die neueste Version von Skype, als auch ICQ und Windows Messenger in das Systemtray minimiert?

Auch wenn die Desktop Anwendung diese Option explizit bei den Einstellungen hat, wird sie durch Windows 7 ignoriert. Deswegen muss mann der Anwendung beibringen in Kompatibilitätsmodus zu laufen. Hier sind die Schritte, die für alle Programme gleich sind.

1. Finden Sie die Verknüpfung zum jeweligen Programm entweder auf dem Desktop, oder unter Start -> Alle Programme
2. Klicken Sie mit der rechten Maustaste auf das jeweilige Icon fürs Programm
3. Wählen Sie Eigeschaften und dann direkt den Reiter Kompabilität
4. Markieren Sie die Checkbox Programm im Kompatibilitätsmodus ausführen für: Windows Vista Service Pack 2. (Sie können auch frühere Windows Versionen wählen)
5. Klicken Sie auf OK und führen Sie das Programm erneut aus. Wenn Sie das Fenster schließen, wird es ins Systemtray minimiert.

Weitere Probleme

Eine neue Fähigkeit von Windows 7 sind die Mouse-over Funktionalitäten von Programmen, die sich gerade auf der Taskleiste befinden. Beispielsweise werden bei Media-Playern wie Windows Media Player 12 und Media Player Classic Steuerungbuttons für die Wiedergabe von Mediadateien. Das ist ein, unserer Meinung nach, unglücklicher Ersatz für das Minimieren von Windows Media Player in die Taskleiste. Dafür gibt es aber eine Lösung, die wir in unseren nächsten Artikeln veröffentlichen werden.

Doppelte Zeilenumbrüche in Outlook Signaturen formatieren

23. März 2010

Teilen

Die E-Mail Signatur im  ist Heuzutage ein Muss, wenn es um geschäftliche E-Mails geht. Seit der MS Office Version 2003, können unterschiedliche Signaturen genutzt werden für jedes einzelne E-Mail Konto. Jedoch gibt es dort oftmals Probleme mit der Formatierung von Signaturen, wenn es sich um Plain-Text E-Mails handelt. Es immer noch viele E-Mail Clients, die nur Plain Text E-Mails versenden, weil diese gegen Spam-Checker besser abschneiden – HTML E-Mails könnten Viren enthalten und sonstiges.

Problematik

Nach der Einstellung von der Signatur unter Extras->Optionen->E-Mail Format, hat man die Signatur schön formatiert und alle Daten mit einfachen Zeilenumbrüchen untereinander gelistet. Zur Info, MS Word ist standardmäßig der Editor fürs E-Mail Schreiben und Formatieren von Signaturen. Man sieht auch, dass man eine .htm Datei mit dem Namen der Signatur bearbeitet. Wenn man aber eine E-Mail im Plain-Text Format verschicken möchte, so sieht die Signatur schlagartig anders aus – total verschoben und mit doppelten Zeilenumbrüchen. Das passiert auch, wenn Sie einer E-Mail antworten, die im Plain-Text geschrieben wurde- Outlook wechselt sofort auf Plain-Text. Auch wenn man die Signatur sich dann sofort zwecks Bearbeitung anschaut, sieht sie perfekt aus. Die Problematik hier ist wie sich die Signatur für E-Mail explizit einstellen lässt.

Lösung

Anstatt die Signatur über Outlook zu formatieren, hat man die Möglichkeit die Signaturen außerhalb von Outlook zu bearbeiten. Das, was man nicht auf Anhieb sieht ist, dass es fürdie verschiedenen E-Mail Formate (HTML, RTF, Plain-Text) separate Dateien gibt, die diese enthalten. Diese erzeugt Outlook beim Anlegen einer Signatur. Hier sind die Pfade:

Windows XP – C:\Dokumente undEinstellungen\%Username%\Anwendungsdaten\Microsoft\Signatures
Vista, Windows 7 – C:\Benutzer\%Username%\AppData\Roaming\Microsoft\Signatures

Dort hat man drei Dateien:

“SignaturName”.htm- diese Dateienthalt die Signatur für HTML E-Mails
“SignaturName”.rtf- diese Dateienthalt die Signaturfür RTF (Rich Text Format) E-Mails
“SignaturName”.txt- diese Dateienthalt die Signatur fürPlain-Text E-Mails

Sofort sieht man hier, dassdie .txt Datei überall doppelte Zeilenumbrüche enthält. Mit dem einfachen Editor lässt sich der Text formatieren und fertig! Es sind hier auch keine Programmierkenntnisse erforderlich.

Lösung 2

Die doppelten Zeilenumbrüche bei der Plain-Text Signatur von Outlook entstehen auch dadurch, dass man nicht die einfachen Umbrüche bei der Bearbeitung der Signatur unter Outlook verwenden. Einfache Umbrüche macht man Umschalt+Eingabetaste anstatt von nur die Eingabetaste.

Multiple Select Auswahl an PHP Array übergeben

20. März 2010

Teilen

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“.