mirror of
https://gitlab.com/harald.mueller/aktuelle.kurse.git
synced 2024-10-19 09:55:03 +02:00
471 lines
31 KiB
HTML
471 lines
31 KiB
HTML
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|||
|
<html>
|
|||
|
<head>
|
|||
|
<title>Komfortable Checkboxen-Verwaltung mittels Bin<69>rwerte</title>
|
|||
|
<link rel="stylesheet" type="text/css" href="../../src/self.css">
|
|||
|
<meta name="description" content="Erzeugt aus gegebenen Werten ein Array">
|
|||
|
<meta name="keywords" content="SELFPHP, PHP, Array-Funktionen, array">
|
|||
|
<meta name="author" content="Damir Enseleit, mail@selfphp3.de">
|
|||
|
<meta name="DC.Contributer" content="Matthias Hupp, m.hupp@selfphp3.de">
|
|||
|
<meta name="DC.Publisher" content="Damir Enseleit, mail@selfphp3.de">
|
|||
|
<meta name="DC.Date" content="2001-08-06T12:18+01:00">
|
|||
|
<meta name="DC.Identifier" content="http://www.selfphp3.de/funktionsreferenz/array_funktionen/array.php">
|
|||
|
<meta name="DC.Language" content="de">
|
|||
|
<meta name="DC.Rights" content="../../editorial/index.php">
|
|||
|
<meta name="SELF.Firstdate" content="2001-08-06T12:18+01:00">
|
|||
|
<meta name="SELF.Version" content="1">
|
|||
|
<meta name="SELF.Pagetype" content="Information">
|
|||
|
<meta name="SELF.Path" content="SELFPHP == ../../index.php // Funktionsreferenz == ../index.php // Array-Funktionen == index.php">
|
|||
|
</head>
|
|||
|
<body bgcolor="#FFFFFF" text="#000000" link="#AA5522" vlink="#772200" alink="#000000">
|
|||
|
|
|||
|
<table cellpadding="4" cellspacing="0" border="0" width="100%">
|
|||
|
<tr>
|
|||
|
<td bgcolor="#FFEEDD" class="nav"><a class="an" name="top"><img src="../../src/refkap.gif" width="16" height="13" border="0" alt="Teil von"></a>
|
|||
|
<a href="../../index.html"><b>SELFPHP</b></a>/<a href="../../navigation/index.html">Navigationshilfen</a>
|
|||
|
<img src="../../src/refkap.gif" width="16" height="13" border="0" alt="Teil von">
|
|||
|
<a href="../index.html"><b>Tipps & Tricks</b></a> <img src="../../src/refkap.gif" width="16" height="13" border="0" alt="Teil von">
|
|||
|
<a href="index.html"><b>Formulare</b></a></td>
|
|||
|
</tr>
|
|||
|
</table>
|
|||
|
<table cellpadding="4" cellspacing="0" border="0" width="100%">
|
|||
|
<tr>
|
|||
|
<td bgcolor="#EEEEEE" class="doc" width="110"><img src="../../src/logo.gif" width="106" height="109" border="0" alt="SELFPHP"></td>
|
|||
|
<td bgcolor="#EEEEEE" class="doc" valign="bottom" width="50%">
|
|||
|
<h2>Komfortable Checkboxen-Verwaltung
|
|||
|
mittels Binärwerte</h2>
|
|||
|
<td bgcolor="#EEEEEE" class="doc" valign="bottom" width="50%">
|
|||
|
<tr>
|
|||
|
<td bgcolor="#EEEEEE" class="doc" valign="top" align="center"> <img src="../../src/dokx.gif" width="30" height="20" vspace="6" border="0" alt="Informationsseite">
|
|||
|
</td>
|
|||
|
<td bgcolor="#FFFFFF" valign="top" nowrap colspan="2">
|
|||
|
<p> <img src="../../src/down.gif" width="14" height="10" border="0" alt="nach unten"> <a href="#autor"><b>Autor</b></a><br>
|
|||
|
<img src="../../src/down.gif" width="14" height="10" border="0" alt="nach unten"> <a href="#beispiel"><b>Beispiel</b></a><br>
|
|||
|
<img src="../../src/down.gif" width="14" height="10" border="0" alt="nach unten"> <a href="#beschreibung"><b>Beschreibung</b></a><br>
|
|||
|
<img src="../../src/down.gif" width="14" height="10" border="0" alt="nach unten"> <a href="#fazit"><b>Fazit</b></a><br>
|
|||
|
<img src="../../src/down.gif" width="14" height="10" border="0" alt="nach unten"> <a href="#download"><b>Download</b></a><br>
|
|||
|
</p>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td colspan=3 bgcolor="#EEEEEE" class="doc"><a href="#bottom"><img src="../../src/down.gif" width="14" height="10" border="0" alt="nach unten"></a> </td>
|
|||
|
</tr>
|
|||
|
</table>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<h2 class="Sh2"><a class="an" name="autor">Autor</a></h2>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
<table width="100%" cellpadding=10><tr>
|
|||
|
<td class="xmpcode" bgcolor="#E4EEFF"><b>Name:</b> Damir Enseleit<br>
|
|||
|
<b>Email:</b> <a href="mailto:mail@selfphp3.de">mail@selfphp3.de</a><br>
|
|||
|
<b>Website:</b> <a href="http://www.selfphp.info" target="_blank">http://www.selfphp.info</a></td>
|
|||
|
</tr></table>
|
|||
|
|
|||
|
<p> </p>
|
|||
|
|
|||
|
<table bgcolor="#EEEEEE" class="doc" width="100%"><tr><td>
|
|||
|
<a href="#top"><img src="../../src/up.gif" width="14" height="10" border="0" alt="nach oben"></a><a href="#bottom"><img src="../../src/down.gif" width="14" height="10" border="0" alt="nach unten"></a> 
|
|||
|
</td></tr></table>
|
|||
|
|
|||
|
<h2 class="Sh2"><a class="an" name="beispiel">Beispiel</a></h2>
|
|||
|
<img src="../../src/serverdok.gif" width="15" height="10"> <a href="http://www.selfphp.com/tipps_tricks/formulare/checkboxen_binaer_beispiel.php" target="_blank"><b>Anzeigebeispiel:
|
|||
|
So sieht's aus (Online)</b></a> <br>
|
|||
|
<br>
|
|||
|
<table width="100%" cellpadding=10 height="66">
|
|||
|
<tr>
|
|||
|
<td class="xmpcode" bgcolor="#E4EEFF" valign="top">
|
|||
|
<code><font color="#000000">
|
|||
|
<font color="#0000BB"><?PHP
|
|||
|
<br />
|
|||
|
<br /></font><font color="#007700">function </font><font color="#0000BB">setBit</font><font color="#007700">(&</font><font color="#0000BB">$bitField</font><font color="#007700">,</font><font color="#0000BB">$n</font><font color="#007700">) {
|
|||
|
<br />
|
|||
|
<br /> </font><font color="#FF8000">// Ueberprueft, ob der Wert zwischen 0-33 liegt
|
|||
|
<br /> // $n ist hier der Wert der aktivierten Checkbox, z.B. 15
|
|||
|
<br /> // Somit waere hier die 15. Checkbox aktiviert
|
|||
|
<br /> </font><font color="#007700">if((</font><font color="#0000BB">$n </font><font color="#007700">< </font><font color="#0000BB">0</font><font color="#007700">) or (</font><font color="#0000BB">$n </font><font color="#007700">> </font><font color="#0000BB">32</font><font color="#007700">)) return </font><font color="#0000BB">false</font><font color="#007700">;
|
|||
|
<br />
|
|||
|
<br />
|
|||
|
<br /> </font><font color="#FF8000">// Bit Shifting
|
|||
|
<br /> // Hier wird nun der Binaerwert fuer die aktuelle Checkbox gesetzt.
|
|||
|
<br /> // In unserem Beispiel wird hier nun die 15. Stelle von rechts auf 1 gesetzt
|
|||
|
<br /> // 100000000000000 <-- Dieses entspricht der Zahl 16384
|
|||
|
<br /> // | ist nicht das logische ODER sondern das BIT-oder
|
|||
|
<br /> </font><font color="#0000BB">$bitField </font><font color="#007700">|= (</font><font color="#0000BB">0x01 </font><font color="#007700"><< (</font><font color="#0000BB">$n</font><font color="#007700">-</font><font color="#0000BB">1</font><font color="#007700">));
|
|||
|
<br /> return </font><font color="#0000BB">true</font><font color="#007700">;
|
|||
|
<br />
|
|||
|
<br />}
|
|||
|
<br />
|
|||
|
<br />function </font><font color="#0000BB">clearBit</font><font color="#007700">(&</font><font color="#0000BB">$bitField</font><font color="#007700">,</font><font color="#0000BB">$n</font><font color="#007700">) {
|
|||
|
<br />
|
|||
|
<br /> </font><font color="#FF8000">// Loescht ein Bit oder ein Bitfeld
|
|||
|
<br /> // & ist nicht das logische UND sondern das BIT-and
|
|||
|
<br /> </font><font color="#0000BB">$bitField </font><font color="#007700">&= ~(</font><font color="#0000BB">0x01 </font><font color="#007700"><< (</font><font color="#0000BB">$n</font><font color="#007700">-</font><font color="#0000BB">1</font><font color="#007700">));
|
|||
|
<br /> return </font><font color="#0000BB">true</font><font color="#007700">;
|
|||
|
<br />
|
|||
|
<br />}
|
|||
|
<br />
|
|||
|
<br />function </font><font color="#0000BB">isBit</font><font color="#007700">(</font><font color="#0000BB">$bitField</font><font color="#007700">,</font><font color="#0000BB">$n</font><font color="#007700">) {
|
|||
|
<br />
|
|||
|
<br /> </font><font color="#FF8000">// Ist die x-te Stelle eine 1?
|
|||
|
<br /> </font><font color="#007700">return ((</font><font color="#0000BB">$bitField </font><font color="#007700">& (</font><font color="#0000BB">0x01 </font><font color="#007700"><< (</font><font color="#0000BB">$n</font><font color="#007700">-</font><font color="#0000BB">1</font><font color="#007700">))));
|
|||
|
<br />
|
|||
|
<br />}
|
|||
|
<br />
|
|||
|
<br /></font><font color="#FF8000">/*
|
|||
|
<br /> * Die Menge der Checkboxen sollten hier angegeben werden
|
|||
|
<br /> */
|
|||
|
<br /></font><font color="#007700">if( </font><font color="#0000BB">$_POST</font><font color="#007700">[</font><font color="#DD0000">"checkboxen"</font><font color="#007700">] < </font><font color="#0000BB">1 </font><font color="#007700">|| </font><font color="#0000BB">$_POST</font><font color="#007700">[</font><font color="#DD0000">"checkboxen"</font><font color="#007700">] > </font><font color="#0000BB">32</font><font color="#007700">)
|
|||
|
<br /> </font><font color="#0000BB">$checkboxen </font><font color="#007700">= </font><font color="#0000BB">32</font><font color="#007700">;
|
|||
|
<br />else
|
|||
|
<br /> </font><font color="#0000BB">$checkboxen </font><font color="#007700">= </font><font color="#0000BB">$_POST</font><font color="#007700">[</font><font color="#DD0000">"checkboxen"</font><font color="#007700">];
|
|||
|
<br />
|
|||
|
<br />
|
|||
|
<br /></font><font color="#FF8000">/*
|
|||
|
<br /> * Hier sollte der Wert aus einer Datenbank geholt werden
|
|||
|
<br /> * Dies sollte aber nur beim ersten Aufruf geschehen
|
|||
|
<br /> */
|
|||
|
<br />
|
|||
|
<br /></font><font color="#007700">if( !isset(</font><font color="#0000BB">$_POST</font><font color="#007700">[</font><font color="#DD0000">"checkbox_name"</font><font color="#007700">]) && !</font><font color="#0000BB">is_array</font><font color="#007700">(</font><font color="#0000BB">$_POST</font><font color="#007700">[</font><font color="#DD0000">"checkbox_name"</font><font color="#007700">]) && !isset(</font><font color="#0000BB">$_POST</font><font color="#007700">[</font><font color="#DD0000">"CheckboxenBinaer"</font><font color="#007700">]) ){
|
|||
|
<br /> </font><font color="#FF8000">// Select der Datenbankabfrage hier einfuegen und den Wert
|
|||
|
<br /> // in $wertAbfrage speichern
|
|||
|
<br /> </font><font color="#0000BB">$wertAbfrage </font><font color="#007700">= </font><font color="#0000BB">0</font><font color="#007700">;
|
|||
|
<br />
|
|||
|
<br /> </font><font color="#FF8000">// Ueberpruefung ob ein Wert vorhanden ist
|
|||
|
<br /> </font><font color="#007700">if( !empty(</font><font color="#0000BB">$wertAbfrage</font><font color="#007700">) )
|
|||
|
<br /> </font><font color="#0000BB">$bitmask </font><font color="#007700">= </font><font color="#0000BB">$wertAbfrage</font><font color="#007700">;
|
|||
|
<br /> else
|
|||
|
<br /> </font><font color="#0000BB">$bitmask </font><font color="#007700">= </font><font color="#0000BB">0x0</font><font color="#007700">;
|
|||
|
<br />
|
|||
|
<br /> </font><font color="#FF8000">// Durchlaeuft schrittweise alle Elemente von $bitmask.
|
|||
|
<br /> </font><font color="#007700">foreach(</font><font color="#0000BB">range</font><font color="#007700">(</font><font color="#0000BB">1</font><font color="#007700">,</font><font color="#0000BB">$checkboxen</font><font color="#007700">) as </font><font color="#0000BB">$position</font><font color="#007700">){
|
|||
|
<br />
|
|||
|
<br /> </font><font color="#FF8000">// Ueberprueft, ob die x-te Stelle eine 1 ist und speichert bei Erfolg
|
|||
|
<br /> // ein "checked" in das Arrayelement fuer die x-te Position.
|
|||
|
<br /> // Beispiel: $position ist 6. Nun wird die 6.Stelle von rechts innerhalb
|
|||
|
<br /> // der Variablen $bitmask auf eine 1 hin ueberprueft. Steht an dieser Stelle
|
|||
|
<br /> // eine 1, so wird in $formCheck[6] ein "checked" gespeichert.
|
|||
|
<br /> // Somit wird die sechste Checkbox aktiviert.
|
|||
|
<br /> </font><font color="#007700">if(</font><font color="#0000BB">isBit</font><font color="#007700">(</font><font color="#0000BB">$bitmask</font><font color="#007700">,</font><font color="#0000BB">$position</font><font color="#007700">)) {
|
|||
|
<br /> </font><font color="#0000BB">$formCheck</font><font color="#007700">[</font><font color="#0000BB">$position</font><font color="#007700">] = </font><font color="#DD0000">" checked"</font><font color="#007700">;
|
|||
|
<br /> }
|
|||
|
<br />
|
|||
|
<br /> }
|
|||
|
<br />
|
|||
|
<br />}
|
|||
|
<br />else{
|
|||
|
<br />
|
|||
|
<br /> </font><font color="#FF8000">// Das Formular wurde versendet und die Checkboxen muessen
|
|||
|
<br /> // nun konvertiert werden.
|
|||
|
<br />
|
|||
|
<br /> // Wurde ueberhaupt eine Checkbox aktiviert?
|
|||
|
<br /> </font><font color="#007700">If( isset(</font><font color="#0000BB">$_POST</font><font color="#007700">[</font><font color="#DD0000">"checkbox_name"</font><font color="#007700">]) ){
|
|||
|
<br />
|
|||
|
<br /> foreach(</font><font color="#0000BB">$_POST</font><font color="#007700">[</font><font color="#DD0000">"checkbox_name"</font><font color="#007700">] as </font><font color="#0000BB">$position</font><font color="#007700">){
|
|||
|
<br />
|
|||
|
<br /> </font><font color="#FF8000">// Setzen der einzelnen Checkboxen in der Binaerstruktur
|
|||
|
<br /> </font><font color="#0000BB">setBit</font><font color="#007700">(</font><font color="#0000BB">$bitmask</font><font color="#007700">,</font><font color="#0000BB">$position</font><font color="#007700">);
|
|||
|
<br />
|
|||
|
<br /> </font><font color="#FF8000">// Ist die Checkbox aktiviert?
|
|||
|
<br /> </font><font color="#007700">if(</font><font color="#0000BB">isBit</font><font color="#007700">(</font><font color="#0000BB">$bitmask</font><font color="#007700">,</font><font color="#0000BB">$position</font><font color="#007700">)) {
|
|||
|
<br /> </font><font color="#0000BB">$formCheck</font><font color="#007700">[</font><font color="#0000BB">$position</font><font color="#007700">] = </font><font color="#DD0000">" checked"</font><font color="#007700">;
|
|||
|
<br /> }
|
|||
|
<br />
|
|||
|
<br /> }
|
|||
|
<br />
|
|||
|
<br /> }
|
|||
|
<br />
|
|||
|
<br /> </font><font color="#FF8000">// Hier kann nun auch der Wert wieder in die Datenbank geschrieben werden
|
|||
|
<br /> </font><font color="#0000BB">$neuerWert </font><font color="#007700">= </font><font color="#0000BB">$bitmask</font><font color="#007700">;
|
|||
|
<br />
|
|||
|
<br />}
|
|||
|
<br />
|
|||
|
<br /></font><font color="#0000BB">?>
|
|||
|
<br /></font>
|
|||
|
<br /><form name="form" method="post" action="<font color="#0000BB"><?PHP </font><font color="#007700">echo </font><font color="#0000BB">$PHP_SELF</font><font color="#007700">; </font><font color="#0000BB">?></font>">
|
|||
|
<br /><font color="#0000BB"><?PHP
|
|||
|
<br /> </font><font color="#007700">echo </font><font color="#DD0000">'Der Dezimalwert f<>r diese Anordnung ist: <b>' </font><font color="#007700">. </font><font color="#0000BB">$bitmask </font><font color="#007700">. </font><font color="#DD0000">'</b><br>'</font><font color="#007700">;
|
|||
|
<br /> echo </font><font color="#DD0000">'Der Bin<69>rwert f<>r diese Anordnung ist: <b>' </font><font color="#007700">. </font><font color="#0000BB">decbin</font><font color="#007700">(</font><font color="#0000BB">$bitmask</font><font color="#007700">) . </font><font color="#DD0000">'</b><br>'</font><font color="#007700">;
|
|||
|
<br /> for(</font><font color="#0000BB">$x</font><font color="#007700">=</font><font color="#0000BB">1</font><font color="#007700">;</font><font color="#0000BB">$x</font><font color="#007700"><=</font><font color="#0000BB">$checkboxen</font><font color="#007700">;</font><font color="#0000BB">$x</font><font color="#007700">++){
|
|||
|
<br /></font><font color="#0000BB">?>
|
|||
|
<br /></font>
|
|||
|
<br /><input type="checkbox" name="checkbox_name[]" value="<font color="#0000BB"><?PHP </font><font color="#007700">echo </font><font color="#0000BB">$x</font><font color="#007700">; </font><font color="#0000BB">?></font>" <font color="#0000BB"><?PHP </font><font color="#007700">echo </font><font color="#0000BB">$formCheck</font><font color="#007700">[</font><font color="#0000BB">$x</font><font color="#007700">]; </font><font color="#0000BB">?></font>>
|
|||
|
<br />
|
|||
|
<br /><font color="#0000BB"><?PHP
|
|||
|
<br /> </font><font color="#007700">}
|
|||
|
<br /></font><font color="#0000BB">?>
|
|||
|
<br /></font> <br>Menge der Checkboxen <input type="text" name="checkboxen" value="<font color="#0000BB"><?PHP </font><font color="#007700">echo </font><font color="#0000BB">$_POST</font><font color="#007700">[</font><font color="#DD0000">"checkboxen"</font><font color="#007700">]; </font><font color="#0000BB">?></font>">
|
|||
|
<br /> <br><input type="submit" name="CheckboxenBinaer" value="Send"><br>
|
|||
|
<br /></form></font>
|
|||
|
</code> </td>
|
|||
|
</tr>
|
|||
|
</table>
|
|||
|
<p> </p>
|
|||
|
<table bgcolor="#EEEEEE" class="doc" width="100%"><tr><td>
|
|||
|
<a href="#top"><img src="../../src/up.gif" width="14" height="10" border="0" alt="nach oben"></a><a href="#bottom"><img src="../../src/down.gif" width="14" height="10" border="0" alt="nach unten"></a> 
|
|||
|
</td></tr></table>
|
|||
|
|
|||
|
<h2 class="Sh2"><a class="an" name="beschreibung">Beschreibung</a></h2>
|
|||
|
<table width="100%" cellpadding=10 height="156">
|
|||
|
<tr>
|
|||
|
<td class="xmpcode" bgcolor="#E4EEFF" height="57" valign="top">
|
|||
|
<p>Wie speichert man z.B. 32 Checkboxen in einer Datenbank?<br>
|
|||
|
Diese Frage stellt sich sehr oft bei der Programmierung und sicherlich
|
|||
|
gibt es da <br>
|
|||
|
verschiedene Ansatzmöglichkeiten. So könnte die Tabelle, in
|
|||
|
der die Werte für die <br>
|
|||
|
Checkboxen ( 1 oder 0, bzw. TRUE oder FALSE ) gespeichert werden, in 32
|
|||
|
Spalten<br>
|
|||
|
aufgeteilt werden. Dieses Technik ist aber eher die schlechteste Wahl,
|
|||
|
da die Tabelle<br>
|
|||
|
sehr schnell zu einem Giganten anwachsen würde.<br>
|
|||
|
Wäre es nicht schön, wenn alle Checkboxenwerte in einer Spalte
|
|||
|
gespeichert werden<br>
|
|||
|
könnte?<br>
|
|||
|
<br>
|
|||
|
Dieses Beispiel zeigt wie es geht.<br>
|
|||
|
Checkboxen können nur zwei Zustände annehmen und sind daher
|
|||
|
entweder <br>
|
|||
|
aktiviert( TRUE bzw. 1 ) oder deaktiviert( FALSE bzw. 0 ). Dieses Merkmal
|
|||
|
findet<br>
|
|||
|
man auch in der Binärdarstellung wieder und kann daher zur Verwendung
|
|||
|
für diese<br>
|
|||
|
Technik herangezogen werden. Binärwerte werden nur durch die zwei
|
|||
|
Zahlen 1 und 0<br>
|
|||
|
dargestellt. <br>
|
|||
|
Hat man z.B. 5 Checkboxen, von denen die erste, die zweite und die fünfte
|
|||
|
Checkbox <br>
|
|||
|
aktiviert ist, so kann man dies auch mit folgender Schreibweise darstellen
|
|||
|
- <b>11001</b>.<br>
|
|||
|
Diese Darstellung sieht genau wie ein Binärwert aus und würde
|
|||
|
bei der Konvertierung<br>
|
|||
|
in eine Dezimalzahl auch ein Ergebnis liefern.<br>
|
|||
|
Um aber die Checkboxen auch in eine binäre Art zu bekommen, ist ein
|
|||
|
kleiner <br>
|
|||
|
Umstrukturierungsvorgang von Nöten. Binärwerte werden grundsätzlich
|
|||
|
von rechts her<br>
|
|||
|
aufgebaut (was auch Sinn macht, da man für 0000000000001 auch direkt
|
|||
|
1 schreiben könnte),<br>
|
|||
|
die Checkboxen aber von links bzw. von oben.<br>
|
|||
|
Daher muss man den Binärwert einfach umdrehen und genau das erledigt
|
|||
|
das Skript von selbst,<br>
|
|||
|
da die Werte bereits von rechts her bestückt werden. In unserem kleinen
|
|||
|
Beispiel wäre nun der<br>
|
|||
|
Binärwert <b>10011</b>. Diesen Binärwert in eine Dezimalzahl
|
|||
|
konvertiert, ergibt 19.<br>
|
|||
|
Die Zahl 19 ist jetzt der Wert, der auch in die Datenbank gespeichert
|
|||
|
wird. Er enthält alle<br>
|
|||
|
Informationen über die Aktivierungsart aller Checkboxen, da beim
|
|||
|
Aufbau der Checkboxen die<br>
|
|||
|
Zahl 19 wieder in ein Binärwert konvertiert wird ( 10011 ).<br>
|
|||
|
<br>
|
|||
|
Allerdings müssen im Vorfeld die Checkboxen ein wenig angepasst werden.<br>
|
|||
|
<b><br>
|
|||
|
1.)</b> Die Checkboxen erhalten alle den gleichen Namen und werden somit
|
|||
|
als Array<br>
|
|||
|
übermittelt. In unserem Fall heissen die Checkboxen alle <b>checkbox_name[]</b>
|
|||
|
(wichtig<br>
|
|||
|
sind hier die eckigen Klammern, da nur so ein Array aufgebaut wird).<br>
|
|||
|
Somit kann man hier auch von einer Gruppe sprechen.<br>
|
|||
|
<br>
|
|||
|
<b>2.)</b> Alle Checkboxen werden im Value-Wert durchnummeriert (1- max.32).
|
|||
|
Dieses ist<br>
|
|||
|
ein wichtiger Punkt, da nur so die richtigen Checkboxen aktiviert oder
|
|||
|
deaktiviert werden<br>
|
|||
|
können. Zur Erinnerung, <b>nichtaktivierte</b> Checkboxen werden
|
|||
|
nicht übermittelt. Auch wenn<br>
|
|||
|
Sie 32 Checkboxen haben und nur 16 aktivieren, so erhalten wir beim Absenden
|
|||
|
auch nur<br>
|
|||
|
ein Array mit 16 Elementen. Da wir aber als Value-Wert die "Position"
|
|||
|
gespeichert haben, <br>
|
|||
|
ist es ein leichtes die nötigen Felder zu initialisieren.<br>
|
|||
|
<br>
|
|||
|
<b>3.)</b> Die Spalte für die Speicherung des Wertes in der Datenbank
|
|||
|
muss auf Integer<br>
|
|||
|
eingestellt werden.<br>
|
|||
|
<br>
|
|||
|
</p>
|
|||
|
<p>Beispiel:<br>
|
|||
|
Bei der Initialisierung unserer Variablen, setzen wir den Startwert auf
|
|||
|
0. Wird nun das<br>
|
|||
|
untenstehende Beispiel abgeschickt, so passiert folgendes. Bitte beachten
|
|||
|
Sie aber,<br>
|
|||
|
das bei den Durchläufen die Checkboxen von links, während die
|
|||
|
Binärwerte von rechts <br>
|
|||
|
gelesen werden.<br>
|
|||
|
<br>
|
|||
|
</p>
|
|||
|
<table width="606" border="0" cellspacing="3" cellpadding="0">
|
|||
|
<tr>
|
|||
|
<td width="97">
|
|||
|
<div align="center"><b>0 </b></div>
|
|||
|
</td>
|
|||
|
<td width="98">
|
|||
|
<div align="center"><b>1</b></div>
|
|||
|
</td>
|
|||
|
<td width="97">
|
|||
|
<div align="center"><b>1</b></div>
|
|||
|
</td>
|
|||
|
<td width="99">
|
|||
|
<div align="center"><b>0</b></div>
|
|||
|
</td>
|
|||
|
<td width="97">
|
|||
|
<div align="center"><b>0</b></div>
|
|||
|
</td>
|
|||
|
<td width="97">
|
|||
|
<div align="center"><b>1</b></div>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td width="97"> Checkbox1
|
|||
|
<input type="checkbox" name="checkbox2" value="checkbox">
|
|||
|
</td>
|
|||
|
<td width="98"> Checkbox2
|
|||
|
<input type="checkbox" name="checkbox3" value="checkbox" checked>
|
|||
|
</td>
|
|||
|
<td width="97"> Checkbox3
|
|||
|
<input type="checkbox" name="checkbox4" value="checkbox" checked>
|
|||
|
</td>
|
|||
|
<td width="99"> Checkbox4
|
|||
|
<input type="checkbox" name="checkbox5" value="checkbox">
|
|||
|
</td>
|
|||
|
<td width="97"> Checkbox5
|
|||
|
<input type="checkbox" name="checkbox6" value="checkbox">
|
|||
|
</td>
|
|||
|
<td width="97"> Checkbox6
|
|||
|
<input type="checkbox" name="checkbox7" value="checkbox" checked>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
</table>
|
|||
|
<p><u><br>
|
|||
|
1.Durchlauf:</u> <br>
|
|||
|
Checkbox1 ist deaktiviert und somit 0.<br>
|
|||
|
In diesem Fall bleibt unser Wert bei 0, da der Startwert ja schon 0 war
|
|||
|
und ein Binärwert<br>
|
|||
|
mit der Anordnung 00 auch als Dezimalzahl 0 ergeben würde.<br>
|
|||
|
<u><br>
|
|||
|
2.Durchlauf:</u> <br>
|
|||
|
Checkbox2 ist aktiviert und somit 1.<br>
|
|||
|
Unser Binärwert wird nun von der rechten Seite her verändert.<br>
|
|||
|
Die 2.Stelle des Binärwertes wird auf 1 gesetzt.<br>
|
|||
|
Der Wert ist nun 10<br>
|
|||
|
<u><br>
|
|||
|
3.Durchlauf:</u> <br>
|
|||
|
Checkbox3 ist aktiviert und somit 1.<br>
|
|||
|
Unser Binärwert wird nun von der rechten Seite her verändert.<br>
|
|||
|
Die 3.Stelle des Binärwertes wird auf 1 gesetzt.<br>
|
|||
|
Der Wert ist nun 110<br>
|
|||
|
<u><br>
|
|||
|
4.Durchlauf:</u> <br>
|
|||
|
Checkbox4 ist deaktiviert und somit 0.<br>
|
|||
|
In diesem Fall bleibt unser Wert bei 110. <br>
|
|||
|
<u><br>
|
|||
|
5.Durchlauf:</u> <br>
|
|||
|
Checkbox5 ist deaktiviert und somit 0.<br>
|
|||
|
In diesem Fall bleibt unser Wert bei 110. <br>
|
|||
|
<u><br>
|
|||
|
6.Durchlauf:</u> <br>
|
|||
|
Checkbox6 ist aktiviert und somit 1.<br>
|
|||
|
Unser Binärwert wird nun von der rechten Seite her verändert.<br>
|
|||
|
Die 6.Stelle des Binärwertes wird auf 1 gesetzt. Somit erhält<br>
|
|||
|
auch nun die 4. und 5.Stelle Ihren Wert, jeweils die 0.<br>
|
|||
|
Der Wert ist nun 100110<br>
|
|||
|
<br>
|
|||
|
Den Wert 100110 lassen wir uns nun mit der Funktion <a href="../../funktionsreferenz/mathematische_funktionen/bindec.html">bindec()</a>
|
|||
|
als Dezimalzahl ausgeben <br>
|
|||
|
und erhalten als Ergebnis die Zahl 38. Diese Zahl speichern wir nun in
|
|||
|
unsere Tabelle ab. <br>
|
|||
|
Das war es schon! <br>
|
|||
|
Wir haben nun eine schlanke Lösung für ein grosses Problem.
|
|||
|
In Zukunft<br>
|
|||
|
wird unser Skript nur noch mit der einzelnen dezimalen Zahl arbeiten um
|
|||
|
die Checkboxen<br>
|
|||
|
zu bestücken.<br>
|
|||
|
<br>
|
|||
|
<b>Achtung!<br>
|
|||
|
</b>Einen kleinen Haken gibt es aber. Wir können mit dieser Methode
|
|||
|
nur max. 32 Checkboxen<br>
|
|||
|
verwalten, da wir bei dieser Zahl an die Grenze eines Integer-Wert gehen.<br>
|
|||
|
Gruppen können aber in rauhen Mengen erstellt werden.<br>
|
|||
|
<br>
|
|||
|
<br>
|
|||
|
</p>
|
|||
|
<br>
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
</table>
|
|||
|
<p> </p>
|
|||
|
<table bgcolor="#EEEEEE" class="doc" width="100%"><tr><td>
|
|||
|
<a href="#top"><img src="../../src/up.gif" width="14" height="10" border="0" alt="nach oben"></a><a href="#bottom"><img src="../../src/down.gif" width="14" height="10" border="0" alt="nach unten"></a> 
|
|||
|
</td></tr></table>
|
|||
|
|
|||
|
|
|||
|
<h2 class="Sh2"><a class="an" name="fazit">Fazit</a></h2>
|
|||
|
|
|||
|
<table width="100%" cellpadding=10 height="42">
|
|||
|
<tr>
|
|||
|
<td class="xmpcode" bgcolor="#E4EEFF" height="57">
|
|||
|
<p>Das vorgestellte Beispiel soll nur als Denkanstoss dienen und aufzeigen,
|
|||
|
welche Möglichkeiten<br>
|
|||
|
die Arbeit mit Binärwerten bereitstellt. Sie können das Beispiel
|
|||
|
erweitern oder modifizieren um<br>
|
|||
|
die Technik für sich zu verfeinern und an Ihre Bedürfnisse anzupassen.</p>
|
|||
|
</td>
|
|||
|
</tr></table>
|
|||
|
|
|||
|
|
|||
|
<p> </p>
|
|||
|
|
|||
|
<table bgcolor="#EEEEEE" class="doc" width="100%"><tr><td>
|
|||
|
<a href="#top"><img src="../../src/up.gif" width="14" height="10" border="0" alt="nach oben"></a><a href="#bottom"><img src="../../src/down.gif" width="14" height="10" border="0" alt="nach unten"></a> 
|
|||
|
</td></tr></table>
|
|||
|
|
|||
|
<h2 class="Sh2"><a class="an" name="download">Download</a></h2>
|
|||
|
|
|||
|
<table width="100%" cellpadding=10 height="66">
|
|||
|
<tr>
|
|||
|
<td class="xmpcode" bgcolor="#E4EEFF" valign="top"> Der Download beeinhaltet
|
|||
|
folgende Dateien:
|
|||
|
<ul>
|
|||
|
<li> checkboxen_binaer_beispiel.php</li>
|
|||
|
<li>checkboxen_binaer_erklaerung.txt</li>
|
|||
|
<li>README.TXT</li>
|
|||
|
</ul>
|
|||
|
<a href="checkboxen_binaer_beispiel.zip">Download starten</a></td>
|
|||
|
</tr></table>
|
|||
|
|
|||
|
<p> </p>
|
|||
|
|
|||
|
<table cellpadding="4" cellspacing="0" border="0" width="100%">
|
|||
|
<tr><td colspan=2 bgcolor="#EEEEEE" class="doc">
|
|||
|
<a href="#top"><img src="../../src/up.gif" width="14" height="10" border="0" alt="nach oben"></a>
|
|||
|
</td></tr>
|
|||
|
<tr>
|
|||
|
<td bgcolor="#EEEEEE" class="doc" align="right" width="110">weiter:<img src="../../src/next.gif" width="10" height="10" border="0" hspace="10" alt="weiter"></td>
|
|||
|
<td bgcolor="#FFFFFF"><img src="../../src/dok.gif" width="15" height="10" border="0" alt="Seite">
|
|||
|
</td>
|
|||
|
</tr>
|
|||
|
<tr>
|
|||
|
<td bgcolor="#EEEEEE" class="doc" align="right" width="110">zurück:<a href="index.php"><img src="../../src/prev.gif" width="10" height="10" border="0" hspace="10" alt="zurück"></a></td>
|
|||
|
<td bgcolor="#FFFFFF" width="100%"><img src="../../src/dok.gif" width="15" height="10" border="0" alt="Seite">
|
|||
|
<a href="index.html"><b>Formulare</b></a> </td>
|
|||
|
</tr>
|
|||
|
<tr><td colspan=2 bgcolor="#EEEEEE" class="doc"> </td></tr>
|
|||
|
</table><table cellpadding="4" cellspacing="0" border="0" width="100%">
|
|||
|
<tr>
|
|||
|
<td bgcolor="#FFEEDD" class="nav"><a class="an" name="bottom"><img src="../../src/refkap.gif" width="16" height="13" border="0" alt="Teil von"></a>
|
|||
|
<a href="../../index.html"><b>SELFPHP</b></a>/<a href="../../navigation/index.html">Navigationshilfen</a>
|
|||
|
<img src="../../src/refkap.gif" width="16" height="13" border="0" alt="Teil von">
|
|||
|
<a href="../index.html"><b>Tipps & Tricks</b></a> <img src="../../src/refkap.gif" width="16" height="13" border="0" alt="Teil von">
|
|||
|
<a href="index.html"><b>Formulare</b></a></td>
|
|||
|
</tr>
|
|||
|
</table>
|
|||
|
|
|||
|
<p><a class="an" name="bottom">© 2001, 2002, 2003</a> <img src="../../src/mail.gif" width="15" height="10" border="0" alt="E-Mail"> <a href="mailto:mail@selfphp.info">Damir
|
|||
|
Enseleit, mail@selfphp.info</a></p>
|
|||
|
|
|||
|
|
|||
|
</body>
|
|||
|
</html>
|