繁体   English   中英

使用php mysql和内部联接复制结果

[英]Duplication in results using php mysql and inner join

我有三个下拉列表,其中包含从3个不同表中从数据库中检索到的值

省:

  • Governorosrate_id
  • Governorate_name

区:

  • district_id
  • 区名

村:

  • ID
  • village_name

Memebrs:

  • 用户身份
  • 用户名
  • 当用户选择三个或全部一个下拉列表中的一个时,我要的是系统必须显示与所选之一相关的结果

但是问题是,当用户从省选择时,它工作正常,但是当选择省和地区时,它会复制与所选值相关的结果;如果用户选择省和地区,结果将变成三倍

任何人都可以帮助我吗?

我将显示三种类型的所有代码

如果有人抱怨,那就不要打败我

码:

由省

//**********search by locationn***************************************//
if(isset($_POST['listbyq']))
{    
//********************by governorate**************************************//
   if($_POST['listbyq']=="by_gov")
   {
       $bygov = $_POST['governorate'];
       $sql = mysql_query("SELECT user_id,first_name, last_name, birth_date, registered_date, 
    s.specialization_name,
    g.governorate_name,
    d.district_name,
    v.village_name 
          FROM members u
                       INNER JOIN  specialization s 
                        ON u.specialization = s.specialization_id
                        INNER JOIN governorate g
                        ON u.governorate = g.governorate_id
                        INNER JOIN districts d
                        ON u.district = d.district_id
                        INNER JOIN village v
                        ON u.village = v.id
                        WHERE governorate = '$bygov'")or die(mysql_error("Error: querying the governorate"));

       $num_row = mysql_num_rows($sql);
       if($num_row > 0 )
       {
           while($row = mysql_fetch_array($sql))
           {
              $row_id = $row['user_id'];
              $row_first_name =  $row['first_name'];
              $row_last_name =  $row['last_name'];
              $row_birthdate =  $row['birth_date'];
              $row_registered_date = $row['registered_date'];
              $row_spec = $row['specialization_name'];
              $row_gov = $row['governorate_name'];
              $row_dist = $row['district_name'];
              $row_village = $row['village_name'];

                ////***********for the upload image*************************//
         $check_pic="members/$row_id/image01.jpg";
         $default_pic="members/0/image01.jpg";
         if(file_exists($check_pic))
         {
             $user_pic="<img src=\"$check_pic\"width=\"120px\"/>";
         }
         else
         {
             $user_pic="<img src=\"$default_pic\"width=\"120px\"/>";
         }

          $outputlist.='
     <table width="100%">
                 <tr>
                    <td width="23%" rowspan="5"><div style="height:120px;overflow:hidden;"><a href =              "http://localhost/newadamKhoury/profile.php?user_id='.$row_id.'" target="_blank">'.$user_pic.'</a></div></td>
                    <td width="14%"><div  align="right">Name:</div></td>
                    <td width="63%"><a href = "http://localhost/newadamKhoury/profile.php?user_id='.$row_id.'" target="_blank">'.$row_first_name.' '.$row_last_name.'</a></td>
                    </tr>

                    <tr>
                      <td><div align="right">Birth date:</div></td>
                      <td>'.$row_birthdate.'</td>
                    </tr>
                    <tr>
                     <td><div align="right">Registered:</div></td>
                     <td>'.$row_registered_date.'</td>
                    </tr>

                    <tr>
                     <td><div align="right">Job:</div></td>
                     <td>'.$row_spec.'</td>
                    </tr>

                    <tr>
                     <td><div align="right">Location:</div></td>
                     <td>'.$row_gov.'__'.$row_dist.'__'.$row_village.'</td>
                    </tr>
                    </table>
                    <hr />
            ';

           }
       }

   }
   else
   {
       $errorMSG = "No member within this selected governorate";
   }

按地区

 if($_POST['listbyqa']=="by_dist")
   {
      @ $bydist = $_POST['district'];
       $sql = mysql_query("SELECT user_id,first_name, last_name, birth_date, registered_date, 
    s.specialization_name,
    g.governorate_name,
    d.district_name,
    v.village_name 
          FROM members u
                       INNER JOIN  specialization s 
                        ON u.specialization = s.specialization_id
                        INNER JOIN governorate g
                        ON u.governorate = g.governorate_id
                        INNER JOIN districts d
                        ON u.district = d.district_id
                        INNER JOIN village v
                        ON u.village = v.id
                       WHERE district = '$bydist'")or die(mysql_error("Error: querying the district"));

       $num_row = mysql_num_rows($sql);
       if($num_row > 0 )
       {
           while($row = mysql_fetch_array($sql))
           {
              $row_id = $row['user_id'];
              $row_first_name =  $row['first_name'];
              $row_last_name =  $row['last_name'];
              $row_birthdate =  $row['birth_date'];
              $row_registered_date = $row['registered_date'];
              $row_spec = $row['specialization_name'];
              $row_gov = $row['governorate_name'];
              $row_dist = $row['district_name'];
              $row_village = $row['village_name'];

                ////***********for the upload image*************************//
         $check_pic="members/$row_id/image01.jpg";
         $default_pic="members/0/image01.jpg";
         if(file_exists($check_pic))
         {
             $user_pic="<img src=\"$check_pic\"width=\"120px\"/>";
         }
         else
         {
             $user_pic="<img src=\"$default_pic\"width=\"120px\"/>";
         }

          $outputlist.='
     <table width="100%">
                 <tr>
                    <td width="23%" rowspan="5"><div style="height:120px;overflow:hidden;"><a href =              "http://localhost/newadamKhoury/profile.php?user_id='.$row_id.'" target="_blank">'.$user_pic.'</a></div></td>
                    <td width="14%"><div  align="right">Name:</div></td>
                    <td width="63%"><a href = "http://localhost/newadamKhoury/profile.php?user_id='.$row_id.'" target="_blank">'.$row_first_name.' '.$row_last_name.'</a></td>
                    </tr>

                    <tr>
                      <td><div align="right">Birth date:</div></td>
                      <td>'.$row_birthdate.'</td>
                    </tr>
                    <tr>
                     <td><div align="right">Registered:</div></td>
                     <td>'.$row_registered_date.'</td>
                    </tr>

                    <tr>
                     <td><div align="right">Job:</div></td>
                     <td>'.$row_spec.'</td>
                    </tr>

                    <tr>
                     <td><div align="right">Location:</div></td>
                     <td>'.$row_gov.'__'.$row_dist.'__'.$row_village.'</td>
                    </tr>
                    </table>
                    <hr />
            ';

           }
       }

   }
   else
   {
       $errorMSG = "No member within this selected District";
   } 

按村庄

if($_POST['listbyqb']=="by_city")
   {
       echo $_POST['listbyqb'];
      @ $byvillage = $_POST['village'];
       $sql = mysql_query("SELECT user_id,first_name, last_name, birth_date, registered_date, 
    s.specialization_name,
    g.governorate_name,
    d.district_name,
    v.village_name 
          FROM members u
                       INNER JOIN  specialization s 
                        ON u.specialization = s.specialization_id
                        INNER JOIN governorate g
                        ON u.governorate = g.governorate_id
                        INNER JOIN districts d
                        ON u.district = d.district_id
                        INNER JOIN village v
                        ON u.village = v.id
                       WHERE village = '$byvillage'")or die(mysql_error("Error: querying the district"));

       $num_row = mysql_num_rows($sql);
       if($num_row > 0 )
       {
           while($row = mysql_fetch_array($sql))
           {
              $row_id = $row['user_id'];
              $row_first_name =  $row['first_name'];
              $row_last_name =  $row['last_name'];
              $row_birthdate =  $row['birth_date'];
              $row_registered_date = $row['registered_date'];
              $row_spec = $row['specialization_name'];
              $row_gov = $row['governorate_name'];
              $row_dist = $row['district_name'];
              $row_village = $row['village_name'];

                ////***********for the upload image*************************//
         $check_pic="members/$row_id/image01.jpg";
         $default_pic="members/0/image01.jpg";
         if(file_exists($check_pic))
         {
             $user_pic="<img src=\"$check_pic\"width=\"120px\"/>";
         }
         else
         {
             $user_pic="<img src=\"$default_pic\"width=\"120px\"/>";
         }

          $outputlist.='
     <table width="100%">
                 <tr>
                    <td width="23%" rowspan="5"><div style="height:120px;overflow:hidden;"><a href =              "http://localhost/newadamKhoury/profile.php?user_id='.$row_id.'" target="_blank">'.$user_pic.'</a></div></td>
                    <td width="14%"><div  align="right">Name:</div></td>
                    <td width="63%"><a href = "http://localhost/newadamKhoury/profile.php?user_id='.$row_id.'" target="_blank">'.$row_first_name.' '.$row_last_name.'</a></td>
                    </tr>

                    <tr>
                      <td><div align="right">Birth date:</div></td>
                      <td>'.$row_birthdate.'</td>
                    </tr>
                    <tr>
                     <td><div align="right">Registered:</div></td>
                     <td>'.$row_registered_date.'</td>
                    </tr>

                    <tr>
                     <td><div align="right">Job:</div></td>
                     <td>'.$row_spec.'</td>
                    </tr>

                    <tr>
                     <td><div align="right">Location:</div></td>
                     <td>'.$row_gov.'__'.$row_dist.'__'.$row_village.'</td>
                    </tr>
                    </table>
                    <hr />
            ';

           }
       }

   }
   else
   {
       $errorMSG = "No member within this selected District";
   }
}

一些简单的事情值得尝试:

  1. echo或var_dump $ _POST结果,以确保您正在获取认为自己正在获取的数据。 这可能是造成问题的原因。 您可能会获得不止一个

  2. 杂乱的代码很可能是导致此问题的原因。 您具有三个输出部分,因此有三个可能的输出,当满足适当的IF条件时,可以触发所有这些输出。 尝试在每个块中回显“ Here”,“ There”和“ Everywhere”或您选择的单词-您很快就会看到可疑代码在哪里!

  3. 更好的选择可能是将where子句更改为:

     WHERE village='[villagename from post]' OR district='[districtname from post'] OR governorate='[govname from post]' 

这样,您只需要一个中频和一个输出。 它的伸缩性也更好。

  1. 尝试运行每个带有手动插入的测试数据的sql(PHP myAdmin对此非常方便),然后查看问题是否出在sql或php级别。

  2. @-尝试避免。 最好以不会产生错误的方式编写代码。 您是否将其放置在那里以获取空索引错误? 如果是这样,这可能是您的问题。 检查您的HTML并查看上面的答案1。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM