Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.10.2017, 00:21   #1
Sureprise
 
Регистрация: 04.10.2017
Сообщений: 7
По умолчанию Поиск с использованием переключателя - PHP БД

привет ... действительно нужен help от всех вас.
Я хочу использовать переключатель для поиска между тремя ключевыми словами, и у меня есть проблема с моим кодом.
Этот код только успеха в первом случае только означает случай «name». Другие 2 случая вообще не работают. Пожалуйста, помогите мне...
PHP код:
<table border="0" cellspacing="3" cellpadding="3">
                <tbody><form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
                    <tr align="center">
                        <td><input type="radio" name="RBsearch" value="name" />name
                            <input type="radio" name="RBsearch" value="password" />password
                            <input type="radio" name="RBsearch" value="role" />role
                        </td>
                    </tr>
                    <tr align="center">
                        <td>Search : <input type="text" name="txtSearch" value="" size="30" />
                            <input type="submit" value="Search" name="btnSearch" /></td>
                    </tr></form>
                <?php
                    
$host 
"localhost";  // имя сервера   
$user "phpstart";       // имя пользователя
$password "";       // пароль
$db_name "phpshop"
                    
                     
$con mysql_connect($host$user$password) or die ('unable to connect!' mysql_error());
                    
mysql_select_db("phpshop"$con);


                    
$radio = isset($_POST['RBsearch']);
                    switch (
$radio){
                         case 
'name' $result mysql_query("SELECT * FROM user  WHERE  name LIKE '$_POST[txtSearch]' ");
                            break;
                        case 
'password' $result mysql_query("SELECT * FROM user WHERE password LIKE '$_POST[txtSearch]' ");
                            break;
                        case 
'role' $result mysql_query("SELECT * FROM user  WHERE role LIKE '$_POST[txtSearch]' ");
                            break;
                        default :  
$result mysql_query("SELECT * FROM  user ");
                            break;
                            }
                    
?>
                    <tr>
                        <td align="center"><table border="1" cellspacing="3" cellpadding="3">
                                <thead>
                                    <tr>
                                        <th width="100">id</th>
                                        <th width="200">name</th>
                                        <th width="200">email</th>
                                        <th width="200">password</th>
                                        <th width="200">role</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php while($row mysql_fetch_array($result))
                                {
                                    echo 
"<tr>";
                                        echo 
"<td align=\"center\">"$row['id'] ."</td>";
                                        echo 
"<td>"$row['name'] ."</td>";
                                        echo 
"<td>"$row['email'] ."</td>";
                                        echo 
"<td>"$row['password'] ."</td>";
                                        echo 
"<td>"$row['role'] ."</td>
                                        
                                    </tr>"
;
                                }
?>
                                </tbody>
                            </table>
                        </td>
                    </tr>
                </tbody>
            </table>

  </center>
    </body>
Sureprise вне форума Ответить с цитированием
Старый 04.10.2017, 00:54   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

PHP код:
$radio = isset($_POST['RBsearch']) 
        ? 
mysql_real_escape_string($_POST['RBsearch']) 
        : 
''
Andkorol вне форума Ответить с цитированием
Старый 04.10.2017, 08:09   #3
Sureprise
 
Регистрация: 04.10.2017
Сообщений: 7
По умолчанию

Или полностью показать,что вставлять, а выдает ошибку если просто вставить
Warning: mysql_fetch_array() expects parameter 1 to be resource, null given in D:\Openserver\OSPanel\domains\labab d\search.php on line 41
Код:
$radio = isset($_POST['RBsearch']) 
        ? mysql_real_escape_string($_POST['RBsearch']) 
        : '';  //что вот сюда писать? подскажите ,чтобы правильно было)

Последний раз редактировалось Sureprise; 04.10.2017 в 08:32.
Sureprise вне форума Ответить с цитированием
Старый 04.10.2017, 10:02   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Sureprise Посмотреть сообщение
: ''; //что вот сюда писать? подскажите ,чтобы правильно было)
Ничего туда не писать, там всё OK.
Ошибка «Warning: mysql_fetch_array() expects parameter 1 to be resource, null given» не имеет отношения к этому фрагменту кода.
Это ошибка в запросе mysql_query:
Цитата:
Для запросов SELECT, SHOW, DESCRIBE, EXPLAIN и других запросов, возвращающих результат из нескольких рядов, mysql_query() возвращает дескриптор результата запроса (resource), или FALSE в случае ошибки.
Вот у тебя как раз тот случай, когда в запросе ошибка, и mysql_query возвращает FALSE.
Ищи ошибки в запросах: после switch добавь:
PHP код:
if(empty($result)) echo mysql_error(); 
Этот код выведет текст ошибки запроса на экран.
Читай текст ошибки, затем исправляй.
Andkorol вне форума Ответить с цитированием
Старый 04.10.2017, 11:27   #5
Sureprise
 
Регистрация: 04.10.2017
Сообщений: 7
По умолчанию

Работает, только надо будет еще сброс сделать,спасибо)
Код:

Последний раз редактировалось Sureprise; 05.10.2017 в 08:20.
Sureprise вне форума Ответить с цитированием
Старый 04.10.2017, 12:09   #6
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Я там выше затупил в своём примере кода:
функцией mysql_real_escape_string нужно обрабатывать НЕ $_POST['RBsearch'] – а $_POST['txtSearch']:
PHP код:
$radio = isset($_POST['RBsearch']) 
        ? 
trim($_POST['RBsearch']) 
        : 
'';
$_POST['txtSearch'] = (!empty($_POST['txtSearch'])) 
        ? 
mysql_real_escape_string($_POST['txtSearch']) 
        : 
''
Ну и использовать в запросах LIKE для поиска точного совпадения не имеет смысла – это только тормозит запрос.
Используй простое сравнение: WHERE `name` = '{$_POST['txtSearch']}'.
Andkorol вне форума Ответить с цитированием
Старый 05.10.2017, 08:23   #7
Sureprise
 
Регистрация: 04.10.2017
Сообщений: 7
По умолчанию

Спасибо вам за помощь!!!
Sureprise вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PHP и MySQL организовать поиск по трем критериям отбора - PHP БД Gapfer PHP 2 10.10.2017 01:11
Отображение переключателя iphone Елена_05 HTML и CSS 2 23.04.2014 14:34
VBasic Зависимость флажка от переключателя Lioness Помощь студентам 4 02.11.2011 14:59
Автовставка даты при значении переключателя SevereK20 Microsoft Office Access 3 25.10.2010 13:54
Запомнить положение переключателя StasSv Microsoft Office Excel 2 03.01.2008 10:57