Checkbox abfrage einer Datenbank mit Array

sab46sam

Grünschnabel
Hallo Leute,

also als erstes begrüsse ich euch ganz herzlich...und bin sehr froh....bei euch angemeldet zu sein. Ich lerne oder respektiv bin ich an einem Projekt im Geschäft eingewickelt und habe schon mega Problemen. Ich muss von einer bestehende Datenbank eine Webapplikation gestalten welches die Daten von der mssql Datenbank ausliest und darstellt.

Also mein Problem ist jetzt das ich nicht weiss wie genau die Checkboxen mit Array abfragen kann.

Hier mal mein Code:
Code:
<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

require 'config.php'; // Verbindungsaufbau durch angegebene Datei.

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

?>

<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>
    				<input type="text" name="ja" size="29" ><br><br>
    				<input type="checkbox" onclick="check(this.form,this.checked,'[]')">All Component<br><br><br><br>
    				<input type="checkbox" name="disk[]" value="true">DISK<br>
    				<input type="checkbox" name="cpu[]" value="true">CPU<br>
    				<input type="checkbox" name="dmi[]" value="true">DMI<br>
    				<input type="checkbox" name="bios[]" value="true">BIOS<br>
    				<input type="checkbox" name="floppy[]" value="true">FLOPPY<br>
    				<input type="checkbox" name="system[]" value="true">SYSTEM<br>
    				<input type="checkbox" name="monitor[]" value="true">MONITOR<br>
    				<input type="checkbox" name="software[]" value="true">SOFTWARE<br>
    				<input type="checkbox" name="operationsytem[]" value="true">OPERATIONSYSTEM<br>
    				<input type="checkbox" name="lanadapter[]" value="true">LANDADAPTER<br>
    				<input type="checkbox" name="serialport[]" value="true">SERIALPORT<br>
    				<input type="checkbox" name="memorymodule[]" value="true">MEMORYMODULE<br>
    				<input type="checkbox" name="videoadapter[]" value="true">VIDEOADAPTER<br>
    				<input type="checkbox" name="parallelport[]" value="true">PARALLELPORT<br>
    				<input type="checkbox" name="logicaldrive[]" value="true">LOGICALDRIVE<br>
    				<input type="checkbox" name="sytemboard[]" value="true">SYSTEMBOARD<br>
    				<input type="checkbox" name="networkdrive[]" value="true">NETWORKDRIVE<br>
    				<input type="checkbox" name="printer[]" value="true">PRINTER<br><br><br>	
    				<input type="submit"   name="CheckAll" value=" Scan Now " 
    					onClick="checkAll(document.myform.list)">
    				
 					
			</div>
   				</body>   
</html>

das ganze soll über einen (Tipp von ein Mitarbeiter) mit Array-key gemacht werden um später die Arbeit zu erleichtern.Dies ist dan eine zweite Datei, an der die Daten übermittelt und dan durch die Abfrage ausgelesen werden sollen.


Code 2:
Code:
<!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

require ('config.php'); // Verbindungsaufbau durch angegebene Datei.

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

	$db			=  mssql_select_db($db,$con);		   
	

?>

<div class="footer"></div>
	<div class="body">
		<?php include ("navigation.php")?>
		<div class="bgLeft"></div>
		<div class="bgRight"></div>
		<div class="bcontent" <table border="1">
									<tr>
										<td>
											<td><?php printf("Feld 1:%s<br>Feld 2:%s",
       										$_POST["disk"],
      										$_POST["cpu"]);?>
											</td>
										</td>
									</tr>
							 </table></div>
		<div class="bbutton"></div>
		<div class="egbgleft"></div>
		<div class="egbgright"></div>
		<div class="content"></div>
	</div>	
</body>
</html>

Bis jetzt funktioniert das so das bei der abfrage dan halt als Antwort Feld1:Array Feld2:Array erscheint. Doch sollte anstelle die Datensätze von der Tabelle Disk sowie über die Daten aus CPU ausgeben.


Kann mir vielleicht jemand helfen? es wäre sehr cool. Und wenn nicht danke trotzdem...:)
 
Bitte formatiere deinen Beitrag mal mit richtigen Tags!

Habe das auch mal gemacht - ich hoffe das beantwortet deine Frage:
PHP:
      $array_id = $_POST['id'];
      $array_titel = $_POST['titel'];
      $array_besch = $_POST['besch'];
      $array_jahr = $_POST['jahr'];
      $array_copyr = $_POST['copyr'];

      $anzahlbilder = 0;
      $erfolgreichedit = 0;
      $fehlschlagedit = 0;

      for($i=0;$i<$anzahl;$i++) {
        $anzahlbilder++;
        $sql = "UPDATE `mz_bilder` SET name='$array_titel[$i]', beschreibung='$array_besch[$i]', copyr='$array_copyr[$i]', jahr='$array_jahr[$i]' WHERE id = $array_id[$i] AND ortid = $ortid AND unterortid = $ortsteilid;";
        if ($erg = mysql_query($sql)) {
          $erfolgreichedit++;
        }
        else {
          $fehlschlagedit++;
        }
      }

