# Abfrage von Checkboxen in tabellen



## sab46sam (18. März 2008)

Hallo Leute,

ich habe schon mal ein Thema veröffentlicht, dass nach ein paar negative versuche,
gezwungen war den script neu zu schreiben.

Es geht um folgendes:
Ich habe ein config.php file wo die verbindung zur datenbank erstellt. in allen anderen files wird dies über include eingebunden. dan habe ich eine index.php datei wo die ganzen divs befinden und auch wieder über include eingebunden werden.
Eine Checkbox datei und ein Datei wo die Daten aus der Datenbank ausgewertet werden und dargestellt werden.

Mein Problem:
Ich habe die Checkboxen über arrey-key gemacht. Jetzt will ich nun in der datei mit der darstellung die abfrage machen. Doch ich weiss nicht wie es funktioniert. Auch mit der Datenbank abfrage klappt bei mir auch nicht so gut.

Technisches:
MSSQL Datenbank
Script PHP/HTML und 
Checkboxen mit JavaScript


So seht der Code aus:

Der Index.php

```
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

<head>
<title>ENTEO</title>
<link rel="stylesheet" type="text/css" href="css/enteo.css" />
</head>
<body>
<div class="footer"></div>
	<div class="body">
		<?php include ("navigation.php")?>
		<div class="bgLeft"></div>
		<div class="bgRight"></div>
		<div class="bcontent"></div>
		<div class="bbutton"></div>
		<div class="egbgleft"></div>
		<div class="egbgright"></div>
		<div class="content"></div>
	</div>	
</body>
</html>
```

Die Navigation mit den Checkboxen:


```
<html>
<head>
	<title></title>
</head>
<body>
<script type="text/javascript">
function check(frm,chk,components){
for(var i=0;i<frm.length;i++)if(frm[i].name.indexOf(components)>-1)frm[i].checked=chk;}
</script>

<?php

include ("config.php");

?>
<div class="navigation"
			<form name="suche" action="allwk.php" method="post" enctype="multipart/form-data">
    			<br><br>
    				<b><center>Workstation - ID</b></center><br><br>
    				<label for="suchen"></label><input type="text" size="29" id="suchen" name="id">
    				<input type="checkbox" onclick="check(this.form,this.checked,'[]')">All Component<br><br><br><br>
    				<input type="checkbox" name="components[disk]" value="true">DISK<br>
    				<input type="checkbox" name="components[cpu]" value="true">CPU<br>
    				<input type="checkbox" name="components[dmi]" value="true">DMI<br>
    				<input type="checkbox" name="components[bios]" value="true">BIOS<br>
    				<input type="checkbox" name="components[floppy]" value="true">FLOPPY<br>
    				<input type="checkbox" name="components[system]" value="true">SYSTEM<br>
    				<input type="checkbox" name="components[monitor]" value="true">MONITOR<br>
    				<input type="checkbox" name="components[software]" value="true">SOFTWARE<br>
    				<input type="checkbox" name="components[operationsystem]" value="true">OPERATIONSYSTEM<br>
    				<input type="checkbox" name="components[lanadapter]" value="true">LANDADAPTER<br>
    				<input type="checkbox" name="components[serialport]" value="true">SERIALPORT<br>
    				<input type="checkbox" name="components[memorymodule]" value="true">MEMORYMODULE<br>
    				<input type="checkbox" name="components[videoadapter]" value="true">VIDEOADAPTER<br>
    				<input type="checkbox" name="components[parallelport]" value="true">PARALLELPORT<br>
    				<input type="checkbox" name="components[logicaldrive]" value="true">LOGICALDRIVE<br>
    				<input type="checkbox" name="components[sytemboard]" value="true">SYSTEMBOARD<br>
    				<input type="checkbox" name="components[networkdrive]" value="true">NETWORKDRIVE<br>
    				<input type="checkbox" name="components[printer]" value="true">PRINTER<br><br><br>	
    				<input type="submit"   name="CheckAll" value=" Scan Now " 
    					onClick="checkAll(document.myform.list)">
    			</div>
   		</body>   
</html>
```

Die Config.php Datei mit der Verbindung zur Datenbank:


```
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">

<head>
<title>ENTEO</title>
<link rel="stylesheet" type="text/css" href="css/enteo.css" />
</head>
<body>
<?php

$server= "IP";  
$user= "benutzer"; 
$passwort= "pw"; 
$db="NIManagementDB";


	$con 		=  mssql_connect($server,$user,$passwort)or die ("Unable to connect to server");

	$db			=  mssql_select_db($db,$con);		   
	$sql		=  'SELECT * FROM '.'';
	$ergebnis	=  mssql_query($sql,$con);
	$ausgabe	=  mssql_fetch_array($ergebnis);
	
	
?>



</body>
</html>
```

