将php变量从选择器传递到搜索数据库

时间:2017-09-07 15:40:21

标签: php jquery sql

我正在为一个类的项目工作,而我在选择选择器时传递变量时遇到了麻烦。我正好传递$ inst变量,但是$ focus变量给了我这个:

  

未定义的索引:第20行的C:\ xampp \ htdocs \ phptest \ results.php中的chzn2。

fyi:我在数据库中允许null

以下是选择器的代码。

    $sql = "SELECT institutionName, instID FROM institutions";
    $dropq = mysqli_query($conn, $sql);
        echo "<select data-placeholder='Select an Institution' name='chzn1' class='chzn-select' standard='true' style='width:250px;'>";
    while ($row = mysqli_fetch_array($dropq)) {
        echo "<option></option><option value='" . $row['instID'] . "'>" . $row['institutionName'] . "</option>";
        }
        echo "</select>";

    $sql1 = "SELECT orgFocus FROM communityOrgs";
    $dropq = mysqli_query($conn, $sql1);

        echo "<select data-placeholder='Select Focus Area' name='chzn2' class='chzn-select' multiple='true' style='width:250px;'>";
            while ($row1 = mysqli_fetch_array($dropq)) {
        echo "<option></option>
                <option value='" . $row1['orgFocus'] . "'>" . $row1['orgFocus'] . "</option>";
        }
        echo "</select>";

以下是结果的代码

if (isset($_POST['submit-search'])) {
if(empty($_POST['chzn1']) && empty($_POST['chzn2'])){
    echo "Please enter at least one value!";
}
else if(!empty($_POST['chzn1']) || !empty($_POST['chzn2'])) {

// Grabbing variables from User Inputs
$inst = $_POST['chzn1'];
$focus = $_POST['chzn2'];


$query = "SELECT * FROM partnerships WHERE instID = '$inst' OR orgFocus = '$focus'";

$result = mysqli_query($conn, $query);
$queryResults = mysqli_num_rows($result);

    if($queryResults > 0) {
        while ($row = mysqli_fetch_array($result)) {
            echo "<div class='results-container'>
            <h3>".$row['instName']."</h3>
            <p>".$row['orgName']."</p>
            <p>".$row['orgFocus']."</p>
            </div>";
    ;}
}

2 个答案:

答案 0 :(得分:2)

如错误所示:

  

未定义索引:chzn2

根据你的逻辑,可以传递两个值中的一个,这样就可以解除一个值,从而抛出错误 - 就像它应该的那样。

您需要检查其中一个$_POST键是否分别存在并分别设置它们的值,无论是传递的还是null。

示例

<?php
$chzn1 = null;
$chzn2 = null;

if (!empty($_POST['chzn1']))
    $chzn1 = $_POST['chzn1'];

if (!empty($_POST['chzn2']))
    $chzn1 = $_POST['chzn2'];
?>

现在它们都有默认值,因此不会抛出错误。

注意:看到您正在使用mysqli_*时使用预准备语句。

更新#1

可能由于格式错误,但您还有一个浮动分号;

;}

答案 1 :(得分:0)

Selectoption未分开。当你回应单独使它结合起来时。

 $row = "<select data-placeholder='Select Focus Area' name='chzn2' class='chzn-select' multiple='true' style='width:250px;'>";
        while ($row1 = mysqli_fetch_array($dropq)) {
    $row .= "<option></option>
            <option value='" . $row1['orgFocus'] . "'>" . $row1['orgFocus'] . "</option>";
    }
    $row .= "</select>";
    echo $row;

其他选择标记

相同