2013-01-15 64 views
0

我对使用php/mysql编码非常陌生,并且显示链接到sql数据库的结果时遇到了一些小问题。如何使用php/mysql显示/过滤搜索结果

目前人们使用下面的代码进行搜索 - 工作正常 - 这是一个下拉选择框,但您只能选择一个选项。我希望它是这样的项目是复选框,你可以选择多个项目。

我已经在下面列出了人们向数据库输入数据时使用的代码 - 这是复选框 - 我尝试用这个代替'drop down select code',但它不起作用。

是否有人知道我必须使用什么代码来替换“下拉选择代码”,以便复选框可以查看,并且可以过滤多个项目 - 我还包括“结果页面代码”,它显示结果,我在想'ClientStage'需要添加到'复选框代码'的地方。

对不起,我缺乏这方面的知识,并会感谢一些帮助?


下拉菜单中选择CODE


<select name="ClientStage" id="ClientStage"> 
      <option value=""></option> 
      <?php 
     include 'Easyspace.php'; 
     $sql = 'SELECT * FROM `clienttype`;'; 
     $rs = mysql_query($sql, $conn) or die ("error with sql query ".$sql); 

     while ($row = mysql_fetch_array ($rs)){ 
      $ClienttypeID = $row["ClienttypeID"]; 
      $Clienttype = $row["Clienttype"]; 

      echo '<option value="' .$ClienttypeID. '">' .$Clienttype. '</option>'; 
     } 
     ?> 
      </select></span> 

复选框CODE


<table width="100%" border="0" cellspacing="1"> 
    <?php 
    $side=1; 
    $sql = 'SELECT * FROM `clienttype`;'; 
    $rs = mysql_query($sql, $conn) or die ("error with sql query ".$sql); 

    while ($row = mysql_fetch_array ($rs)){ 
     $ClienttypeID = $row["ClienttypeID"]; 
     $Clienttype = $row["Clienttype"]; 

     if ($side == 1){ 
      $side = 2; 
      echo '<tr>'; 
      echo '<td><span class="RPATtext"><input type="checkbox" name="Clients[]" value="' .$ClienttypeID. '"> ' .$Clienttype. '</div></td>'; 

     } else { 
      $side = 1; 
      echo '<td><span class="RPATtext"><input type="checkbox" name="Clients[]" value="' .$ClienttypeID. '"> ' .$Clienttype. '</div></td>'; 
      echo '<option value="' .$ClienttypeID. '">' .$Clienttype. '</option>'; 
     } 

    } 
    ?> 
    </table> 

结果页面代码


<?php 

    $Country = $_POST['Country']; 
    $County = $_POST['County']; 
    $ClientStage = $_POST['ClientStage']; 
    $HealthIssues = $_POST['HealthIssues']; 

    include 'Easyspace.php'; 
    $sql = "SELECT * FROM `therapists` WHERE "; 

    if ($Country){ 
     $sql .= "`Country` = '$Country'"; 
    } 

    if ($County){ 
     if ($Country){ 
      $sql .= ' AND ';  
     } 
     $sql .= "`County` = '$County'"; 
    } 

    if ($ClientStage){ 
     if ($Country or $County){ 
      $sql .= ' AND ';  
     } 
     $sql .= "FIND_IN_SET('$ClientStage', Client_typeID)"; 
    } 

    if ($HealthIssues){ 
     if ($Country or $County or $ClientStage){ 
      $sql .= ' AND ';  
     } 
     $sql .= "FIND_IN_SET('$HealthIssues', IssuesID)"; 
    } 
    // echo $sql; 

    $rs = mysql_query($sql, $conn) or die ("error with sql query ".$sql); 

    while ($row = mysql_fetch_array ($rs)){ 
     $TherapistID = $row['TherapistID']; 
     $Title = $row['Title']; 
     $FirstName = $row['First Name']; 
     $LastName = $row['Last Name']; 
     $PostCode = $row['PostCode']; 

     echo '<tr>'; 
     echo '<td valign="middle" bgcolor="#D9E5C3" class="bodycopy">' .$Title. '</td>'; 
     echo '<td valign="middle" bgcolor="#D9E5C3" class="bodycopy">' .$FirstName. '</td>'; 
     echo '<td valign="middle" bgcolor="#D9E5C3" class="bodycopy">' .$LastName. '</td>'; 
     echo '<td valign="middle" bgcolor="#D9E5C3" class="bodycopy">' .$PostCode. '</td>'; 
     echo '<td height="34" valign="middle" bgcolor="#D9E5C3"><p class="bodycopy"><a href="Therapist.php?ID=' .$TherapistID. '">View more details</a></p></td>'; 
     echo '</tr>'; 

    } 

    ?> 
