αλληλοεξαρτώμενες λίστες επιλογών και onchange

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
dimisthes
Δημοσιεύσεις: 17
Εγγραφή: 20 Νοέμ 2006 13:36

αλληλοεξαρτώμενες λίστες επιλογών και onchange

Δημοσίευση από dimisthes » 29 Σεπ 2009 00:12

Γειά σας

έχω το παρακάτω κώδικα με δύο λίστες επιλογών, όπου οι επιλογές της μίας εξαρτώνται από το τι θα επιλεχθεί στη πρώτη

Κώδικας: Επιλογή όλων

<td width="20%"><span lang="el">Μάρκα</span></td>
<td width="19%">
			
<select  name="Make" style="width&#58; 120px; height&#58; 21" onchange="window.location=&#40;'PowerSearch.php?Make='+this.options&#91;this.selectedIndex&#93;.value&#41;">
			<option  selected=selected><?php if&#40;isset&#40;$_GET&#91;'Make'&#93;&#41;&#41;&#123;echo $_GET&#91;'Make'&#93;;&#125;else &#123;echo 'Όλες';&#125; ?>  </option>
			
			<?php
			 
			 $conn = mysql_connect&#40;"localhost", "root" &#41;;
				mysql_select_db&#40;"usedcarsdb",$conn&#41;;
              
              $sql="SELECT DISTINCT Make FROM vehicles order by Make ";
              $result = mysql_query&#40;$sql, $conn&#41; or die&#40;mysql_error&#40;&#41;&#41;;
           
              
              while &#40;$newArray= mysql_fetch_array&#40;$result&#41;&#41;&#123;
                $Make=$newArray&#91;'Make'&#93;;
                echo "<option value=\"$Make\">$Make</option>";
              &#125;
				   ?>
			</select></td>
    <td width="9%">&nbsp;</td>
    <td width="11%">&nbsp;</td>
    <td width="41%">&nbsp;</td>
  </tr>
  <tr>
    <td width="20%"><span lang="el">Μοντέλο</span></td>
    <td width="19%">
			
			<select name="Model" style="width&#58; 120px; height&#58; 21px">
			<option value='' selected=selected></option>
			<?php
			 		      
              $sql="SELECT DISTINCT Model FROM vehicles where Make='$_GET&#91;Make&#93;' order by Model ";
              $result = mysql_query&#40;$sql, $conn&#41; or die&#40;mysql_error&#40;&#41;&#41;;
           
              
              while &#40;$newArray= mysql_fetch_array&#40;$result&#41;&#41;&#123;
                $Model=$newArray&#91;'Model'&#93;;
                echo "<option value=\"$Model\">$Model</option>";
              &#125;
			
			?>
			</select></td>
Δουλεύει κανονικά, αυτό που θέλω να κανω είναι να φορτώνει τα μοντέλα σε κάθε onchange της μάρκας χωρίς να μεταφορτώνει τη σελίδα όπως κάνει ο παραπάνω κώδικας.

Πως μπορεί να γίνει αυτό ?

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6236
Εγγραφή: 30 Νοέμ 2004 03:09

αλληλοεξαρτώμενες λίστες επιλογών και onchange

Δημοσίευση από fafos » 29 Σεπ 2009 00:37

AJAX.. ta kanei aorata... des to parakato kai "paikse":


h forma sou:

Κώδικας: Επιλογή όλων

Επιλέξτε Κύρια Κατηγορία&#58;<br>
<?	     echo "<form name=sel>\n";
     echo "<font id=province><select>\n";
     echo "<option value=''>============</option> \n" ;
     echo "</select></font>\n";  
	 ?> 
	  
<br><br>	  
Επιλέξτε Υποκατηγορία&#58;<br>
  <?   echo "<font id=amper><select>\n";
     echo "<option value=''>==== Υποκατηγορία ====</option> \n" ;
     echo "</select></font>\n";
?>
<script language=Javascript>
function Inint_AJAX&#40;&#41; &#123;
   try &#123; return new ActiveXObject&#40;"Msxml2.XMLHTTP"&#41;;  &#125; catch&#40;e&#41; &#123;&#125; //IE
   try &#123; return new ActiveXObject&#40;"Microsoft.XMLHTTP"&#41;; &#125; catch&#40;e&#41; &#123;&#125; //IE
   try &#123; return new XMLHttpRequest&#40;&#41;;          &#125; catch&#40;e&#41; &#123;&#125; //Native Javascript
   alert&#40;"XMLHttpRequest not supported"&#41;;
   return null;
&#125;;

function dochange&#40;src, val&#41; &#123;
     var req = Inint_AJAX&#40;&#41;;
     req.onreadystatechange = function &#40;&#41; &#123; 
          if &#40;req.readyState==4&#41; &#123;
               if &#40;req.status==200&#41; &#123;
                    document.getElementById&#40;src&#41;.innerHTML=req.responseText; 
               &#125; 
          &#125;
     &#125;;
     req.open&#40;"GET", "cats.php?data="+src+"&val="+val&#41;; 
     req.setRequestHeader&#40;"Content-Type", "application/x-www-form-urlencoded;charset=UTF-8"&#41;; 
     req.send&#40;null&#41;; 
&#125;

window.onLoad=dochange&#40;'cat', -1&#41;;     
</script>			



ta queries (cats.php):

Κώδικας: Επιλογή όλων

<?php

     header &#40;"Expires&#58; Mon, 26 Jul 1997 05&#58;00&#58;00 GMT"&#41;;
     header &#40;"Last-Modified&#58; " . gmdate&#40;"D, d M Y H&#58;i&#58;s"&#41; . " GMT"&#41;;
     header &#40;"Cache-Control&#58; no-cache, must-revalidate"&#41;;
     header &#40;"Pragma&#58; no-cache"&#41;;
     
     header&#40;"content-type&#58; application/x-javascript; charset=UTF-8"&#41;;
     
     $data=$_GET&#91;'data'&#93;;
     $val=$_GET&#91;'val'&#93;;
  


mysql_pconnect&#40;$dbhost,$dbuser,$dbpass&#41; or die &#40;"Unable to connect to MySQL server"&#41;;  
     mysql_real_escape_string&#40;$data&#41;;
mysql_real_escape_string&#40;$val&#41;;
     if &#40;$data=='cat'&#41; &#123; 
          echo "<select name='cat' onChange=\"dochange&#40;'cat_b', this.value&#41;\" style=\"font-size &#58; 11px;\">\n";
          echo "<option value=''>Κύρια Κατηγορία</option>\n";
          $result=mysql_db_query&#40;$dbname,"select id,name from categories order by BINARY name ASC"&#41;;
          while&#40;list&#40;$id, $name&#41;=mysql_fetch_array&#40;$result&#41;&#41;&#123;
               echo "<option value=\"$id\" >$name</option> \n" ;
          &#125;
     &#125; else if &#40;$data=='cat_b'&#41; &#123;
          echo "<select name='cat_b'  style=\"font-size &#58; 11px;\">\n";
          echo "<option value=''>Υποκατηγορία</option>\n";
          $val2=$val;
          $val = substr&#40;$val,0,2&#41;;                                 
          $result=mysql_db_query&#40;$dbname,"SELECT id,name  FROM categories_b WHERE cat_id= '$val'   ORDER BY BINARY name ASC "&#41;;
          while&#40;list&#40;$id, $name&#41;=mysql_fetch_array&#40;$result&#41;&#41;&#123;       
               echo "<option value=\"$id\" >$name</option> \n" ;
          &#125;
     &#125; 
     echo "</select>\n";  
?>
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης