代码之家  ›  专栏  ›  技术社区  ›  Tommaso Lazzari

将MySql下拉列表中的值传递给其他下拉列表,而不在Db php上发布

  •  0
  • Tommaso Lazzari  · 技术社区  · 7 年前

    我有三张表:联系人、公司和联系人公司。我希望当用户从下拉列表中选择特定公司时,在下面的下拉列表中,他只能看到之前选择的公司中的联系人。我曾尝试使用全局函数,但收效甚微。 如果可能的话,我希望避免发布第一个查询结果的结果。

    <p>Company <span>*</span></p>
      <span class="icon-case"><i class="fa fa-comments-o"></i></span>
      <select name="company">';
        echo '<option value=""></option>;'
    
            <?php
    
            $query="SELECT `name` FROM `companies` ORDER BY `name`ASC";
            $result=mysqli_query($connection,$query) or die ("Query to get data from sector table failed: ".mysql_error());
    
    global $company_id;
    
            while ($row=mysqli_fetch_array($result)) {
            $company_id=$row["company_id"];
    
    
            $company_name=$row["name"];
            echo "<option value=\"$company_id\">
             $company_name
             </option>";
            }
    
            ?>
    
        </select>
    
      </div>  
    
    
           <p>Contact in Company <span>*</span></p>
      <span class="icon-case"><i class="fa fa-comments-o"></i></span>
      <select name="contact">';
        echo '<option value=""></option>;'
    
            <?php
            global $company_id;
    
            $query="SELECT * FROM `contact_company` WHERE 
    
    `company_id=$company_id;";
    
            $result=mysqli_query($connection,$query) or die ("Query to get data from sector table failed: ".mysql_error());
    
            while ($row=mysqli_fetch_array($result)) {
            $company_id=$row["company_id"];
            $contact_id=$row["contact_id"];
            echo "<option value=\"$company_id\">
             $contact_id
             </option>";
            }
    
            ?>
    
        </select>
    
      </div>  
    

    有什么建议吗? 当做 托马索

    2 回复  |  直到 7 年前
        1
  •  1
  •   VIshal Jamwal    7 年前

    我想你错过了什么。下面是代码片段

    <?php 
    
    $connection = mysqli_connect(DB_HOST, DB_USER, DB_PASS,DATABASE); if (mysqli_connect_errno()) echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    
    echo '<p>Company <span>*</span></p>
      <span class="icon-case"><i class="fa fa-comments-o"></i></span>
      <select name="company" id="company">';
    
        echo '<option value="">Please select</option>';
    
          $query="SELECT name,company_id FROM `companies` ORDER BY `name`ASC";
                    $result=mysqli_query($connection,$query) or die ("Query to get data from sector table failed: ".mysql_error());
    
    
    
            while ($row=mysqli_fetch_array($result)) {
            $company_id=$row["company_id"];
    
    
            $company_name=$row["name"];
            echo "<option value=".$company_id.">".$company_name."   </option>";
            }
    
    
    
        echo '</select>
    
      </div>  
    
      <p>Contact in Company <span>*</span></p>
      <span class="icon-case"><i class="fa fa-comments-o"></i></span>
      <select name="contact" id="contact">';
        <option value=""> Please select</option>
        </select>';
    
    ?>
    
    <script   src="https://code.jquery.com/jquery-3.3.1.min.js"   integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="    crossorigin="anonymous"></script>
    <script>
    $(document).ready(function(){
        $('#company').on('change',function(){
            var companyid = $(this).val();
            alert('hello');
            if(companyid){
                $.ajax({
                    type:'POST',
                    url:'ajaxData.php',
                    data:'id='+companyid,
                    success:function(html){
                        $('#contact').append(html);
    
                    }
                }); 
            }
        });
    });
    
    </script>
    

    Ajaxdata。php

    <?php /* Connect to MySQL and select the database. */ 
    $connection = mysqli_connect('localhost', 'root', '','demo'); if (mysqli_connect_errno()) echo "Failed to connect to MySQL: " . mysqli_connect_error();
    ?>
    <?php 
    $company_id=$_POST['id'];
    echo $query="SELECT * FROM `contact` WHERE company_id='".$company_id."'";
    
     $result=mysqli_query($connection,$query) or die ("Query to get data from sector table failed: ".mysqli_connect_error());
    
     while ($row=mysqli_fetch_array($result)) {
            $company_id=$row["company_id"];
            $contact_id=$row["contact_id"];
            echo "<option value=\"$company_id\"> $contact_id</option>";
            }
    
        2
  •  1
  •   VIshal Jamwal    7 年前

    我建议使用ajax来获得所需的联系人。下面是可能有用的代码片段

    $(document).ready(function(){
        $('#company').on('change',function(){
            var companyid = $(this).val();
            if(companyid){
                $.ajax({
                    type:'POST',
                    url:'ajaxData.php',
                    data:'id='+companyid,
                    success:function(html){
                        $('#conatct').html(html);
    
                    }
                }); 
            }
        });
    });
    

    公司变动时,我们可以打ajax电话。下面是Ajax的参数

    1. 类型:应为POST或GET
    2. Url:将根据seelct公司从数据中提取php文件
    3. 数据:所选公司
    4. 成功:在何处显示提取的数据。

    因为公司是以post格式在php文件中提供的 $公司\u id=$\u职位['id']; 基于此,我们可以从数据库中提取数据。