+1

[**请不要在新代码中使用'mysql_ *'函数**](http://bit.ly/phpmsql)。他们不再被维护[并被正式弃用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**红框**](http://j.mp/Te9zIL)?学习[*准备的语句*](http://j.mp/T9hLWi),并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [这篇文章](http://j.mp/QEx8IB)将帮助你决定哪个。如果你选择PDO,[这里是一个很好的教程](http://j.mp/PoWehJ)。 – Kermit

+0

看看[这里](http://ivaynberg.github.com/select2/) –

回答

0

这是你的新的结果代码。我希望这就是你要找的。注意你的代码:试着将小写字母放在小写字母中($ Country必须是$ country,尝试为MySQL使用PDO等)。

<?php 

$Country = $_POST['Country']; 
$County = $_POST['County']; 
/* change here */ 
$ClientStage = $_POST['Clients']; 
$HealthIssues = $_POST['HealthIssues']; 

include 'Easyspace.php'; 
$sql = "SELECT * FROM `therapists` WHERE "; 

if ($Country){ 
    $sql .= "`Country` = '$Country'"; 
} 

if ($County){ 
    if ($Country){ 
     $sql .= ' AND ';  
    } 
    $sql .= "`County` = '$County'"; 
} 

if ($ClientStage){ 
    if ($Country or $County){ 
     $sql .= ' AND ';  
    } 
    /* change here */ 
    $sql .= 'Client_typeID IN ('; 
    foreach($ClientStage as $i => $id) { 
     if ($i !== 0) 
      $sql .= ','; 
     $sql .= "'" . $id . '"'; 
    } 
    $sql .= ')'; 
} 

if ($HealthIssues){ 
    if ($Country or $County or $ClientStage){ 
     $sql .= ' AND ';  
    } 
    $sql .= "FIND_IN_SET('$HealthIssues', IssuesID)"; 
} 
// echo $sql; 

$rs = mysql_query($sql, $conn) or die ("error with sql query ".$sql); 

while ($row = mysql_fetch_array ($rs)){ 
    $TherapistID = $row['TherapistID']; 
    $Title = $row['Title']; 
    $FirstName = $row['First Name']; 
    $LastName = $row['Last Name']; 
    $PostCode = $row['PostCode']; 

    echo '<tr>'; 
    echo '<td valign="middle" bgcolor="#D9E5C3" class="bodycopy">' .$Title. '</td>'; 
    echo '<td valign="middle" bgcolor="#D9E5C3" class="bodycopy">' .$FirstName. '</td>'; 
    echo '<td valign="middle" bgcolor="#D9E5C3" class="bodycopy">' .$LastName. '</td>'; 
    echo '<td valign="middle" bgcolor="#D9E5C3" class="bodycopy">' .$PostCode. '</td>'; 
    echo '<td height="34" valign="middle" bgcolor="#D9E5C3"><p class="bodycopy"><a href="Therapist.php?ID=' .$TherapistID. '">View more details</a></p></td>'; 
    echo '</tr>'; 

} 

?> 
+0

感谢上面的代码路易十四...不幸的是,它没有工作。 – user1635710

+0

尝试删除$ sql。=“'”。 $ id。 ''';并用$ sql。= $ id替换它;如果它不起作用,请放一个$ _POST的var_dump请回显你的SQL查询。 –