Und die Letze Datei wo die Checkboxen abgefragt werden und (egal wie dargestellt werden):


```
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>ENTEO</title>
<link rel="stylesheet" type="text/css" href="css/enteo.css" />
</head>
<body>
<?php
include ("config.php");



	$con 		=  mssql_connect($server,$user,$passwort)or die ("Unable to connect to server");

	$db			=  mssql_select_db($db,$con);		   
	$sql		=  'SELECT * FROM [NC_Workstation]Where MachineName ="NBOLE142JT01"';
	$ergebnis	=  mssql_query($sql,$con);
	$ausgabe	=  mssql_fetch_array($ergebnis);
	
?>

<div class="footer"></div>
	<div class="body">
		<?php include ("navigation.php")?>
		<div class="bgLeft"></div>
		<div class="bgRight"></div>
		<div class="bcontent">
		<?php                                                  Hier sollte die Abfrage stattfinden
		
		print_r($ausgabe);?></div>
		<div class="bbutton"></div>
		<div class="egbgleft"></div>
		<div class="egbgright"></div>
		<div class="content"></div>
	</div>	
</body>
</html>
```

Hat mir jemand einen Tip oder könnte jemand mir ein Beispiel einer abfrage zeigen?
Für die Bemühung danke ich im voraus

mfg sas


----------



## Berdine (19. März 2008)

Vorweg: wenn du Dateien mit include einfügst, dann brauch der Quelltext da nicht nochmal rein. und z.B. bei einer Datenbankverbindung brauchst du auch nicht das ganze HTML-Gerüst mit einbauen...

Checkboxen kannst du abfragen, indem du prüfst, ob die Werte gesetzt sind. Z.B. in der Art:


```
if($_POST[components[disk]]){
//Anweisung...
}

//oder 
if($_POST[components[disk]] == "true"){
//Anweisung...
}

//oder
if(isset($_POST[components[disk]])){
//Anweisung...
}
```

Das wären jetzt Beispiele für deinen Fall. Man braucht den Checkboxen ja auch kein Array zuordnen und kann dann die einzelnen values eindeutig setzen; die Abfrage müsste dann in der Art der zweiten sein, nur das "true" dann durch die entsprechenden Werte ersetzt wird.

Ich hoffe, das hilft dir schonmal im Bereich der Checkboxen weiter. Für den MySql-teil wäre es sicher hilfreich, wenn du genauer beschreibst, was für eine Abfrage du machen möchtest.


----------



## sab46sam (19. März 2008)

Also danke viel mals für deine schnelle Antwort.

Es geht darum ich wollte abfragen ob eine Checkbox signiert ist oder nicht. Wenn ja,
dan sollte es doch alle angaben über die Tabelle (zum Beispiel )"disk" die daten herauslesen
und darstellen.

Meine erste Frage ist jetzt muss ich die if Abfrage unterhalb der Checkbox eintragen...oder auf eine separates File?

siehe Beispiel:


```
<html>
<head>
	<title></title>
</head>
<body>
<script type="text/javascript">
function check(frm,chk,gruppe){
for(var i=0;i<frm.length;i++)if(frm[i].name.indexOf(gruppe)>-1)frm[i].checked=chk;}
</script>

<?php

include ("config.php");

?>
<div class="navigation"
			<form name="suche" action="allwk.php" method="post" enctype="multipart/form-data">
    			<br><br>
    				<b><center>Workstation - ID</b></center><br><br>
    				<label for="suchen"></label><input type="text" size="29" id="suchen" name="id">
    				<input type="checkbox" onclick="check(this.form,this.checked,'[]')">All Component<br><br><br><br>
    				<input type="checkbox" name="components[disk]" value="disk">DISK<br>
    				<?php
    				$if($_POST[components[disk]] == "disk")
					{
						print_r("mssql_abfrage")
					}?>
    				<input type="checkbox" name="components[cpu]" value="cpu">CPU<br>
    				<input type="checkbox" name="components[dmi]" value="dmi">DMI<br>
    				<input type="checkbox" name="components[bios]" value="bios">BIOS<br>
    				<input type="checkbox" name="components[floppy]" value="floppy">FLOPPY<br>
    				<input type="checkbox" name="components[system]" value="system">SYSTEM<br>
    				<input type="checkbox" name="components[monitor]" value="monitor">MONITOR<br>
    				<input type="checkbox" name="components[software]" value="software">SOFTWARE<br>
    				<input type="checkbox" name="components[operationsystem]" value="operationsystem">OPERATIONSYSTEM<br>
    				<input type="checkbox" name="components[lanadapter]" value="lanadapter">LANDADAPTER<br>
    				<input type="checkbox" name="components[serialport]" value="serialport">SERIALPORT<br>
    				<input type="checkbox" name="components[memorymodule]" value="memorymodule">MEMORYMODULE<br>
    				<input type="checkbox" name="components[videoadapter]" value="videoadapter">VIDEOADAPTER<br>
    				<input type="checkbox" name="components[parallelport]" value="parallelport">PARALLELPORT<br>
    				<input type="checkbox" name="components[logicaldrive]" value="logicaldrive">LOGICALDRIVE<br>
    				<input type="checkbox" name="components[sytemboard]" value="systemboard">SYSTEMBOARD<br>
    				<input type="checkbox" name="components[networkdrive]" value="networkdrive">NETWORKDRIVE<br>
    				<input type="checkbox" name="components[printer]" value="printer">PRINTER<br><br><br>	
    				<input type="submit"   name="CheckAll" value=" Scan Now " 
    					onClick="checkAll(document.myform.list)">
    			</div>
   		</body>   
</html>
```

