Как проверить значение 1st $ _GET и напечатать или проверить 2nd и распечатать, если значение отличается? - PullRequest
0 голосов
/ 11 мая 2018

Чтобы уточнить заголовок, вот мой код. Это не работает - я уверен, что это неправильно. Но я не знаю, близок ли я или далек от ответа. У меня есть опция «Любой», в которой я хочу раскрыть все, что есть в моей базе данных, в отличие от выбранной опции, которая будет показывать только определенные строки. Я не уверен, как отобразить первое. Спасибо!

   $Interest = $_GET['interestId'];



 $sql = "SELECT * from User WHERE (Interest1 = '$Interest' OR Interest2 = '$Interest' OR Interest3 = '$Interest' OR $Interest = 'Any Interest');";

   $result = mysqli_query($link, $sql);

   $resultCheck = mysqli_num_rows($result);

    if ($resultCheck > 0) {
        while ($row = mysqli_fetch_assoc($result)) {
            echo "<p>";
            echo Name . ": ";
            echo $row['Fname'] . " ";
            echo $row['Lname'] . "<br><br>";
            echo Interests . ": ";
            echo $row['Interest1'] . ", ";
            echo $row['Interest2'] . ", ";
            echo $row['Interest3']  . "<br><br>";
            echo Website . ": ";
            echo $row['Website']  . "<br><br>";
            echo Personal_Statement . ": <br><br>";
            echo $row['PersonalStatement'] . "<br><br>";
            echo Contact . ": ";
            echo $row['Phone']  . "<br>";
            echo $row['Email'];
            echo "</p>";
        }
    } else {
        echo "<h2>Drat!</h2> There's currently no one with the interest of $Interest!";
    }

Теперь он ничего не возвращает для любого выбора.

Ответы [ 3 ]

0 голосов
/ 11 мая 2018

Полагаю, ваша форма / ajax такая:

<input id="anyInterest" name="nome" type="text" />

В php вы можете сделать:

$any = $_GET['anyInterest'];
$sql = "SELECT * FROM user WHERE Interest = " +$any "OR Interest = 'Any Interest'";
$result = mysqli_query($link, $sql);
$resultCheck = mysqli_num_rows($result);

if ($resultCheck > 0) {
   //do something
}
else {
    echo "<h2>Drat!</h2> There's currently no one with the interest of $Interest!";
}

Лучший выбор для безопасности:

$any = $this->input->get('anyInterest');
$sql = "SELECT * FROM user WHERE Interest = " +$any "OR Interest = 'Any Interest'";
$result = mysqli_query($link, $sql);
$resultCheck = mysqli_num_rows($result);

if ($resultCheck > 0) {
   //do something   
}
else {
    echo "<h2>Drat!</h2> There's currently no one with the interest of $Interest!";
}

Если это не правильный ответ, не могли бы вы объяснить процесс лучше, ваша идея?

0 голосов
/ 11 мая 2018

вопрос, который вы написали, не проясняет нас, но я прошел через ваш код и понял, что вы хотите получить данные из базы данных в четырех ситуациях 1. для любого интереса 2. интерес1 3. интерес2 4. интерес3

для достижения желаемого результата вам нужно будет внести некоторые изменения в вашу форму представления, а также в коде php.Здесь я собираюсь написать как код для HTML, так и PHP Надеюсь, что это будет полезно для вас

<form action="action.php" method="GET">
<select type="text" name="interestID"> --select interest type-- 
<option value="AnyInterest">Any Interest</option>
<option value="interest1">interest1</option>
<option value="interest2">interest2</option>
<option value="interest3">interest3</option>
</select>
<input type="submit" name="submit" value="Submit" />
</form>

// PHP код

       <?php
        if(isset($_GET['submit'])){
        $interestId = $_GET['interestID'];
        // connect with database query 
        switch($interestId){
        case "AnyInterest":
        $data = mysql_query("SELECT * FROM user") or mysql_error();
        break;
        case "interest1":
        case "interest2":
        case "interest3":
$data = mysql_query("SELECT * FROM user WHERE interestId = '$interestId '") or mysql_error();
        break;
        }

$count = mysql_num_rows($data);
if($count > 0){
while ($rows = mysql_fetch_assoc($data)){
// write code here to display the content on webpage
}

        }else{
        header(Location: action.php);
        }

        ?>
0 голосов
/ 11 мая 2018

Итак, если $Interest равно "Any", тогда вообще не должно быть фильтра? Вы можете поместить эту логику в запросе. Например, рассмотрим что-то вроде этого:

SELECT *
FROM User
WHERE
  (Interest1 = '$Interest' OR Interest2 = '$Interest' OR Interest3 = '$Interest')
  OR '$Interest' = 'Any'

Согласно этой логике, последняя OR будет соответствовать каждой записи, если переменная имеет строку "Any". Таким образом, вы в основном говорите: «Если запись соответствует вводу, ИЛИ, если ввод Any».

Кроме того, , и это важно , ваш код широко открыт до SQL-инъекция . Это означает, что вы слепо выполняете любой код, который ваши пользователи посылают вам . Этот ответ демонстрирует логика решения, , но есть еще что вам нужно сделать . Начните с изучения того, что SQL-инъекция здесь , и краткой информации о том, как ее существенно предотвратить здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...