Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/20: Рейтинг темы: голосов - 20, средняя оценка - 4.55
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
1

форма ввода (поиск в БД)

31.10.2012, 01:52. Показов 3827. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!
Народ помогите пожалуйста разобраться, надо сделать так чтоб происходил поиск в базе по одному из трех полей формы ввода, я тут написал, но нечего не получается выдает ошибку

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<html>
 
<title>поиск</title>
 
<body>
<?php
session_start();
if (isset($_SESSION['is_admin']) && $_SESSION['is_admin'] == "Y")
  { print "<a href='logout.php'>Logout</a>\n"; };
?>
<?php
if (isset($_SESSION['is_admin']) && $_SESSION['is_admin'] == "Y")
  { print "<a href='search.php'><font align='centr'>Search</a>\n"; };
?>  
    <form method='POST' action='search.php'>
        <table height="20%" width='60%'>
        <tr>
            <td align='right' style="vertical-align:middle">
                Ievadiet vardu:   
                <input type="text" name="sfname" maxlength="50" size="20">
                <br>
                Ievadiet uzvardu:
                <input type="tex" name="l_name" maxlength="50" size="20">
                <br>
                Ievadiet perosnas kodu vai ID kodu: 
                <input type="tex" name="pk_new" maxlength="50" size="20">
                <br>
                <input type="submit" value="Meklet personu">
            </td>
        </tr>
        </table>
    </form>
<hr>    
<?php
require('setup.php'); 
$db = db_connect('test');
$_sfname = mysqli_real_escape_string ($_POST['sfname']);
$rs = mysql_query("SELECT FNAME, LNAME, PK FROM PERSONA WHERE fname=$_sfname", $db);  
print "<table border='1'>\n";
while($row = mysql_fetch_array($rs))
{
print "<tr>\n";
echo "<td>".$row['FNAME']."</td>","<td>".$row['LNAME']."</td>","<td>".$row['PK']."</td>";
 
  // if admin, then output these controls
print "</tr> \n";
}
print "</table>\n";
mysql_close($db);
?>
<hr color='red'>
</body>
 
</html>
а вот какие ошибки выдает
Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in C:\xampp\htdocs\test\AAIC\search.php on line 37

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\test\AAIC\search.php on line 40

помогите исправить, или там надо поменять mysqli_real_escape_string() на другую функцию
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.10.2012, 01:52
Ответы с готовыми решениями:

Ленточная форма ввода данных дата ввода
Гуру, подскажите пожалуйста как при вводе данных в ленточную форму записать дату...

Вот есть форма календаря для ввода дат, а для ввода времени?
Не ткнете, где взять можно??? Или может кодом кто поделится? Нужно часы и минуты выбирать из...

Форма ввода
Подскажите пожалуйста, как делаются такие формы. Столкнулся первый раз и не знаю как сверстать,...

Сложноподчиненная форма ввода
Доброго дня коллеги. Столкнулся с проблемой ввода данных для схемы данных (см рисунок)....

14
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
31.10.2012, 02:00 2
Открываем доку по функции
http://php.net/manual/ru/mysql... string.php
Сомтрим
Процедурный стиль
string mysqli_real_escape_string ( mysqli $link , string $escapestr )
Список параметров
link - Только для процедурного стиля: Идентификатор соединения, полученный с помощью mysqli_connect() или mysqli_init()
escapestr - The string to be escaped. Characters encoded are NUL (ASCII 0), \n, \r, \, ', ", and Control-Z.
Видим что там два параметра. А у вас один. О чём вам даже пхп написал
mysqli_real_escape_string() expects exactly 2 parameters, 1 given
Не знам английский? Тогда добавляем в закладки сайт http://translate.google.ru


Добавлено через 1 минуту
Более того, на той же странице есть примеры использования.

Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
 
/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}
 
mysqli_query($link, "CREATE TEMPORARY TABLE myCity LIKE City");
 
$city = "'s Hertogenbosch";
 
/* this query will fail, cause we didn't escape $city */
if (!mysqli_query($link, "INSERT into myCity (Name) VALUES ('$city')")) {
    printf("Error: %s\n", mysqli_sqlstate($link));
}
 
$city = mysqli_real_escape_string($link, $city);
 
/* this query with escaped $city will work */
if (mysqli_query($link, "INSERT into myCity (Name) VALUES ('$city')")) {
    printf("%d Row inserted.\n", mysqli_affected_rows($link));
}
 
mysqli_close($link);
?>

Смотрим с какими параметрами вызывается функция.
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
31.10.2012, 20:47  [ТС] 3
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
Открываем доку по функции
http://php.net/manual/ru/mysql... string.php
Сомтрим

Видим что там два параметра. А у вас один. О чём вам даже пхп написал

Не знам английский? Тогда добавляем в закладки сайт http://translate.google.ru


Добавлено через 1 минуту
Более того, на той же странице есть примеры использования.

Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
 
