Announcement

Collapse
No announcement yet.

PHP/AJAX Dynamische Selectboxen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • PHP/AJAX Dynamische Selectboxen

    Hy leutz
    also gleich zur sache...

    ich hab eine website und wollte dynamische selectboxen basteln...
    wenn ich in einer box einen ort auswähle, sollen in der anderen box alle Discos dieses ortes angezeigt werden... ich bekomms nicht hin...

    Hier die codes...
    meine eventsuche.php

    Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    	<head>
    		<link rel="stylesheet" type="text/css" href="badcat.styles.css">
    		<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
    
            <title>www.badcat-events.de</title>
    	
    		<script type="text/javascript">
    <!--
    /**
     * clears a select form element
     * 
     * @param targetSel - dom reference to the select element
     */
    function clearSelect(targetSel) {
    	for (var i=targetSel.length; i>=0; i--) {
    		targetSel.options[i] = null;
    	}
    }
    
    /**
     * sends a request under usage of a loading graphic - targettable has to be positioned relative
     *
     * @param srcref - reference to the select element with chosen data
     * @param target - form element name of target element
     */
    function sendRequest(domref, target) {
    	var req;
    	try {
    		req = window.XMLHttpRequest ? new XMLHttpRequest():
    			new ActiveXObject("Microsoft.XMLHTTP");
    	} catch (e) {
    		// no AJAX Support
    	}
    	req.onreadystatechange = function() {
    		if ((req.readyState == 4) && (req.status == 200)) {
    			// merge empty line with response
    			var data = eval('(' + req.responseText + ')');
    			var targetRef = document.getElementById(target);
    			var targetSel = targetRef.getElementsByTagName('select')[0];
     alert(data[1].text);
     
    			// clear old data
    			clearSelect(targetSel);
     
    			// fill with data from json response
    			for(var x in data) {
    				targetSel.appendChild(new Option(
    					data[x].text, 
    					data[x].value
    				));
    			}
     
    			// clear all followups
    			while(targetSel.followup) {
    				targetRef = document.getElementById(targetSel.followup);
     
     
    				// mark next select
    				targetSel = targetRef.getElementsByTagName('select')[0];
     
    				// clear old data
    				clearSelect(targetSel);
    			}
    		}
    	}
     
    	req.open("POST", "ajax.php", true);
    	req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
     
    	// send empty post with initial load
    	req.send(domref !== null ? 'value='+domref.value+'&name='+domref.name : '');
     
    	return false; // return false to avoid reload/recentering of the page
    }
    //-->
    </script>
    
    	</head>
    	<body>
    		<div id="container">
    			<?require("phpklassen/menue.php");?>  			
    			<div id="content">
    				<?
    				if(isset($_REQUEST["Aktion"])){
    					$Aktion = "Suchen";
    				}
    				else{
    					$Aktion = null;
    				}
    				
    				if($Aktion == "Suchen"){
    					require ("phpklassen/eventssuchen.varupdate.sqlbuild.php");
    				}
    					echo "Du suchst ein bestimmtes Event?<br><br>";
    				?>
    				
    				<form name="Suchformular" action="<?echo $_SERVER[PHP_SELF];?>" method="post">
    					<input type="hidden" name="Aktion" value="Suchen">
    					<table border="0">
    						<tr>
    							<td align="right">
    								Ort:
    							</td>
    							<td id="Orte">
    								<?require("phpklassen/load.orte.liste.php");?>
    							</td>
    							<td align="right">
    								Club:
    							</td>
    							<td id="Clubs">
    								<?require("phpklassen/load.club.liste.php");?>
    							</td>
    						</tr>
    						<tr>
    							<td align="right">
    								Eventname:
    							</td>
    							<td>
    								<input type="text" name="eventname" value="<?echo $eventname?>">
    							</td>
    						</tr>
    						<tr>
    							<td align="center" colspan="4"><input type="image" src="Bilder/pfoten/pfotemitlupe.gif" width="60" height="60" name="Aktion" ></td>
    						</tr>
    					</table>
    					
    				</form>
    				<br>
    				<?if($Aktion == "Suchen"){
    					require ("phpklassen/eventssuchen.php");
    				}?>
    		</div>
    	</body>
    </html>

    die ajax.php

    PHP Code:
    <?php

    $SelectedValue 
    = isset($_REQUEST['value']) ? $_REQUEST['value'] : 0;//Wert des eintrags
    $SelBoxName = isset($_REQUEST['name']) ? $_REQUEST['name'] : 0;//Name der selectbox
     
    $Clubs = array(); 
    $Orte = array(); 
    $i =0;

    //-------------------------HIER IST STANDART-------------------------
    if (strcmp($SelBoxName"Club") != 0){
        
        
    //----Laden ALLER Orte in ein Array----
        
    require ("phpklassen/get.db.connection.php");
            
        
    $query "SELECT DISTINCT Ort FROM Clubs ORDER BY Ort"or die(mysql_error());
        
    $result mysql_query($query)or die(mysql_error());
        
        if (
    $_REQUEST[Ort] != null && $_REQUEST[Ort] != ""){
            
    $Ort $_REQUEST[Ort];    
        }
        
        while (
    $line mysql_fetch_array($result)){
            
    array_push($Orte$line[Ort]);
        }
        
        
    mysql_free_result($result);
        
    mysql_close();
        
        
    //------For Anzahl Orte die Orte in ein 2-Dimensionales Array schreiben für aufbau der selectbox
    //    for($j=0; $j<count($Orte); $j++) {
    //        
    //        $NewOrt = str_replace("ß", "ss", $Orte[$j]);
    //        
    //        $data[0][$j] = array(
    //            'value' => $NewOrt,
    //            'text' => $NewOrt,
    //        );
    //    }
    }

    //--------------------------------------------------------------------------------
    //-----------------------Laden der Orte-SelectBox---------------------------------
    //--------------------------------------------------------------------------------
    if (strcmp($SelBoxName"Club") == 0){

        
    //----------Laden ALLER Orte in ein Array-----
        
    require ("phpklassen/get.db.connection.php");
        
        
    $query "SELECT DISTINCT Name FROM Clubs ORDER BY Name"or die(mysql_error());
        
    $result mysql_query($query)or die(mysql_error());
            
        
    array_push($Clubs"");

        
    //-------Alle Clubs in ein Array laden-------------------------
        
    while ($line mysql_fetch_array($result)){
            
    array_push($Clubs$line["Name"]);
        }

        
    mysql_free_result($result);
        
    mysql_close();
        
    //-------------------------------------------------------------
            
        
    for($k=0$k<count($Clubs); $k++) {

            
    //---------Clubs laden---------------------
            
    require ("phpklassen/get.db.connection.php");
            
            if (isset(
    $_REQUEST['value']) && $_REQUEST['value'] != ""){
                
    $Club $_REQUEST['value'];
                
    $Club str_replace("ss""ß"$Club);
                
    $Club str_replace("ae""ä"$Club);
                
    $Club str_replace("oe""ö"$Club);
                
    $Club str_replace("ue""ü"$Club);

                
    $query "SELECT DISTINCT Ort FROM Clubs WHERE `Name` = '".$Club."' ORDER BY Name";
            }
            else{
                
    $query "SELECT DISTINCT Ort FROM Clubs ORDER BY Ort";
            }
        
                
    $result mysql_query($query);
                    
                
    $z 1;
                if (
    $_REQUEST['value'] == ""){
                    
    $data[$Clubs[$k]][0] = array(
                        
    'value' => "",
                        
    'text' => "Alle Orte",
                    );
                }
                
                   while (
    $line mysql_fetch_array($result)) {
                       
    $NewOrt str_replace("ß""ss"$line["Ort"]);
                       
    $NewOrt str_replace("ä""ae"$NewOrt);
                       
    $NewOrt str_replace("ö""oe"$NewOrt);
                       
    $NewOrt str_replace("ü""ue"$NewOrt);
                       
                       
    $data[$Clubs[$k]][$z] = array(
                        
    'value' => $NewOrt,
                        
    'text' => $NewOrt,
                    );
                    
    $z++;
                }
            
                
    mysql_free_result($result);
                
    mysql_close();
            }
        }




    //----------------------------------------------------------------
    //----------------Laden der Clubs-SelectBox-----------------------
    //----------------------------------------------------------------

    //Wenn SelectBox - Ort verändert wurde...
    if (strcmp($SelBoxName"Ort") == 0){
        
        
    //Wenn ein Wert übergeben wurde...
        
    if (isset($_REQUEST['value']) && $_REQUEST['value'] != null && $_REQUEST['value'] != ""){
            
            
    //Für Gesamtanzahl der Orte in der DB...
            
    for($k=0$k<count($Orte); $k++) {

                
    //---------Clubs laden---------------------
                
    require ("phpklassen/get.db.connection.php");
            
                if (isset(
    $_REQUEST['value']) && $_REQUEST['value'] != ""){
                    
    $Ort $_REQUEST['value'];
                    
    $Ort $_REQUEST['value'];
                    
    $Ort str_replace("ss""ß"$Ort);
                       
    $Ort str_replace("ae""ä"$Ort);
                       
    $Ort str_replace("oe""ö"$Ort);
                       
    $Ort str_replace("ue""ü"$Ort);
                       
                    
    $query "SELECT DISTINCT Name FROM Clubs WHERE `Ort` = '$Ort' ORDER BY Name";
                }
                else{
                    
    $query "SELECT DISTINCT Name FROM Clubs ORDER BY Name";
                }
        
                
    $result mysql_query($query);
                    
                if (
    $_REQUEST[Club] != null && $_REQUEST[Club] != ""){
                    
    $Club$_REQUEST[Club];    
                }
                
                
    $z 1;
                
    $data[$Orte[$k]][0] = array(
                        
    'value' => "",
                        
    'text' => "Alle Clubs",
                );
                   
                   while (
    $line mysql_fetch_array($result)) {
                       
                       
    $NewName str_replace("ß""ss"$line["Name"]);
                       
    $NewName str_replace("ä""ae"$NewName);
                       
    $NewName str_replace("ö""oe"$NewName);
                       
    $NewName str_replace("ü""ue"$NewName);
                       
                       
    $data[$Orte[$k]][$z] = array(
                        
    'value' => $NewName,
                        
    'text' => $NewName,
                    );
                    
    $z++;
                }
            
                
    mysql_free_result($result);
                
    mysql_close();
            }
        }
    }
     
    // access the childs with its parent index
    $return $data[$SelectedValue];
     
    echo 
    json_encode($return); 
    ?>
    und die funktion zum laden der selectbox (nur eine weil die andere das selbe nur in grün ist )

    PHP Code:
    <?#---------Lädt eine SelectListe aller Orte die in der DB Stehen-------------

    try{
        require ("get.db.connection.php");
        
        $query = "SELECT DISTINCT Ort FROM Clubs ORDER BY Ort"or die(mysql_error());
        $result = mysql_query($query)or die(mysql_error());
        if ($_REQUEST[Ort] != null && $_REQUEST[Ort] != "")$Ort = $_REQUEST[Ort];
        ?>

            <select name="Ort" size="1" onchange="sendRequest(this, 'Clubs')">
                <option value="">Alle Orte</option>
                <?while ($line = mysql_fetch_array($result)){
                    $NewName = str_replace("ß", "ss", $line["Ort"]);
                       $NewName = str_replace("ä", "ae", $NewName);
                       $NewName = str_replace("ö", "oe", $NewName);
                       $NewName = str_replace("ü", "ue", $NewName);
                       ?>
                    <option value="<?PHP echo $NewName;?>" <? if($Ort == $line[Ort]){echo "selected";}?>><?PHP echo $NewName;?></option>
                <?}?>
            </select>

        <?mysql_free_result($result);
        mysql_close();
    }
    catch (exception $e){
        echo "Fehler beim laden der Orte-Select-Liste! Fehler: ".$e;
    }?>
    thx für hilfe...
    Zuletzt editiert von marcigod; 08.06.2009, 10:46. Reason: ajax.php ist eine andere

  • #2
    ich bekomms nicht hin...
    ist kein Fehler. Muss man jetzt hier den Code durchgehen um die Info zu bekommen WAS nicht geht, was für Meldungen kommen?
    Christian

    Comment


    • #3
      also... meldungen kommen garkeine... in der ajax.php kann ich keine ausgaben machen weil das sonst mit dem AJAX nichmehr klappt...

      bisher gehtz das ich einen ort wähle und mir die clubs angezeigt werden, oder ich nen club wähle und mir der ort angezeigt wird... nur geht das nicht wenn ß, ä ö ü drin sind... -.-

      des weiteren... wenn ich nen club wähle und mir den ort zeigen lasse sollen mir trotzdem ALLE orte zur auswahl stehen und eben nur der richtige ort soll selected sein... eigentlich einfach sollte man meinen.. -.-

      Comment

      Working...
      X