Auslesen von Datenbank, Baumstruktur und Probleme beim Ausgrauen von Checkboxen

mtruels

Grünschnabel
Hallo liebe tutorials.de Gemeinde!
(Ich schreibe das mal ins Javascript Board. Ich bitte es zu entschuldigen, falls der Fehler bei PHP oder HTML zu finden ist)
Ich habe jetzt 4 Stunden probiert mein Problem zu beheben, jedoch egal was ich probierte: Nichts ging.
Ich muss dazu gestehen das ich im Prinzip kaum Ahnung von JavaScript habe und ich somit eher das "try and error"-System nutzen musste:(

Es geht um folgendes:
Ich soll für meinen Schwerpunkt in der Uni eine Website gestalten(Mein Thema ist E-Learning), soweit so gut und bin auch schon recht weit gekommen und hänge nun bei der Entwicklung der "Lehrplanerstellung"

- Themen können gewählt einzeln gewählt werden oder als Block
- Wurde ein Block gewählt können die einzelnen Lektionen nicht mehr angewählt werden (ausgrauen duch JavaScript)

Die Daten werden aus einer Datenbank mittles einer while-Schleife (mit fetch array) eingelesen.

Die angewählten Daten werden dann per Formular übermittelt.
Und hier herrscht das Problem, denn meine Checkboxen heissen alle z.B. lg_php und ich weiß nicht wie ich diese Werte mit $_POST auslesen soll.

Habs auch mit einer Art Array probiert und indem ich eine Zählvariable angehängt habe.
DIes kollidiert jedoch mit der Javascript-Funktion. (und mein Probieren hat das leider nicht behoben :()

Anbei noch die Quellcodes und ein Bild wie das Checkboxsystem aussieht.

Ich hoffe sehr das ihr mir helfen könnt, ansonsten muss ich wohl auf das "ausgrauen" verzichten:(

Bild

PHP:
 <?php


$sql = mysql_query("SELECT name FROM `videos` WHERE `kategorie` = 1 AND `verweis1` = 'php'");

$db = mysql_num_rows($sql);


while ($row = mysql_fetch_array($sql, MYSQL_NUM)) {
 
	// Videos
	
	$sl = mysql_query("SELECT laenge FROM `videos` WHERE `name` = '$row[0]' AND `verweis1` = 'php'");
	$ro = mysql_fetch_array($sl, MYSQL_NUM);
	if ($ro[0] != "kat") {?> 
	
	    <li><a href="#">
      <input type="checkbox" name="lg_php" value="<? echo $row[0]; ?>"><? echo $row[0]; ?><br>
      </a>      </li>
	<? 			    	}
	
	else {
	
	// Ggf. Themen
	?>
   <li><a href="#"><? echo $row[0]; ?></a>
       <ul><?
	$sq = mysql_query("SELECT name FROM `videos` WHERE `verweis0` = '$row[0]' AND `verweis1` = 'php'");
	while ($r = mysql_fetch_array($sq, MYSQL_NUM)) {?>
	   <li><a href="#">
      <input type="checkbox" name="lg_php" value="<? echo $r[0]; ?>"><? echo $r[0]; ?><br>
      </a>      </li><? } ?></ul> <?
	
	 	 }}
	
	?>

Code:
function php () {
  if (document.lg_select.ph.checked != true) {
    var deaktiviert = false;
  } else {
    var deaktiviert = true;
  }
  for (var i = 0; i < document.lg_select.lg_php.length; i++) {
    document.lg_select.lg_php[i].disabled = deaktiviert;
  }
}
(Den JavaScript-Code habe ich so (also die Grundlage) im Internet gefunden. Was bedeutet das [i]? Habe gehofft das dies schon eine Art Array ist, welchen ich verwenden kann...mir jedoch schleierhaft wie)

p.s Die checkbox die fürs ausgrauen sorgt gibts natürlich auch:)
HTML:
<input type="checkbox" name="ph" value="nein" onClick="php();">
 
Hi,

gib den Elementen den Name lg_php[]. Somit kannst du auf der Serverseite mit PHP wie folgt darauf zugreifen:
Code:
$_POST['lg_php'][0];
$_POST['lg_php'][1];
$_POST['lg_php'][2];
// ... usw.
Im JavaScript greifst du über das elements-Array auf die Elemente zu:
Code:
function php () {
  if (document.lg_select.ph.checked != true) {
    var deaktiviert = false;
  } else {
    var deaktiviert = true;
  }
  for (var i = 0; i < document.lg_select.elements['lg_php[]'].length; i++) {
    document.lg_select.elements['lg_php[]'][i].disabled = deaktiviert;
  }
}
Statt der elements-Kollektion kannst du auch über die Methode getElementsByName auf die gewünschten Elemente zugreifen.

Vielleicht hilft dir das weiter.

Ciao
Quaese
 
Moin,....

Ich nehme mal an, dort gibt es noch mehr Fachgebiete, welche so "behandelt" werden sollen.
Du kannst das alles in einem Rutsch erledigen, übergebe der Funktion die Sprache als Parameter...eine einzige Funktion für alles :)
Code:
function funktion(lang) 
{
  for (var i = 0; i < document.lg_select.elements['lg_'+lang+'[]'].length; i++) 
  {
    document.lg_select.elements['lg_'+lang+'[]'][i].disabled = document.lg_select.elements[lang].checked;
  }
}
//Aufruf: bspw.
funktion('php');
 
Vielen Dank für die Antwort:)
Hatte mir sowas auch gedacht, jedoch mit $_POST['lg_php'[]] probiert, was nicht klappte:(

Jetzt kommt zwar ein Wert, jedoch immer nur der erste Buchstabe (Hab über sowas schonmal was gelesen [glaube ich], weis jedoch nicht wie ich das beheben soll)

so führt:
PHP:
echo "0: ".$_POST['lg_php'][0]."<br />";
	   echo "1: ".$_POST['lg_php'][1]."<br />";
	   echo "2: ".$_POST['lg_php'][2]."<br />";
	   echo "3: ".$_POST['lg_php'][3]."<br />";
zu
0: A
1: r
2: r
3: a

wenn ich die Array-Checkbox anklicke:(


@Sven:
Hab deine Nachricht garned gesehen:)
Ja um sowas kümmer ich mich immer erst nachdem alles auf die Simple Art funktioniert;)
Aber VIELEN DANK dafür:)
 
