Dynamische Auswahlboxen und Checkboxen.

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Dynamische Auswahlboxen und Checkboxen.

    Hallo


    Ich bin gerade an meinem Abschlussprojekt dran. In diesem Projekt geht es darum, das an den Wochenenden einer Firma ab und zu Leute arbeit (ist ja nix neues ;-)). Momentan wird das alles per Exceltabellen geregelt.
    Also dort wird eingetragen welche Abteilung und so weiter am Wochenende Arbeitet und welche Materialien und Anlagen angeschaltet werden müssen.

    Ich brauche also bei dem ganzen insgesamt 3 dynamische Auswahlkriterien.
    Als erstes wieg die Halle ausgewählt, anschließend die Abteilung (es werden also nur noch die Angezeigt die da auch vorhanden sind) und zum Schluss soll dann über Checkboxen die Materialien oder Anlagen angewählt werden, welche benötigt werden.

    Momentan wird das alles über PHP und Sessions gelöst. Hierbei muss aber ständig kontrolliert werden, welche Session aktuell ist, dann blinkt das die ganze Zeit, weil die Seite neu geladen werden muss, und und und.

    Ich habe im Internet ein JavaScript gefunden, wo ich die Auswahlboxen nun dynamisch am Anfang erstellen lasse. Das ist aber jetzt nur für 3, ich benötige ja dann noch zusätzlich zu den 2 Auswahlmenüs eine dynamische Checkliste.

    Wäre nett, wenn ihr mir weiterhelfen könnt, was ich nun verändern muss, damit das funktioniert.

    Hier muss also noch die Checkliste hinzu:

    Code:
    <? include_once 'db.php'; 
    
    dbconnect(); 
    $result = mssql_query("SELECT hallenname, hallennr FROM Halle ORDER BY hallenname;"); 
    $num=mssql_num_rows($result); 
    ?> 
    <form name="doublecombo"> 
    <select name="halle" size="1" onChange="redirect(this.options.selectedIndex)"> 
    <option>Bitte auswählen</option> 
    <?php 
    for ($i=0; $i<$num;$i++){ 
    $Zeile_name=mssql_result($result,$i,hallenname); 
    //$Zeile_nr=mssql_result($result,$i,hallennr); 
    ?> 
    <option><?PHP echo $Zeile_name; ?></option> 
    <?PHP 
    } 
    mssql_close(); 
    ?> 
    </select> 
    <br> 
    <select name="abteilung" size="1"> 
    <option value="index.php3?opencat=Gästebuch">Bitte auswählen</option> 
    </select> 
    <input type="button" name="test" value="Go!" onClick="go()"> 
    
    <script> 
    
    var groups=document.doublecombo.halle.options.length 
    var group=new Array(groups) 
    for (i=0; i<groups; i++) 
    group[i]=new Array() 
    <? 
    dbconnect(); 
    $result_halle = mssql_query("SELECT hallennr FROM Halle ORDER BY hallenname;"); 
    $num_halle=mssql_num_rows($result_halle); 
    for ($hai=0; $hai<$num_halle;$hai++){ 
    $Zeile_halle=mssql_result($result_halle,$hai,hallennr); 
    ?> 
    group[<?php echo $hai+1?>][0]=new Option("Bitte Auswählen") 
    <?php 
    $result_abteilung = mssql_query("SELECT abteilung.abtbezeichnung FROM Abteilung _
    JOIN (Anlage_Abteilung JOIN Anlage ON anlage.hallennr=$Zeile_halle AND Anlage.invnr = Anlage_Abteilung.invnr) _
    ON Anlage_Abteilung.abtbezeichnung = Abteilung.abtbezeichnung GROUP BY Abteilung.abtbezeichnung;"); 
    $num_abteilung=mssql_num_rows($result_abteilung); 
    for ($abi=0; $abi<$num_abteilung;$abi++){ 
    $Zeile_abteilung=mssql_result($result_abteilung,$abi,abtbezeichnung); 
    ?> 
    group[<?php echo $hai+1?>][<?php echo $abi+1?>]=new Option("<?php echo $Zeile_abteilung?>") 
    <?PHP 
    } 
    } 
    mssql_close();?> 
    
    var temp=document.doublecombo.abteilung 
    
    function redirect(x){ 
    for (m=temp.options.length-1;m>0;m--) 
    temp.options[m]=null 
    for (i=0;i<group[x].length;i++){ 
    temp.options[i]=new Option(group[x][i].text,group[x][i].value) 
    } 
    temp.options[0].selected=true 
    } 
    
    function go(){ 
    
    //location=temp.options[temp.selectedIndex].value 
    } 
    
    //--> 
    </script> 
    </form>

    Gruß Ingo

    Bin für jede Hilfe dankbar
    Zuletzt geändert von Armbrust; 30.07.2004, 10:27.

  • #2
    Ích habe dieses Script auch schon soweit erweitert, das ich noch ein Zusätzliches Array mit einbinde, welches Checkbox heißt.

    Aber wenn ich dieses Arrey mit einbinde läuft das ganze Script nicht mehr, obwohl ich dieses noch gar nicht mit in die FUnktion eingebunden habe.

    Wie muss der Funktion Befehl lauten, wenn ich das Arrey 3-Dimensional erstellen und abrufen will?

    Oder wo bekomme ich aus dem Internet hierrüber gute Beispielscripte.

    Kommentar


    • #3
      So sieht das Script mit 3 Auswahlboxen aus.
      Nun bekomme ich abewr nur, wenn ich die Halle 1 auswahle, also die erste Auswahlmöglichkeit der ersten Auswahlbox bei der 2. Auswahlbox den ersten möglichen Wert an, sonst keinen.

      Wo könnte der Fehler liegen?

      Code:
      <? include_once 'db.php';
      
      dbconnect();
      $result = mssql_query("SELECT hallenname, hallennr FROM Halle ORDER BY hallenname;");
      $num=mssql_num_rows($result);
      ?>
      <form name="buchung">
      	<select name="halle" size="1" onChange="redirect(this.options.selectedIndex)">
      		<option>Bitte auswählen</option>
      		<?php
      		for ($i=0; $i<$num;$i++){
      			$Zeile_name=mssql_result($result,$i,hallenname);
      			//$Zeile_nr=mssql_result($result,$i,hallennr);
      			?>
      			<option><?PHP echo $Zeile_name; ?></option>
      			<?PHP
      		}
      		mssql_close();
      ?>
      	</select>
      	<br>
      	<select name="abteilung" size="1">
      		<option value="index.php3?opencat=Gästebuch">Bitte auswählen</option>
      	</select>
      	<br>
      	<select name="anlage" size="1">
      		<option value="index.php3?opencat=Gästebuch">Bitte auswählen</option>
      	</select>
      
      	<input type="button" name="test" value="Go!" onClick="go()">
      	<br>
      
      
      	
      <script>
      
      var groups=document.buchung.halle.options.length
      var group=new Array(groups)
      for (i=0; i<groups; i++)
      	group[i]=new Array()
      	
      var checkboxen=document.buchung.abteilung.options.length
      var checkbox=new Array(checkboxen)
      for (ii=0; i<checkboxen; ii++)
      	checkbox[ii]=new Array()
      	
      <?
      dbconnect();
      $result_halle = mssql_query("SELECT hallennr FROM Halle ORDER BY hallenname;");
      $num_halle=mssql_num_rows($result_halle);
      for ($hai=0; $hai<$num_halle;$hai++){
      	$Zeile_halle=mssql_result($result_halle,$hai,hallennr);
      	?>
      	group[<?php echo $hai+1?>][0]=new Option("Bitte Auswählen")
      	<?php
      	$result_abteilung = mssql_query("SELECT abteilung.abtbezeichnung FROM Abteilung JOIN (Anlage_Abteilung JOIN Anlage ON anlage.hallennr=$Zeile_halle AND Anlage.invnr = Anlage_Abteilung.invnr) ON Anlage_Abteilung.abtbezeichnung = Abteilung.abtbezeichnung GROUP BY Abteilung.abtbezeichnung;");
      	$num_abteilung=mssql_num_rows($result_abteilung);
      	for ($abi=0; $abi<$num_abteilung;$abi++){
      		$Zeile_abteilung=mssql_result($result_abteilung,$abi,abtbezeichnung);
      		?>
      		group[<?php echo $hai+1?>][<?php echo $abi+1?>]=new Option("<?php echo $Zeile_abteilung?>")
      		<?php
      		$result_anlage = mssql_query("SELECT Anlage.anlname, Anlage.invnr FROM Anlage JOIN Anlage_Abteilung JOIN Abteilung ON anlage_abteilung.abtbezeichnung =$Zeile_abteilung AND anlage_abteilung.abtbezeichnung = abteilung.abtbezeichnung ON anlage.invnr = anlage_abteilung.invnr ORDER BY anlname;");
      		$num_anlage=mssql_num_rows($result_anlage);
      		for ($ani=0; $ani<$num_anlage;$ani++){
      			$Zeile_anlname=mssql_result($result_anlage,$ani,anlname);
      			$Zeile_invnr=mssql_result($result_anlage,$ani,invnr);
      			?>
      			checkbox[<?php echo $hai+1,$abi+1?>][<?php echo $ani+1?>]=new Option("<?php echo $Zeile_anlname?>","<?php echo $Zeile_invnr?>")
      			<?php
      		}
      	}
      }
      mssql_close();?>
      
      
      	function redirect(x){
      	
        		if(document.buchung.abteilung.length > 0)
         		{       
             		document.buchung.abteilung.length = null;
         		}
         		for(i=0;i < group[x].length;i++)
         		{
             		ins = new Option(group[x][i].text,group[x][i].value);
             		document.buchung.abteilung.options[document.buchung.abteilung.length] = ins;
         		}   
         
         		if(document.buchung.anlage.length > 0)
         		{
            		document.buchung.anlage.length = null;
         		}
         		for(ii=0;ii < checkbox[x].length;ii++)
         		{
             		ins1 = new Option(checkbox[x][ii].text,checkbox[x][i].value);
             		document.buchung.anlage.options[document.buchung.anlage.length] = ins1;
         		}
      	}
      
      	
      	
      function go(){
      
      
      	//	for (b=temp_anl.options.length-1;b>0;b--)
      	//		temp_anl.options[b]=null
      
      	// 			for (ii=0;i<checkbox[y].length;ii++){
      	//			temp_anl.options[ii]=new Option(checkbox[y][ii].text,checkbox[y][ii].value)
      	//		}
      	//		temp_anl.options[0].selected=true
      
      	 
      	//location=temp.options[temp.selectedIndex].value
      }
      
      //-->
      </script>
      </form>

      Kommentar


      • #4
        kennt sich hiermit keiner aus?

        Kommentar


        • #5
          nervt nicht rum. meinst du etwas, dass du hier was besseres bist und daher innerhalb von 2 min eine antwort erwarten kannst? NEIN!

          also höre mit der drängelei auf.

          desweiteren denke ich nicht, dass jemand die lust und die zeit hat, sich den kilometerlangen code anzusehen, der auch noch 15 bildschirme in die seite zu scrollen ist.....

          und wenn du weiter drängelst, kannst du dir das mal ne woche lang überlegen, ob das so gut ist/war, was du veranstalte(s)t (hast).
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            Sorry, aber wie soll ich das Problem dann sonst zeigen, wenn nicht reinstellen?



            @ Abraxax
            Wenn du so aufbrausend reagierst und die "nettikette" gleich verläßt, fällt mir nur eines dazu ein.

            ... leck mich

            Kommentar


            • #7
              [...] und die "nettikette" gleich verläßt [...]
              korrekt muss es heißen :

              .... und die [color=red]netiquette[/color] gleich vergißt ....


              Sorry, aber wie soll ich das Problem dann sonst zeigen, wenn nicht reinstellen?
              was ein dateianhang ist, weisst du aber. oder?


              ... leck mich
              ich danke für deine meinung. nur ist diese hier nicht angebracht.

              daher gebe ich dir eine woche zeit, um dein verhalten zu überdenken.
              nach dieser woche darfst du auch gerne einen neuen thread starten.....

              *CLOSE*

              *MOVE* to trash

              *BAN*
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar

              Lädt...
              X