title image


Smiley Idee schon umgesetzt?
Hi,



wenn ich dich richtig verstanden habe, sieht die Lösung(in PHP/MySQL) wie folgt aus (klicke hier zur Ergebnisvorschau und hier zum Download)...



Beispieldatenvorschau:



id parent_id name wert text_namen text_values readonly_namen readonly_values disabled_namen disabled_values 1 0 auswahl1               2 1 Auswahlwert #1 auswahlwert1 feld1,feld2 wert1,wert2     feld3 wert3 3 1 Auswahlwert #2 auswahlwert2 feld1 wert1 feld3 wert3 feld2 wert2 4 1 Auswahlwert #3 auswahlwert3 feld1 wert1 feld2 wert2     6 0 auswahl2               5 6 Auswahlwert #1 auswahlwert1 feld1,feld2 wert1,wert2     feld3 wert3 8 6 Auswahlwert #2 auswahlwert2 feld1 wert1 feld3 wert3 feld2 wert2 9 6 Auswahlwert #3 auswahlwert3 feld1 wert1 feld2 wert2    



db.sql:







CREATE TABLE auswahl_eingabemoeglichkeiten (

id mediumint(8) unsigned NOT NULL auto_increment,

parent_id mediumint(8) unsigned NOT NULL default '0',

name varchar(255) NOT NULL default '',

wert varchar(255) NOT NULL default '',

text_namen varchar(255) NOT NULL default '',

text_values varchar(255) NOT NULL default '',

readonly_namen varchar(255) NOT NULL default '',

readonly_values varchar(255) NOT NULL default '',

disabled_namen varchar(255) NOT NULL default '',

disabled_values varchar(255) NOT NULL default '',

PRIMARY KEY (id)

) TYPE=MyISAM;



INSERT INTO auswahl_eingabemoeglichkeiten VALUES (1, 0, 'auswahl1', '', '', '', '', '', '', '');

INSERT INTO auswahl_eingabemoeglichkeiten VALUES (2, 1, 'Auswahlwert #1', 'auswahlwert1', 'feld1,feld2', 'wert1,wert2', '', '', 'feld3', 'wert3');

INSERT INTO auswahl_eingabemoeglichkeiten VALUES (3, 1, 'Auswahlwert #2', 'auswahlwert2', 'feld1', 'wert1', 'feld3', 'wert3', 'feld2', 'wert2');

INSERT INTO auswahl_eingabemoeglichkeiten VALUES (4, 1, 'Auswahlwert #3', 'auswahlwert3', 'feld1', 'wert1', 'feld2', 'wert2', '', '');

INSERT INTO auswahl_eingabemoeglichkeiten VALUES (6, 0, 'auswahl2', '', '', '', '', '', '', '');

INSERT INTO auswahl_eingabemoeglichkeiten VALUES (5, 6, 'Auswahlwert #1', 'auswahlwert1', 'feld1,feld2', 'wert1,wert2', '', '', 'feld3', 'wert3');

INSERT INTO auswahl_eingabemoeglichkeiten VALUES (8, 6, 'Auswahlwert #2', 'auswahlwert2', 'feld1', 'wert1', 'feld3', 'wert3', 'feld2', 'wert2');

INSERT INTO auswahl_eingabemoeglichkeiten VALUES (9, 6, 'Auswahlwert #3', 'auswahlwert3', 'feld1', 'wert1', 'feld2', 'wert2', '', '');







config.inc.php:







<?php



$db_server = "localhost";

$db_user = "benutzername";

$db_passwort = "benutzerpasswort";

$db_name = "datenbankname";



$db = mysql_connect($db_server,$db_user,$db_passwort)or die("Verbindungsfehler!");

mysql_select_db($db_name);



?>







index.php:







<?php



include("config.inc.php");



?>

<html>

<head>

<script language="JavaScript">

<!--



<?php



include("spec_javascript_generierung.php");



?>



//-->

</script>

</head>

<body>

<form action="index.php" method="post">

<table>



<?php



include("drop_down_generierung.php");



?>



</table>

</form>

</body>

</html>







drop_down_generierung.php:







<?php



$sql = "SELECT * FROM auswahl_eingabemoeglichkeiten";

$result2 = mysql_query($sql);

$anzahl_datensaetze = mysql_affected_rows();



$sql = "SELECT id,name FROM auswahl_eingabemoeglichkeiten WHERE parent_id = 0";



$result2 = mysql_query($sql);



if($result2 && mysql_affected_rows() != 0)

{

$i = 1;

$j = 1;



while($row2 = mysql_fetch_array($result2))

{

$old_auswahllisten_id = $auswahllisten_id;

$auswahllisten_id = $row2["id"];



$onChangeAction = "createTextFields('auswahl_eingabefelder".$auswahllisten_id."','".$auswahllisten_id."',this.form.".$row2["name"].".options.selectedIndex);";



if($i>1)

{

echo '

</select>

</td>

<td id="auswahl_eingabefelder'.$old_auswahllisten_id.'">

</td>

</tr>';

}



echo '

<tr>

<td style="vertical-align:top;">

<select name="'.$row2["name"].'" onChange="'.$onChangeAction.'">';



$sql = "SELECT * FROM auswahl_eingabemoeglichkeiten WHERE parent_id = ".$row2["id"];



$result = mysql_query($sql);



if($result && mysql_affected_rows() != 0)

{

while($row = mysql_fetch_array($result))

{

echo '

<option value="'.$row["wert"].'">'.$row["name"].'</option>';



$j++;

}

}



if((($i+$j)-1) == $anzahl_datensaetze)

{

echo '

</select>

</td>

<td id="auswahl_eingabefelder'.$auswahllisten_id.'">

</td>

</tr>';

}



$i++;

}

}



