2016-10-19 2 views
0

Чтобы дать вам представление о том, над чем я работаю. Я работаю над проектом, в котором на моем школьном кампусе вы можете перемещаться. Например, номер можно назвать J2626 или J2617 и т. Д. Дело в том, что, когда пользователь использует мой сайт, я хочу, чтобы он набирал точное имя комнаты, чтобы иметь возможность отображать что-либо. Сейчас это не работает, как я хочу. Например: если вы только ввести J в поле поиска, он будет отображать все номера, которые начинаются с J.Поиск в базе данных PHP

Вот мой код прямо сейчас:

<?php 

$fileName = dirname(dirname(__FILE__)) . "../../db/bth_nav.sqlite"; 

if (isset($_GET['page'])) { 
    $argument = $_GET['page']; 
    $argument = "%" . $argument . "%"; 

    $db = new PDO("sqlite:$fileName"); 
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); 

    $stmt = $db->prepare('SELECT * FROM bth_nav WHERE name LIKE (:nameOwner) OR owner LIKE (:nameOwner);'); 
    $stmt->execute(array($argument)); 
    $res = $stmt->fetchAll(PDO::FETCH_ASSOC); 

    if (empty($res)) { 
     header("Location: " . "http://" . $_SERVER['index.php']); 
    } 
?> 

<div class = "formObjectSearch"> 

    <?php foreach ($res as $val) { ?> 
      <div class = "infoTab"> 
       <h2><?= $val['name']; ?></h2> 
       <p>Guidance: <?= $val['info']; ?></p> 
       <p>Whos sitting here?: <?= $val['owner']; ?> 
      </div> 
      <img class = "buildingImage" src = "img/<?= $val['image']; ?>" 
       <?php 
     } 
} 
       ?> 
    </div> 

Я попытался сделать diffrent если но без успеха. Поэтому мне нужна помощь в том, что я хочу, чтобы пользователь мог искать правильное имя комнаты и не мог только искать J и отображать все.

Update

Вот мой index.php:

Я использовал эту ссылку, потому что образец кода не хочет работать: index.php code

Вот мой building.php:

Samer здесь: building.php code

И новый поиск.p л.с. с помощью:

То же самое здесь: search.php code

я получаю эти ошибки прямо сейчас:

Примечание: Undefined индекс: index.php в /path/incl/files/search.php в строке 19

Предупреждение: не удается изменить информацию в заголовке - заголовки уже прислал (выход начался в /path/incl/header.php:7) в /path/incl/files/search.php на линии 19

Мой заголовок. php code:

То же самое здесь: header.php code

Мой config.php код:

То же самое здесь: config.php code

Мой footer.php код:

То же самое здесь: footer.php code

+2

'$ аргумент = "%". $ аргумент. «%»; «Не добавляйте знаки процента вокруг вашего аргумента? – FrankerZ

+0

Замените 'LIKE'' = ' –

ответ

1

Если я understanded вы правильно, и если вы хотите найти все номера со стартовой буквой J, вам нужно изменить свои аргументы.

Объяснение:

'%J%' - поиск выбранного поля, где находится J письмо.

'%J' - поиск выбранного поля, где J - последняя буква.

'J%' - поиск выбранного поля, где J - это первая буква.

Попробуйте изменить свой аргумент так:

$argument = $argument . "%"; 

UPDATE

Закрепление ваш, если заявление:

if (empty($res) OR $res == null) { 
    header('Location: http://'.$_SERVER['index.php']); 
} 
else { 
    echo '<div class = "formObjectSearch">'; 
    foreach ($res as $val) { 
     echo '<div class = "infoTab">'; 
     echo '<h2>'.$val["name"].'</h2>'; 
     echo '<p>Guidance:'.$val["info"].'</p>'; 
     echo '<p>Whos sitting here?:'.$val["owner"].'</p>'; 
     echo '</div>'; 
     echo '<img class="buildingImage" src="img/'.$val['image'].'" />'; 
    } 
    echo '</div>'; 
} 

ИЛИ

Вы можете попробовать заменить пустой, с:

if ($res->rowCount() > 0) { 
    // if founded 
} else { 
    // header('Location: http://'.$_SERVER['index.php']); 
} 
+0

Мой вопрос получил ответ в разделе комментариев. Я удалил все «%», и он работает, как я хочу сейчас. Но как я могу изменить оператор if, чтобы, если пользователь вводил только J, он будет перенаправлен на «index.php»? Потому что прямо сейчас инструкция if не работает. –

+0

@kreqq_ Отметьте обновленный ответ – Tauras

+0

По-прежнему не повезло с утверждением if. Возможно, это не работает из-за моей формы поиска, которая выглядит так:

Смежные вопросы