ist nur nen kleiner ausschnitt - denke aber der erklärts alles! Auch bischen was dabei was du nicht brauchst - aber Struktur sollte klar sein?!

Frage beantwortet? Habe deinen Beitrag nicht so genau gelesen weil unübersichtlich...
 
Hallo sab46sam


Herzlich willkommen erstmal.
Wie Klein0r bereits geschrieben hat, fällt es uns leichter dir zu helfen, wenn du deinen Beitrag strukturierst und mit PHP-Codes formatierst.
Also deinen Code einfach mit [ PHP ] Code [ PHP ] (ohne die Leerzeichen).

Ich weiß nicht, ob ich dein Problem richtig verstanden hab, aber falls du meinst, dass du einfach im Formular bei den Komponenten auswählen willst ob disk, cpu, ... dabei sein soll und dies automatisch eintragen willst, dann funktioniert das am besten so:


Du gibst den Komponenten einen einheitlichen Namen wie z.B: "components" und hängst eine Array Klammer dran. Nun kannst du sie einheitlich mit components ansprechen.
Was du allerdings ändern musst ist der Wert (value).
(Siehe Beispiel Code)

Code:
  <input type="checkbox" name="components[]" value="disk" />
  <input type="checkbox" name="components[]" value="cpu" />


Der Trick ist nun ganz einfach.
Wird eine Checkbox angewählt, ist der Wert im Array "components".
Wird eine Checkbox nicht angewählt. Ist sie eben nicht drin.
(Das "[ ]" Zeichen füllt das Array mit fortlaufend numerierten Keys.
Das heißt wären jetzt beide angewählt, hättest du dieses Array
$components[0] = "disk";
$components[1] = "cpu"; )


Daher kannst du im PHP Script sehr einfach damit arbeiten.

Du gehst das Array components mit for oder foreach durch und kannst die Werte auslesen, die markiert sind. (Klein0r hat den Code dazu)


Ich hoffe das half und war ausführlich genug ;)
Hat man das System erst einmal verstanden ist es eigentlich sehr einfach.


Grüße SimonErich
 
Also ich habe es mal so versucht:

Datei Checkboxen:
PHP:
<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

$server= "ip";  
$user= "sas"; 
$passwort= "password"; 
$db="NIManagementDB";


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

	$db			=  mssql_select_db($db,$con);		   
	$sql		=  'SELECT * FROM [NC_Workstation]';
	$ergebnis	=  mssql_query($sql,$con);
	$ausgabe	=  mssql_fetch_array($ergebnis);
?>
<?php
      $array_disk 				= $_POST['disk'];
      $array_cpu 				= $_POST['cpu'];
      $array_dmi 				= $_POST['dmi'];
      $array_bios 				= $_POST['bios'];
      $array_floppy 			= $_POST['floppy'];
      $array_system 			= $_POST['system'];
      $array_monitor 			= $_POST['monitor'];
      $array_software 			= $_POST['software'];
      $array_operaitonsystem 	= $_POST['operationsystem'];
      $array_lanadapter 		= $_POST['lanadapter'];
      $array_serialport 		= $_POST['serialport'];
      $array_memorymodule 		= $_POST['memorymodule'];
      $array_videoadapter 		= $_POST['videoadapter'];
      $array_parallelport 		= $_POST['parallelport'];
      $array_logicaldrive 		= $_POST['logicaldrive'];
      $array_systemboard 		= $_POST['sytemboard'];
      $array_networkdrive 		= $_POST['networkdrive'];
      $array_networkdrive 		= $_POST['printer'];
	

      for($i=0;$i<$anzahl;$i++) {
        $checkboxen++;
        $sql = "UPDATE `mz_bilder` SET name='$array_disk[$i]', beschreibung='$array_cpu[$i]', copyr='$array_dmi[$i]', jahr='$array_bios[$i]' WHERE id = $array_floppy[$i] AND ortid = $ortid AND unterortid = $ortsteilid;";
        if ($erg = mysql_query($sql)) {
          $erfolgreichedit++;
        }
        else {
          $fehlschlagedit++;
        }
      }
      ?>