?>







spec_javascript_generierung.php:







var eingabe_felder_nach_auswahl = new Array();

<?php



$sql = "SELECT * FROM auswahl_eingabemoeglichkeiten";

$result2 = mysql_query($sql);

$anzahl_datensaetze = mysql_affected_rows();



$sql = "SELECT id FROM auswahl_eingabemoeglichkeiten WHERE parent_id = 0";



$result2 = mysql_query($sql);



if($result2 && mysql_affected_rows() != 0)

{

$i = 1;

$j = 1;

$auswahllistencode = "";

$auswahllisten_index = 0;

$auswahllisten_werte_beginn = true;

$auswahlwerte_index = 0;

$eingabemoeglichkeiten_index = 0;



while($row2 = mysql_fetch_array($result2))

{

if($auswahllisten_index > 0)

{

//Auswahlliste abschließen

$auswahllistencode .= '));

';

}



$auswahllistencode .= '

eingabe_felder_nach_auswahl["'.$row2["id"].'"] = new Array(';



$auswahllisten_index++;

$auswahlwerte_index = 0;



$sql = "SELECT * FROM auswahl_eingabemoeglichkeiten WHERE parent_id = ".$row2["id"];



$result = mysql_query($sql);



if($result && mysql_affected_rows() != 0)

{

while($row = mysql_fetch_array($result))

{

if($auswahlwerte_index == 0)

{

if($auswahllisten_werte_beginn)

{

//Auswahlwert der Auswahlliste hinzufügen

$auswahllistencode .= '

new Array(';

}

}

else if($auswahlwerte_index > 0)

{

if($auswahllisten_werte_beginn)

{

//Auswahlwert der Auswahlliste hinzufügen

$auswahllistencode .= '),

new Array(';

}

else

{

//Auswahlwert abschließen:

$auswahllistencode .= '),';

}

}



$eingabemoeglichkeiten_index = 0;



$textnamen = explode(",",$row["text_namen"]);

$textvalues = explode(",",$row["text_values"]);

$readonly_namen = explode(",",$row["readonly_namen"]);

$readonly_values = explode(",",$row["readonly_values"]);

$disabled_namen = explode(",",$row["disabled_namen"]);

$disabled_values = explode(",",$row["disabled_values"]);



// TODO: Evtl. die nächsten 3 For-Schleifen zu einer zusammenfassen, z.B. über "eval"

if($row["text_namen"] != "")

{

for($k=0; $k<count($textnamen); $k++)

{

if($eingabemoeglichkeiten_index > 0)

{

//Eingabemöglichkeit abschließen

$auswahllistencode .= ',';

}



//Eingabemöglichkeit dem Auswahlwert zuweisen

$auswahllistencode .= '

new Array('.$row["id"].',0,"'.$textnamen[$k].'","'.$textvalues[$k].'")';

$eingabemoeglichkeiten_index++;

}

}



if($row["readonly_namen"] != "")

{

for($k=0; $k<count($readonly_namen); $k++)

{

if($eingabemoeglichkeiten_index > 0)

{

$auswahllistencode .= ',';

}



//Eingabemöglichkeit dem Auswahlwert zuweisen

$auswahllistencode .= '

new Array('.$row["id"].',1,"'.$readonly_namen[$k].'","'.$readonly_values[$k].'")';

$eingabemoeglichkeiten_index++;

}

}



if($row["disabled_namen"] != "")

{

for($k=0; $k<count($disabled_namen); $k++)

{

if($eingabemoeglichkeiten_index > 0)

{

$auswahllistencode .= ',';

}



//Eingabemöglichkeit dem Auswahlwert zuweisen

$auswahllistencode .= '

new Array('.$row["id"].',2,"'.$disabled_namen[$k].'","'.$disabled_values[$k].'")';

$eingabemoeglichkeiten_index++;

}



$auswahlwerte_index++;

$auswahllisten_werte_beginn = true;

}



$j++;

}

}



if((($i+$j)-1) == $anzahl_datensaetze)

{

//Auswahlliste abschließen

$auswahllistencode .= '));

';

//Auswahllisten ausgeben

echo $auswahllistencode;

}



$i++;

}

}



?>



var feld_status = new Array("",' readonly="readonly"',' disabled="disabled"');



function createTextFields(target,listen_index,werte_index)

{

var datensatz = eingabe_felder_nach_auswahl[listen_index][werte_index];

var content = "";



for(var i=0; i<datensatz.length; i++)

{

content += '<p><input type="text" name="' + datensatz[i][2] + '" value="' + datensatz[i][3] + '"' + feld_status[datensatz[i][1]] +'></p>';

document.getElementById(target).innerHTML = content;

}

}







PS: Hab' ich dich falsch verstanden oder hast du Fragen und/oder Änderungswünsche, kannst du gerne zurückschreiben ;-)



MfG Murdoch!



aktuelle Winamp Playlist                Hörgewohnheiten (Last.fm)



geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: