Visualizzazione dei risultati da 1 a 7 su 7

Discussione: caricamento combobox

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    11

    caricamento combobox

    Ciao a tutti,
    ho una pagina con 2 combobox1 e combobox2, nella combobox1 ho dei nomi di oggetti e nella combobox2 gli attributi di questi oggetti, vorrei che in base all'oggetto che seleziono nella combobox1 mi carichi gli attributi di quell'oggetto nella combobox1. Ad esempio se nella combobox1 seleziono persona dovrebbero apparirmi nella combobox2 nome, cognome ed età, se invece nella combobox1 seleziono auto, nella combobox2 dovrebbero apparirmi targa, anno, km.

    Immagino si deva usare ajax per fare questa cosa, ma non sono molto esperto, potreste darmi delle dritte.

  2. #2
    cerca qualcosa tipo "php select concatenate" su google o nel forum, se n'è parlato fino alla nausea di questo argomento...cmq se vuoi fare il tutto senza ricaricare la pagina, usi ajax, altrimenti all'onchange della prima combo box ricarichi la pagina passandoti il valore selezionato in get e in base a quel valore popoli col php la seconda select...
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    11
    Ciao,
    ho letto le vostre risposte, ma il problema è che le combobox sono caricate con dei dati che prendo da un database quindi non so se un semplice javascript possa anadre bene.

  5. #5
    Ciao,

    il javascript o ajax ti serve per dare il comportamento alle combo, cioè cambiare la combo2 in base alla scelta che viene fatta sulla combo1.

    Chiaramente le due combo le devi popolare con i dati che recuperi dal db usando un po' di codice PHP.

    Altrimenti se non vuoi usare script ajax e non ti interessa se la pagina viene ricaricata, come aveva consigliato giustamente Santino83_02 all'evento onchange della combo1 lanci una POST o una GET, ricarichi la pagina e popoli la seconda combo facendo una query in relazione al dato appena passato.

    Ciao

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    11
    ciao,
    sto provando la soluzione ajax: questo è il codice della finestra principale con il form

    codice:
    <?php include("../connection.php"); ?>
    
    <?php
    
    //query for the filter form (tabel  resource)
    $query = "SELECT name FROM resource";
    
    
    //execute query
    $result = mysql_query($query, $con);
    if (!$result) {
        die('Invalid query: ' . mysql_error());
    }
    
    ?>
    
    <html>
        <head>
            <title>User Editor (EACS)</title>
    		<link rel=stylesheet href="../style.css" type="text/css">
    		<script type="text/javascript"> 
    
    			var http = createRequestObject(); 
    			var where = (navigator.appName == "Microsoft Internet Explorer") ? -1 : null; 
    
    			function createRequestObject() { 
    				var ro; 
    				var browser = navigator.appName; 
    				if(browser == "Microsoft Internet Explorer"){ 
    					ro = new ActiveXObject("Microsoft.XMLHTTP"); 
    				}else{ 
    					ro = new XMLHttpRequest(); 
    				} 
    			return ro; 
    			}
    
    			function addElement(ogg,val,text){ 
    				var newOption; 
    				newOption = document.createElement("option"); 
    				newOption.value = val; 
    				newOption.text = text; 
    				ogg.add(newOption, where);     
    			} 
    
    			function removeElement(ogg){ 
    				if(ogg.options.length > 0){ 
    					while (ogg.options.length) { 
    						ogg.remove(0); 
    					}	     
    				} 
    			} 
    
    			function disabledElement(ogg,val){ 
    				document.getElementById(ogg).disabled = val; 
    			} 
    
    			function loadingAttributes(oggId){ 
    				var res = document.getElementById(oggId).value; 
    				//alert('getAttributes.php?res=' + res);
    				http.open('GET','getAttributes.php?res=' + res, true); 
    				http.onreadystatechange = getAttributes; 
    				http.send(null);   
    			} 
    
    			function getAttributes(){ 
    				var Attribute = document.getElementById('filter2'); 
    				removeElement(Attribute); 
    				id = document.getElementById('filter1').value; 
    				if(id == 'filter1'){ 
    					disabledElement('filter2',true); 
    					addElement(Attribute,'sel','Select a resource before:'); 
    				}else{ 
    					if(http.readyAttribute == 4){ 
    						if (http.status == 200) { 
    							var response = http.responseText; 
    							if(response == ''){ 
    								disabledElement('filter2',true); 
    								addElement(Attribute,'sel','No Attributes'); 
    							}else{ 
    								removeElement(Attribute); 
    								coppia = response.split(','); 
    								max = coppia.length; 
    								addElement(Attribute,'sel','Select a resource:'); 
    								for(x=0;x<max;x++){ 
    									val = coppia[x]; 
    									addElement(Attribute,val,val); 
    								}	 
    								disabledElement('filter2',false); 
    							} 
    						} 
    					}else{ 
    						addElement(Attribute,'sel','Loading...'); 
    					} 
    				} 
    			} 
    </script>
        <body>
    		<div id="form">
    			<form id="form1" name="form1" method="post" action="">
    				<select name="filter1" id="filter1" onchange="loadingAttributes('filter1');">
    					<option value="">---</option>
    					<?php while ($row = mysql_fetch_assoc($result)) {?> 
    						<option value="<?php echo $row['name'];?>"><?php echo $row['name'];?></option>
    					<?php } ?>
    				</select>
    				.
    				<select name="filter2" id="filter2">
    					<option value="">---</option>
    				</select>
    			</form>
    		</div>
        </body>
    </html>
    Mentre la pagina php che interroga il db e mi ritorna gli attributi e la seguente:
    Codice PHP:

    getAttributes.php

    <? include("../connection.php");


    //load resource name
    $resource $_REQUEST['res']; 
      
      
      
    //query for the filter form (tabel  resource)
    $query "SELECT attributes FROM resource WHERE name ='$resource'";


    //execute query
    $result mysql_query($query$con);
    if (!
    $result) {
        die(
    'Invalid query: ' mysql_error());
    }

    $attributes="";

    while (
    $row mysql_fetch_assoc($result)) {
        
    $attributes $row['attributes'];
    }

    echo 
    $attributes;  

    ?>
    Il problema è che http.readyAttribute mi ritorna "undefined", cosa può essere?

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    11
    ok, risolto un errore dovuto a un'operazione di sostituizione in cui avevo rinominato readyState con readyAttribute.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.