Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Richiesta aiuto Php Ajax

    Salve a tutti, premetto che sono programmatore php e mi sto affacciando per la prima volta ad Ajax, avrei bisogno di creare due select, categoria e sotto categoria, a seconda della categoria scelta, la seconda select mi restituisce le sub cat ad essa appartenenti, ma purtroppo non riesco, ormai è una settimana che ci combatto ma nulla, sono arrivato ad un punto che a volte lo guardo e nn so neanche cosa sto scrivendo !!! Vabbhè, ecco il codice, è un codice prelevato da questo sito e riadattato il qualche modo ovviamente sbagliato :

    codice:
    echo'
    				<select name="cat" size="1" onChange="redirect(this.options[this.selectedIndex].value)">
    					<option value="0">Seleziona una categoria</option>';
    			$subcat=array();
    			$subnum='-1';
    			$catnum=array();
    			$countcat='0';
    			$result = mysql_query("select * from cat ORDER BY nome ASC");
    				while($riga = mysql_fetch_array($result))
    					{ 
    					 	$cid = $riga['cid'];
    					 	$cat = $riga['nome'];
    					 	$countcat++;
    					 	$catnum[$cat]=$countcat;
    					 	$catnumarr = $catnum[$cat];
    					 	
    						echo'<option value="'.$countcat.'">'.$cat.'</option>';	
    							 
    						$result1 = mysql_query("select * from sub_cat WHERE cid='$cid' ORDER BY nome ASC");
    							while($riga1 = mysql_fetch_array($result1))
    								{ 
    								 	$cid1 = $riga1['cid'];
    								 	$sub_cat = $riga1['nome'];
    								 	$subnum++;
    								 	$subcat[$subnum]=$sub_cat;
    								 	$resultn = mysql_query("select count(*) as num from sub_cat WHERE cid='$cid'");
    										while($rigan = mysql_fetch_array($resultn))
    											{ 
    											 	$num = $rigan['num'];
    											 }
    								 }
    					 }
    					
    			
    					
    echo'			</select>
    				
    				<select name="sub_cat" size="1">
    				<option value="null">Seleziona una categoria</option>
    				</select>
    				
    				<script type="text/javascript" language="JavaScript">
    				<!--
    				
    				var groups=document.doublecombo.cat.options.length
    				var group=new Array(groups)
    				for (i=0; i<groups; i++)
    				group[i]=new Array()
    				
    				group[0][0]=new Option("Seleziona una categoria", "0");';
    				
    				$nam='-1';
    				for($n=0;$n<$num;$n++){
    				 	$nam++;
    				 	echo'group['.$catnumarr.']['.$n.']=new Option("'.$subcat[$nam].'", "'.$nam.'");';
    				}
    echo'			var temp=document.doublecombo.sub_cat
    				
    				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>';
    premetto che il form si chiama doublecombo.

    Grazie anticipatamente

  2. #2

  3. #3
    Ragazzi, nessuno sa aiutarmi?

  4. #4

    Re: Richiesta aiuto Php Ajax

    Codice PHP:

    echo "
    <select name=\"cat\" size=\"1\" onChange=\"redirect(this.options[this.selectedIndex].value)\">
        <option value=\"0\">Seleziona una categoria</option>"
    ;
        
    $subcat=array();
        
    $subnum='-1';
        
    $catnum=array();
        
    $countcat='0';
        
    $result mysql_query("select * from cat ORDER BY nome ASC");
        while(
    $riga mysql_fetch_array($result))
        { 
            
    $cid $riga['cid'];
            
    $cat $riga['nome'];
            
    $countcat++;
            
    $catnum[$cat]=$countcat;
            
    $catnumarr $catnum[$cat];
                             
            echo 
    "<option value=\"$countcat\">$cat</option>";    
                                 
            
    $result1 mysql_query("select * from sub_cat WHERE cid='$cid' ORDER BY nome ASC");
            while(
    $riga1 mysql_fetch_array($result1))
            { 
                
    $cid1 $riga1['cid'];
                
    $sub_cat $riga1['nome'];
                
    $subnum++;
                
    $subcat[$subnum]=$sub_cat;
                
    $resultn mysql_query("select count(*) as num from sub_cat WHERE cid='$cid'");
                while(
    $rigan mysql_fetch_array($resultn))
                { 
                    
    $num $rigan['num'];
                 }
             }
         }
                        
                
                        
    echo 
    "
    </select>
                    
                    <select name=\"sub_cat\" size=\"1\">
                    <option value=\"null\">Seleziona una categoria</option>
                    </select>
                    
                    <script type=\"text/javascript\" language=\"JavaScript\">
                    <!--
                    
                    var groups=document.doublecombo.cat.options.length
                    var group=new Array(groups)
                    for (i=0; i<groups; i++)
                    group[i]=new Array()
                    
                    group[0][0]=new Option(\"Seleziona una categoria\", \"0\");"
    ;
                    
                    
    $nam = -1;
                    for(
    $n=0;$n<$num;$n++){
                         
    $nam++;
                         echo 
    "group['$catnumarr']['$n']=new Option('{$subcat[$nam]}', '$nam');";
                    }
    echo
    "
    var temp=document.doublecombo.sub_cat
                    
    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>"

    Così magari si legge meglio.

  5. #5
    molto gentile, ora speriamo qualcuno mi possa aiutare

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    16
    invece io ho un problema simile...sono riuscito a fare il tutto solo che mi esegue tutto lo script. Io volevo fare il refresh in modo da eseguire e impostare le categorie...qualcuno sa farlo? devo impsotare un categoria e le sue sottocategorie....in questo caso è:

    Facoltda di....---->Corso di laurea in.....---->Materia

    ecco il mio script ma non riesco a farlo funzionare correttamente:

    http://www.unime.eu/codice2.txt

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    4
    ho lo stesso problema
    non riesco a creare gli array dal db mysql
    lascio qui un esempio del mio codice e del db ma mi basterebbe un link ad una pagina abbastanza esplicativa di come si costruiscono questi array.
    Grazie...

    codice (si capira' che sono alle prime armi)

    codice:
    <FORM NAME="category_select" ACTION="whatever.php"  METHOD="GET">
    <?php
    
    	$alphabet = array("verdure","latte");
    	$mysql_username = "root";
    	$mysql_password = "stefano";
    	$db_name = "my_laste";
    
    ?>
          
    
    Select category:
    
          <SELECT NAME="category" SIZE="1" ONCHANGE="redirect(this.options.selectedIndex)" 
          CLASS="input" ONFOCUS="this.className='inputOn'" ONBLUR="this.className='inputOff'">
          <OPTION SELECTED="SELECTED"></OPTION>
    <?php
    
       while (list ($key, $value) = each ($alphabet))
       {
    
       $value = trim ($value);
    
       echo "      <OPTION VALUE=\"\">$value</OPTION>\n";
    
       }
    
    ?>
          </SELECT>
          <SELECT NAME="food" SIZE="1">
          <OPTION SELECTED="SELECTED" VALUE=""><--Seleziona prima la categoria</OPTION>
          </SELECT>
    
    <SCRIPT>
    
    var groups=document.category_select.category.options.length
    var group=new Array(groups)
    for (i=0; i<groups; i++)
    group[i]=new Array() 
    
    group[0][0]=new Option("<--ciao-->","")
    
    <?php
       reset ($alphabet);
    
       $db = mysql_connect("localhost", "root", "stefano") or die ("Couldn't connect to server");
       mysql_select_db ("$db_name",$db) or die ("Couldn't select database");
    
       while (list ($key, $value) = each ($alphabet)) {
    
         $value = trim ($value);
         echo $value;
         $ar1 = $key + "1";
         $lc_value = strtolower($value);
    
    
         $sql = "SELECT id, cibo FROM calorie WHERE categoria = '$value'";
         $result = @mysql_query($sql) or die ("Couldn't execute query");
         if (mysql_num_rows ($result) <= 0) {
           echo "group[$ar1][0]=new Option(\"No entries for this category\",\"\")\n";
         }
         else {
           echo "group[$ar1][0]=new Option(\"Now select food:\",\"\")\n";
    		$ar2 = 1;
             while ($row = mysql_fetch_array ($result)) {
    				echo "group[$ar1][$ar2]=new Option(\"$row[cibo]\",\"$row[id]\")\n";
              		$ar2++;
             }
         }
         echo "\n";
       }
    
    ?>
    var temp=document.category_select.food
    
    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
    }
    
    //-->
    </SCRIPT>
    <INPUT TYPE="SUBMIT" NAME="submit_person" VALUE="Submit" 
        </FORM>

    esempio del DB:

    INSERT INTO `calorie` (`id`, `cibo`, `categoria`, `calorie`) VALUES
    (2, 'broccoli', 'verdure', 27),
    (3, 'aglio', 'verdure', 88),
    (79, 'latte condensato', 'latte', 327),
    (80, 'latte di capra', 'latte', 72),
    (81, 'latte di pecora', 'latte', 103);

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.