<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>
    				<input type="text" name="ja" size="29" ><br><br>
    				<input type="checkbox" onclick="check(this.form,this.checked,'[]')">All Component<br><br><br><br>
    				<input type="checkbox" name="disk[]" value="true">DISK<br>
    				<input type="checkbox" name="cpu[]" value="true">CPU<br>
    				<input type="checkbox" name="dmi[]" value="true">DMI<br>
    				<input type="checkbox" name="bios[]" value="true">BIOS<br>
    				<input type="checkbox" name="floppy[]" value="true">FLOPPY<br>
    				<input type="checkbox" name="system[]" value="true">SYSTEM<br>
    				<input type="checkbox" name="monitor[]" value="true">MONITOR<br>
    				<input type="checkbox" name="software[]" value="true">SOFTWARE<br>
    				<input type="checkbox" name="operationsystem[]" value="true">OPERATIONSYSTEM<br>
    				<input type="checkbox" name="lanadapter[]" value="true">LANDADAPTER<br>
    				<input type="checkbox" name="serialport[]" value="true">SERIALPORT<br>
    				<input type="checkbox" name="memorymodule[]" value="true">MEMORYMODULE<br>
    				<input type="checkbox" name="videoadapter[]" value="true">VIDEOADAPTER<br>
    				<input type="checkbox" name="parallelport[]" value="true">PARALLELPORT<br>
    				<input type="checkbox" name="logicaldrive[]" value="true">LOGICALDRIVE<br>
    				<input type="checkbox" name="sytemboard[]" value="true">SYSTEMBOARD<br>
    				<input type="checkbox" name="networkdrive[]" value="true">NETWORKDRIVE<br>
    				<input type="checkbox" name="printer[]" value="true">PRINTER<br><br><br>	
    				<input type="submit"   name="CheckAll" value=" Scan Now " 
    					onClick="checkAll(document.myform.list)">
    			</div>
   		</body>   
</html>


Die Abfrage geht dan an allwk.php durch !

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>
<?php

$server= "ip";  
$user= "sas"; 
$passwort= "password"; 
$db="NIManagementDB";


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

	$db			=  mssql_select_db($db,$con);		   
	$sql		=  'SELECT * FROM [NC_Workstation]';
	$ergebnis	=  mssql_query($sql,$con);
	$ausgabe	=  mssql_fetch_array($ergebnis);
	
	$array_disk 			= $_POST['disk'];
        $array_cpu 				= $_POST['cpu'];// Dieser Teil fehlt ein gentlich weg                                 
                                                                             //  da es chon in der Datei von den       
                                                                             // Checkboxen vorkommt.                                            
                                                                            //Dies war nur zum testen
    $array_dmi 				= $_POST['dmi'];
    $array_bios 			= $_POST['bios'];
    $array_floppy 			= $_POST['floppy'];
    $array_system 			= $_POST['system'];
    $array_monitor 			= $_POST['monitor'];
    $array_software 		= $_POST['software'];
    $array_operaitonsystem 	= $_POST['operationsystem'];
    $array_lanadapter 		= $_POST['lanadapter'];
    $array_serialport 		= $_POST['serialport'];
    $array_memorymodule 	= $_POST['memorymodule'];
    $array_videoadapter 	= $_POST['videoadapter'];
    $array_parallelport 	= $_POST['parallelport'];
    $array_logicaldrive 	= $_POST['logicaldrive'];
    $array_systemboard 		= $_POST['sytemboard'];
    $array_networkdrive 	= $_POST['networkdrive'];
    $array_networkdrive 	= $_POST['printer'];

?>

<div class="footer"></div>
	<div class="body">
		<?php include ("navigation.php")?>
		<div class="bgLeft"></div>
		<div class="bgRight"></div>
		<div class="bcontent" <table border="1">
									<tr>
										<td>
											<td>
											<?php
												 for($i=0;$i<$anzahl;$i++) {
        											$checkboxen++;
        											$sql = "UPDATE `mz_bilder` SET name='$array_disk[$i]', beschreibung='$array_cpu[$i]', copyr='$array_dmi[$i]', jahr='$array_bios[$i]' WHERE id = $array_floppy[$i] AND ortid = $ortid AND unterortid = $ortsteilid;";
												        if ($ergebnis = mysql_query($sql)) {
												          $erfolgreichedit++;
												        }
												        else {
												          $fehlschlagedit++;
												        }
												      }
												      ?>
											</td>
										</td>
									</tr>
							 </table></div>
		<div class="bbutton"></div>
		<div class="egbgleft"></div>
		<div class="egbgright"></div>
		<div class="content"></div>
	</div>	
</body>
</html>


Die Datenbank Verbindung ist auch falsch strukturiert. Soll eigentlich von der config.php
importiert werden. Das muss ich auch noch machen. Meine frage ist jetzt , was genau beinhaltet die foreach schleife....was für variablen müssen da abgefragt werden?
 

Neue Beiträge

Zurück