Meine nächsten Frage wäre:

Die Abfrage der Tabelle gehört auch im Code von der IF Abfrage oder separat? Und natürlich auch erst abfragen, bei submit button!

Ich danke dir schon mal im voraus..


mfg  sab46sam


----------



## Berdine (20. März 2008)

Also du sendest ja die Informationen des Formulars, wo alle Checkboxen etc drin sind mit dem submit-Button an eine bestimmte Seite. Dies kann eine andere php-Seite sein oder auch die gleiche.
Wenn es die gleiche ist, dann solltest du sie aufteilen und zwar solltest du abfragen, ob der Button gedrückt wurde. (Sollte man auch auf einer seperaten Seite, aber hier ist es besonders wichtig). Nicht vergessen, das form-Tag auch zu schließen.


```
if($_POST['CheckAll'] == "Scan now"){
//Code für Formularauswertung
}
```

Und in dem Bereich kannst du dann die Checkboxen abfragen und auch deine Datenbankabfrage starten. Erstmal alle Checkboxen und dann darunter die "select"-Abfrage, die alle nötigen Dinge beeinhaltet, die du durch die Checkboxen herausgefunden hast....
Hast du eigentlich für jeden Hardewaretyp eine eigene Tabelle oder steht alles in einer? Also soll der Text, den die Person zum Suchen eingibt nur in einer Tabelle gesucht werden oder musst du mehrere durchsuchen?

Und da du scheinbar MsSql benutzt kan ich dir da leider bei den Befehlen nicht weiterhelfen, ich arbeite nur mit MySql. Vielleicht findet sich noch jemand anderes, der da weiterhelfen kann, wenn du da noch Probleme hast.


----------



## sab46sam (20. März 2008)

Ja aber ich meien was kommt dan unter diesem Code


```
if($_POST['CheckAll'] == "Scan now"){
Hier kommt doch print_r("und dann die mssql ausgabe oder ?);
}
```

und im oben erwähnten code, da muss ich die if abfrage auch immer unter der
jeweiligen checkbox !


----------



## Berdine (20. März 2008)

Zwischen die Checkboxen musst du keine if-Abfragen packen. In dem Teil des Codes kannst du dich einfach um alle Formularfelder kümmern, die du benötigst. Dann werden die Informationen mit dem "submit"-Button gesendet. Und erst, wenn du die verarbeitest, also wenn der Button gedrückt wurde, dann prüfst du, ob sie gesetzt sind und das halt in dem Teil der Datei, der erst ausgeführt wird, wenn der Button aktiv war.


----------



## sab46sam (25. März 2008)

Hallo und danke nochmals für deine Antwort.


Aber meine Frage ist jetzt,

die Abfragen die ich mache mit if, kann ich die indemfall unterhalb der Checkboxen machen?
Wenn ja, wie sieht so eine mehrfaches if abfrage? Ich muss ja eine if-Abfrage von allen Checkboxen machen.

Könntest du mir so einen Tip geben ?


wäre cool


----------



## Berdine (25. März 2008)

Die if-Abfragen direkt unter die Checkboxen zu setzen ist zwar möglich, aber nicht so sinnvoll. Du wertest sie ja erst aus, wenn der submit-Button gedrückt wurde und deshalb würde ich sie in einem seperatem Teil programmieren. Denn sonst würden jedesmal die if-Abfragen durchlaufen, auch wenn es gar nicht nötig ist, und das kostet ja immer Rechenzeit.

Die if-Abfragen können dann etwa so aussehen:


```
if(isset($_POST[components[cpu]])){
//Variable setzen...
}
```
Andere Beispiele habe ich ja schon gemacht...

Im Code kannst du dann z.B. Variablen definieren, zum Beispiel Teile für die SQL-Abfrage. Einfach alle Checkboxen so nach und nach abfragen.


----------