Hi,

wie sieht dein sendendes Dokument aus - bitte als geparsten HTML-Code posten.

Folgendes Konstrukt funktioniert bei mir problemlos.
Code:
<html>
<head>
<title>www.tutorials.de</title>
<meta name="author" content="Quaese">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
  if(isset($_POST) && (count($_POST)>0)){
    for($i=0; $i<count($_POST['lg_php']); $i++)
      echo("\$_POST['lg_php'][".$i."] = " .$_POST['lg_php'][$i]."<br>\n");
  }
?>
<form method="post" action="<?php echo($_SERVER['PHP_SELF']); ?>">
  <div>
    <input type="checkbox" name="lg_php[]" value="Wert 1" checked><br>
    <input type="checkbox" name="lg_php[]" value="Wert 2" checked><br>
    <input type="checkbox" name="lg_php[]" value="Wert 3" checked><br>
    <input type="checkbox" name="lg_php[]" value="Wert 4" checked><br>
    <input type="submit">
  </div>
</form>
</body>
</html>
Ciao
Quaese
 
Meine Ausrede:
Es war früh am Morgen;)

Ja, der Fehler war natürlich im Formular selbst, denn das hab ich einfach ned als Array ausgegeben:D

Vielen Dank an alle die mir (wiedermal) so gut geholfen haben! ECHT TOP!

p.s.
Hatte erst gedacht es geht schon wieder nicht, da ich die Ausgabe "Array, Array, Array" bei meinen Testwerten hatte.
Hatte diesmal [0][0][0] ausgegeben (jaaa, strg + c/v:)) und der [0] Wert war nunmal "Array"

p.s.2 Ich hoffe niemand von euch muss heute noch einlaufen...selbst um 10 sind die Supermärkte randvoll:D
 

Neue Beiträge

Zurück