/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}
 
mysqli_query($link, "CREATE TEMPORARY TABLE myCity LIKE City");
 
$city = "'s Hertogenbosch";
 
/* this query will fail, cause we didn't escape $city */
if (!mysqli_query($link, "INSERT into myCity (Name) VALUES ('$city')")) {
    printf("Error: %s\n", mysqli_sqlstate($link));
}
 
$city = mysqli_real_escape_string($link, $city);
 
/* this query with escaped $city will work */
if (mysqli_query($link, "INSERT into myCity (Name) VALUES ('$city')")) {
    printf("%d Row inserted.\n", mysqli_affected_rows($link));
}
 
mysqli_close($link);
?>

Смотрим с какими параметрами вызывается функция.
английский на таком уровне я знаю, а на форуме спрашиваю чтоб помогли разобраться и указали на ошибку (помогли исправить а не довали ссылки на примеры я их и сам могу найти и посмотреть)

Добавлено через 1 минуту
если сделать вот так
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<html>
 
<title>Personas meklesana</title>
 
<body>
<?php
session_start();
if (isset($_SESSION['is_admin']) && $_SESSION['is_admin'] == "Y")
  { print "<a href='logout.php'>Logout</a>\n"; };
?>
<?php
if (isset($_SESSION['is_admin']) && $_SESSION['is_admin'] == "Y")
  { print "<a href='search.php'><font align='centr'>Search</a>\n"; };
?>  
    <form method='POST' action='search.php'>
        <table height="20%" width='60%'>
        <tr>
            <td align='right' style="vertical-align:middle">
                Ievadiet vardu:   
                <input type="text" name="sfname" maxlength="50" size="20">
                <br>
                Ievadiet uzvardu:
                <input type="tex" name="l_name" maxlength="50" size="20">
                <br>
                Ievadiet perosnas kodu vai ID kodu: 
                <input type="tex" name="pk_new" maxlength="50" size="20">
                <br>
                <input type="submit" value="Meklet personu">
            </td>
        </tr>
        </table>
    </form>
<hr>    
<?php
require('setup.php'); 
$db = db_connect('test');
//$_sfname = mysqli_real_escape_string ($db, $_POST['sfname']);
$_sfname = ($_POST['sfname']);
$rs = mysql_query("SELECT FNAME, LNAME, PK FROM PERSONA WHERE fname=$_sfname", $db);  
print "<table border='1'>\n";
while($row = mysql_fetch_array($rs))
{
print "<tr>\n";
echo "<td>".$row['FNAME']."</td>","<td>".$row['LNAME']."</td>","<td>".$row['PK']."</td>";
 
print "</tr> \n";
}
print "</table>\n";
mysql_close($db);
?>
<hr color='red'>
</body>
 
</html>
то выдает ошибку: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\test\AAIC\search.php on line 41

что там не так???
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
31.10.2012, 21:16 4
Цитата Сообщение от Виталюска Посмотреть сообщение
то выдает ошибку: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\test\AAIC\search.php on line 41
Ошибки при работе с БД если Вас, конечно, не затруднит потратить пять минут на чтение

Добавлено через 2 минуты
у вас прямо так все поля заглавными буквами записаны в БД? $_sfname 100% число?
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
31.10.2012, 21:25 5
Цитата Сообщение от Виталюска Посмотреть сообщение
mysqli_real_escape_string
Цитата Сообщение от Виталюска Посмотреть сообщение
mysql_query
это два совершенно разных расширения.
Вы определитесь какое используете. Если вы подключение делаете одним а запрос пытаетесь выполнить другим - то работать не будет.
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
31.10.2012, 21:47  [ТС] 6
Цитата Сообщение от KOPOJI Посмотреть сообщение
Ошибки при работе с БД если Вас, конечно, не затруднит потратить пять минут на чтение

Добавлено через 2 минуты
у вас прямо так все поля заглавными буквами записаны в БД? $_sfname 100% число?
поля в базе записаны все маленькими буквами, поиск теперь заработал написал вот так:
PHP
1
2
$_sfname = ($_POST['sfname']);
$rs = mysql_query("SELECT FNAME, LNAME, PK FROM PERSONA WHERE fname='$_sfname'", $db);
но если оставить поле ввода пустым то выдает ошибку:
Notice: Undefined variable: _sfname in C:\xampp\htdocs\test\AAIC\search.php on line 39
Добавлено через 5 минут
извиняюсь, не верно написал! ошибку выдает при переходе на страницу поиска.... подскажите как исправить? может вставить проверку перед обработкой страници? чтоб проверяла введены данные в поля поиска или нет?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
31.10.2012, 21:50 7
Цитата Сообщение от Виталюска Посмотреть сообщение
чтоб проверяла введены данные в поля поиска или нет?
это первым делом нужно делать. Вторым - очищать
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
03.11.2012, 01:19  [ТС] 8
доброго времени суток!
Народ помогите, подправте запрос (по шаблону) или подскажите что не так, если поля ввода пустые то как и положено нечего не выводит, но если что небудь ввести выводит все записи:

PHP
1
2
3
$_sfname = ($_POST['sfname']);
$_slname = ($_POST['slname']);
$rs = mysql_query("SELECT FNAME, LNAME, PK FROM PERSONA WHERE fname='$_sfname' OR lname='$_slname' LIKE '%".$_sfname."%'", $db);
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
03.11.2012, 13:40 9
Цитата Сообщение от Виталюска Посмотреть сообщение
SQL
1
lname='$_slname' LIKE '%".$_sfname."%'
меня смущает вот это часть
навреное надо просто вот так
SQL
1
lname='$_slname'
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
03.11.2012, 18:00  [ТС] 10
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
меня смущает вот это часть
навреное надо просто вот так
SQL
1
lname='$_slname'
мне надо запрос выполнять по образцу вот код sql:
SQL
1
SELECT * FROM TABLE WHERE name LIKE '%n%'
поэтому запросу надо вывести все имена которые содержат введенную букву (буква вводится через форму вводу описанную выше)
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
03.11.2012, 18:03 11
Ну так по образцу этому запрос будет такой
PHP
1
$rs = mysql_query("SELECT FNAME, LNAME, PK FROM PERSONA WHERE `fname` LIKE '%{$_sfname}%' OR `lname` LIKE '%{$_slname}%'", $db);
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
03.11.2012, 18:21  [ТС] 12
не понимаю как реализовать это на PHP

пробовал вот так:

PHP
1
2
3
$rs = mysql_query("SELECT FNAME, LNAME, PK FROM PERSONA WHERE fname='$_sfname' OR lname='$_slname' LIKE \'%".$_sfname."%\'", $db);  
print "<table border='1'>\n";
while($row = mysql_fetch_array($rs))
выдает ошибку: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\test\AAIC\search.php on line 47

Добавлено через 6 минут
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
Ну так по образцу этому запрос будет такой
PHP
1
$rs = mysql_query("SELECT FNAME, LNAME, PK FROM PERSONA WHERE `fname` LIKE '%{$_sfname}%' OR `lname` LIKE '%{$_slname}%'", $db);
так я тоже делал выводит все данные

Добавлено через 4 минуты
Цитата Сообщение от Виталюска Посмотреть сообщение
не понимаю как реализовать это на PHP

пробовал вот так:

PHP
1
2
3
$rs = mysql_query("SELECT FNAME, LNAME, PK FROM PERSONA WHERE fname='$_sfname' OR lname='$_slname' LIKE \'%".$_sfname."%\'", $db);  
print "<table border='1'>\n";
while($row = mysql_fetch_array($rs))
выдает ошибку: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\test\AAIC\search.php on line 47

Добавлено через 6 минут


так я тоже делал выводит все данные
теперь без разницы что ввести выводит все записи с таблицы
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
03.11.2012, 18:26 13
ну так LIKE это по шаблону.
вы ввели пустая строка будет соотвтествовать всем символам.
а строка а - будет соответсвовать: а, да, арбуз, дорога,....
всем словам где етсь буква а.

вы дали шаблон с like, вот я вам и вставил его в ваш запрос.
хотите другой результат, опишите словами что хотите получить, чем подробнее опишите, тем точнее будет и ответ
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
03.11.2012, 18:39  [ТС] 14
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
ну так LIKE это по шаблону.
вы ввели пустая строка будет соотвтествовать всем символам.
а строка а - будет соответсвовать: а, да, арбуз, дорога,....
всем словам где етсь буква а.

вы дали шаблон с like, вот я вам и вставил его в ваш запрос.
хотите другой результат, опишите словами что хотите получить, чем подробнее опишите, тем точнее будет и ответ
мне так и надо, чтоб запрос выводил для начала все данные (для сравнения потом это уберу) но после нажатия на кнопку поиска он должен вывести только искомые значения
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
07.11.2012, 11:02  [ТС] 15
Спасибо всем кто помогал, все заработало когда написал:
SQL
1
SELECT fname, lname, pk FROM persona WHERE fname='%{$_POST['sfname']}%'
0
07.11.2012, 11:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.11.2012, 11:02
Помогаю со студенческими работами здесь

Форма ввода в MySQL
Доброго времени суток. Прошу помощи в следующем. Есть БД и таблица в ней. CREATE TABLE...

Форма ввода данных
Помогите создать форму ввода данных для полей: наименование товара, количество и стоимость. ...

Форма ввода в Access
Приветствую ! Проблема в следующем: 1. Я новичек в Access (2000) 2. Есть БД в котором есть...

Форма ввода пароля
Форма ввода пароля взята из примера, поставляемого с STUDIO'2010 В проекте &quot;UserInfo&quot; В свой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru