[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод php в html + поиск
Отторжение
Вообщем,надо сделать вывод данных из БД на html страницу. Плюс ко всему, есть поиск по базе данных.

Выглядит всё так:
html страница, на ней текстовое поле и кнопка. Когда нажимаю кнопку, идёт поиск по базе и всё что нашло - выведет ниже. Если не делали поиск - то на странице просто выведено всё что есть в БД.
php скрипт вывода из БД готов, поиск тоже, как это всё втулить... чёрт его %)
Как это всё организовать?



Спустя 3 часа, 12 минут (16.10.2010 - 01:57) aH6y написал(а):
сам пытался собрать?

Спустя 12 часов, 1 минута, 38 секунд (16.10.2010 - 13:59) Отторжение написал(а):
всмысле?

Спустя 2 минуты, 56 секунд (16.10.2010 - 14:02) sergeiss написал(а):
В том смысле, что тебе задали правильный встречный вопрос. У меня такой же был, когда тему прочитал smile.gif
Если ты сам сделал много чего, то ты, наверное, должен был как-то подумать на тему того, что это всё собрать в кучу надо будет. Вот тебя и спросили: "а сам пытался собрать?"

Спустя 22 минуты, 13 секунд (16.10.2010 - 14:24) Отторжение написал(а):
Ну пытался заинклудить на html странице скрипт, работать должно если поправить .htaccess, НО, надо ведь как-то сделать сделать поиск по тому что ввели в форме, а как обновить фрейм с пхп незнаю.

Спустя 5 часов, 41 минута, 1 секунда (16.10.2010 - 20:05) ИНСИ написал(а):
Отторжение наверное, тебе стоит немного изменить сам поиск:

1. Сделать php страницу.
2. Сделать вывод из БД по дефолту, то есть в адрессной строке сделать переменные пустые, получается запрос у тебя без условий.
2. Сделать форму поиска на странице, метод GET
3. И при поиске, чтобы данные отдавались этой же странице, но меняли запрос, то есть заполняли инфой адресную строку.

Спустя 2 часа, 16 минут, 7 секунд (16.10.2010 - 22:21) Отторжение написал(а):
Вообщем, получился вот такой код:

<?
$dblocation = "127.0.0.1";
$dbname = "blacklist";
$dbuser = "root";
$dbpsw = "*******";

$dbconnect = @mysql_connect($dblocation,$dbuser,$dbpsw);
$name = "";
$getname = $_GET['name'];
if($getname)
$name=$getname;

if (!$dbconnect)
{
echo "Error ". mysql_error() ."";
exit();
}
else
{
if(!@mysql_select_db($dbname,$dbconnect))
{
echo "Error ". mysql_error() ."";
exit();
}
else
{
echo "<html>";
echo "<TABLE>";
echo "<head>";
echo "<title>Чёрный список клана HamsterWatch</title>";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" />";
echo "<meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\" />";
echo "</head>";
echo "<body>";
echo "<H1 align=\"center\">HamsterWatch</H1>";
echo "<form action=\"blacklist.php\" method=\"get\">";
echo "<input type=\"text\" name=\"name\"><input type=\"submit\" value=\"Найти\">";
echo "<TR><TD>Ник</TD><TD>Лог</TD><TD>Дополнительно</TD><TD>Выход</TD></TR>";
$query = mysql_query("select * from badlist");
while($row = mysql_fetch_array($query))
{
echo "<TR><TD>". $row['nickname'] ."</TD><TD>". $row['log'] ."</TD><TD>". $row['etc'] ."</TD><TD>". $row['exit'] ."</TD></TR>";
}
echo "</TABLE>";
echo "</form>";
echo "</body>";
echo "</html>";
}
}


mysql_close($dbconnect);
exit();
?>


Вот теперь не могу заброс раскурочить, надо сделать:
SELECT * FROM blacklist WHERE nickname=$name

Но таким образом не срабатывает =/

Т.е. по идее надо делать через if, если ввели что-то то искать по $name, если не ввели - то не искать через where. Но вот sql не хочет принимать текст из переменной %)

Как это сделать?

Спустя 11 часов, 37 минут, 48 секунд (17.10.2010 - 09:59) linker написал(а):
mysql_query("SELECT * FROM blacklist WHERE nickname = '" . mysql_real_escape_string($name) . "'");

Спустя 2 часа, 19 минут, 42 секунды (17.10.2010 - 12:19) ИНСИ написал(а):
Отторжение Вот попробуй этот кусок:

$dblocation = "127.0.0.1";
$dbname = "blacklist";
$dbuser = "root";
$dbpsw = "*******";

$dbconnect = @mysql_connect($dblocation,$dbuser,$dbpsw);
if($_GET['name']) $where = "`nickname` = ".mysql_real_escape_string(stripslashes($_GET['name']))."";
else $where = '';

if (!$dbconnect) {
echo "Error ". mysql_error() ."";
exit();
}
else {
if(!@mysql_select_db($dbname,$dbconnect)) {
echo "Error ". mysql_error() ."";
exit();
}

else {
echo "<html>";
echo "<TABLE>";
echo "<head>";
echo "<title>Чёрный список клана HamsterWatch</title>";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" />";
echo "<meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\" />";
echo "</head>";
echo "<body>";
echo "<H1 align=\"center\">HamsterWatch</H1>";
echo "<form action=\"blacklist.php\" method=\"get\">";
echo "<input type=\"text\" name=\"name\"><input type=\"submit\" value=\"Найти\">";
echo "<TR><TD>Ник</TD><TD>Лог</TD><TD>Дополнительно</TD><TD>Выход</TD></TR>";

$query = mysql_query("SELECT * FROM `badlist` {$where}");
while($row = mysql_fetch_array($query))
{
echo "<TR><TD>". $row['nickname'] ."</TD><TD>". $row['log'] ."</TD><TD>". $row['etc'] ."</TD><TD>". $row['exit'] ."</TD></TR>";
}
echo "</TABLE>";
echo "</form>";
echo "</body>";
echo "</html>";
}
}


mysql_close($dbconnect);
exit();

Спустя 1 час, 54 минуты, 3 секунды (17.10.2010 - 14:13) Отторжение написал(а):
Спасибо)

Спустя 15 минут, 40 секунд (17.10.2010 - 14:29) arvitaly написал(а):
Прекратите экранировать кавычки

Спустя 45 минут, 58 секунд (17.10.2010 - 15:15) ИНСИ написал(а):
Цитата
Прекратите экранировать кавычки

почему?

Спустя 1 минута, 11 секунд (17.10.2010 - 15:16) arvitaly написал(а):
Цитата
почему?


Потому что это абсолютно бессмысленное увеличение кода и такое же уменьшение читабельнсти

Спустя 27 минут, 42 секунды (17.10.2010 - 15:43) ИНСИ написал(а):
arvitaly я с тобой полностью согласен, просто если говорить о НЕКОРРЕКТНОСТИ кода, то весь код ужасен. Поэтому если делать замечания, то делай все smile.gif

Спустя 14 минут, 54 секунды (17.10.2010 - 15:58) arvitaly написал(а):
1. Зачем заносить в переменные значение и тут же следующей строкой их использовать первый и последний раз.
2. @mysql_connect - хуже не придумаешь
3. $_GET['name'] - ее может и не быть
4. mysql_real_escape_string(stripslashes( - магические кавычки в каком положении??
5.nickname` = " - nickname='имя', а у вас nickname=имя. Это к тому, что может ничего не найтись. А терь к безопасности nickname =Федя select * from users
$_GET['name' - просто нужно проверить на соответствие шаблону

6. if (!$dbconnect) { - для чего мы делали $where= если тут же кончается работа скрипта
7. Опять миллион вложенных условий
8. html -код вообще в php Загонять незачем и уж точно не экранировать кавычки
9. $query = mysql_query - а здесь где проверка на ошибку
10. mysql_fetch_array - ни к чему assoc нужно
11. mysql_close - для чего вы пишите, знаете?
12. exit; это не конец скрипта?

Это не полный список, просто все остальные смысле нет писать)

Спустя 11 минут, 51 секунда (17.10.2010 - 16:10) ИНСИ написал(а):
arvitaly молодец!! Не плохие замечания ...

Спустя 42 минуты, 45 секунд (17.10.2010 - 16:53) Отторжение написал(а):
arvitaly да у меня просто тут книжонка, вот о ней какбэ и ориентируюсь. А теперь по пунктам:

1. если не @mysql_connect, то что?
2. ну если этой переменной нет, то и выборку по имени не производит.
4. подскажите шаблон для запроса.
10. Верно подмечено, исправил
11. Закрываю соединение с msql сервером, но вот почитал - это не обязательно.
12. конец

Спустя 1 минута, 33 секунды (17.10.2010 - 16:54) arvitaly написал(а):
Я щас ухожу завтра еси тока отвечу

Спустя 55 минут, 59 секунд (17.10.2010 - 17:50) Отторжение написал(а):
Ну ответь когда сможешь.

Спустя 50 минут, 25 секунд (17.10.2010 - 18:41) ИНСИ написал(а):
arvitaly сейчас нормально прочитал, твои замечания и мне кажется, ты не во всем прав:
Цитата
@mysql_connect - хуже не придумаешь

что именно? То, что человек подавляет ошибку? или то, что не: mysqli_query?
Цитата
mysql_real_escape_string(stripslashes( - магические кавычки в каком положении??

ну, допустим такой пример: Piter's
Цитата
А терь к безопасности nickname =Федя select * from users

там ведь стоит: mysql_real_escape_string(stripslashes(
Цитата
if (!$dbconnect) { - для чего мы делали $where= если тут же кончается работа скрипта

согласен, надо было убрать чуть ниже.
Цитата
html -код вообще в php Загонять незачем и уж точно не экранировать кавычки

на 100% согласен!
Цитата
mysql_fetch_array - ни к чему assoc нужно

не согласен! Это уже на любителя. Есть много трений, что лучше и быстрее. Это не является ошибкой мне кажется.
Цитата
mysql_close - для чего вы пишите, знаете?
exit; это не конец скрипта?

верно

Спустя 2 часа, 46 минут, 46 секунд (17.10.2010 - 21:28) arvitaly написал(а):
Цитата
что именно? То, что человек подавляет ошибку? или то, что не: mysqli_query?

да, именно то что подавляет ошибку и следующий код будет выполняться внезависимости от того есть у нас база или нет - абсурд

Цитата
ну, допустим такой пример: Piter's


Причем тут пример - речь о настройках пхп

Цитата
там ведь стоит: mysql_real_escape_string(stripslashes(


И? Лечите спид - аспирином?

Цитата
не согласен! Это уже на любителя. Есть много трений, что лучше и быстрее. Это не является ошибкой мне кажется.

Каких трений??? Где???? Что такое ошибка?


Спустя 38 минут, 47 секунд (17.10.2010 - 22:06) ИНСИ написал(а):
Цитата
да, именно то что подавляет ошибку и следующий код будет выполняться внезависимости от того есть у нас база или нет - абсурд

согласен.
Цитата
И? Лечите спид - аспирином?

думаешь запрос твой nickname =Федя select * from users пройдет через функцию: mysql_real_escape_string?
Цитата
Каких трений??? Где???? Что такое ошибка?

походи по форуму. Кажется тут не раз обсуждали эти функции....

я не стараюсь сказать что я лучше тебя знаю php. Уверен что мне далеко еще до профи, просто я сказал что по моему ты был неправ в определенных моментах. Поэтому, я не хочу спорить и не воспринимай этот биффинг как соревнование. ок? smile.gif

Спустя 5 минут, 19 секунд (17.10.2010 - 22:12) arvitaly написал(а):
Цитата
mysql_real_escape_string() calls MySQL's library function mysql_real_escape_string, which prepends backslashes to the following characters: \x00, \n, \r, \, ', " and \x1a.


7 раз за сегодня. Где тут связь с моим примером?


Цитата
походи по форуму. Кажется тут не раз обсуждали эти функции....


нет уж спасибо

Цитата
Поэтому, я не хочу спорить и не воспринимай этот биффинг как соревнование. ок?


да, конечно, какое соревнование - обсуждаем и обсуждаем чего нам делить

Спустя 18 часов, 31 минута, 13 секунд (18.10.2010 - 16:43) Отторжение написал(а):
Вообщем, я тут почитал, подправил кое что, НО, по прежнему не ищет по никнейму. Запрос верный, а вот чего выделуется - чёрт его знает. Кодировка может не соответствовать?

<?
$dblocation = "127.0.0.1";
$dbname = "blacklist";
$dbuser = "root";
$dbpsw = "s6evjfgy";

$dbconnect = mysql_connect($dblocation,$dbuser,$dbpsw) or die(mysql_error());
mysql_select_db($dbname,$dbconnect) or die(mysql_error());

if($_GET['name'])
$filter = "WHERE 'nickname' = '".mysql_real_escape_string($_GET['name'])."'";
else
$filter = '';

echo "<html>";
echo "<head>";
echo "<title>Чёрный список клана HamsterWatch</title>";
echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" />";
echo "<meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\" />";
echo "</head>";
echo "<body>";
echo "<H1 align=\"center\">HamsterWatch</H1>";
echo "<form action=\"blacklist.php\" method=\"get\">";
echo "Поиск по: $filter";
echo "<TABLE align=\"center\">";
echo "<TR><TD><input type=\"text\" name=\"name\"><input type=\"submit\" value=\"Найти\"></TD></TR>";
echo "<TR><TD>Ник</TD><TD>Лог</TD><TD>Дополнительно</TD><TD>Выход</TD></TR>";
$query = mysql_query("SELECT * FROM badlist $filter");
while($row = mysql_fetch_assoc($query))
{
echo "<TR><TD>". $row['nickname'] ." <img src=\"img\\". $row['profession'] .".gif\"></TD><TD>". $row['log'] ."</TD><TD>". $row['etc'] ."</TD><TD>". $row['exit'] ."</TD></TR>";
}
echo "</TABLE>";
echo "</form>";
echo "</body>";
echo "</html>";



mysql_close($dbconnect);
exit();

?>

Спустя 3 минуты, 42 секунды (18.10.2010 - 16:47) arvitaly написал(а):
зачем весь код нужен если не работает только сам запрос, оставьте только его и проверьте

Спустя 18 минут, 55 секунд (18.10.2010 - 17:06) Отторжение написал(а):
$query = mysql_query("SELECT * FROM 'badlist' WHERE 'nickname' = 'ааааа'");

Пытался делать так - не сработало. Хотя в БД есть запись, где nickname = aaaaa и при чём не одна %)

Спустя 51 минута, 20 секунд (18.10.2010 - 17:57) arvitaly написал(а):
а ну так set names кодировка еще надо делать запрос

Спустя 25 минут, 37 секунд (18.10.2010 - 18:22) Отторжение написал(а):
лучше utf8?

и этот запрос 1 раз всего сделать, верно?



P.S. сделал mysql_query("SET names utf8"); но не пашет =/

Спустя 3 минуты, 48 секунд (18.10.2010 - 18:26) arvitaly написал(а):
что значит лучше, какая у вас кодировка в базе?

Спустя 14 минут, 11 секунд (18.10.2010 - 18:40) Отторжение написал(а):
utf8_unicode_ci

Спустя 30 минут, 48 секунд (18.10.2010 - 19:11) ИНСИ написал(а):
Отторжение ты запрос переделал неверно, вот это вставь:
$query = mysql_query("SELECT * FROM `badlist` WHERE `nickname` = 'ааааа'");


Спустя 14 минут, 57 секунд (18.10.2010 - 19:26) Отторжение написал(а):
Не работает. Я по разному пробывал %)

Спустя 16 минут, 24 секунды (18.10.2010 - 19:43) ИНСИ написал(а):
Отторжение попробуй вот так:
Свернутый текст
<?

$dblocation = "127.0.0.1";
$dbname = "blacklist";
$dbuser = "root";
$dbpsw = "s6evjfgy";

$dbconnect = mysql_connect($dblocation,$dbuser,$dbpsw) or die(mysql_error());
mysql_select_db($dbname,$dbconnect) or die(mysql_error());

if(isset($_GET['name'])) {
$query = "
SELECT *
FROM `badlist`
WHERE `nickname` = '"
.mysql_real_escape_string($_GET['name'])."'
"
;
} else {
$query = "
SELECT *
FROM `badlist`
"
;
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Чёрный список клана HamsterWatch</title>

<
link rel="stylesheet" type="text/css" href="style.css" />
</
head>

<
body>
<
H1 align="center">HamsterWatch</H1>
<
form action="" method="get">
<
TABLE align="center">
<
TR><TD><input type="text" name="name"><input type="submit" value="Найти"></TD></TR>
<
TR><TD>Ник</TD><TD>Лог</TD><TD>Дополнительно</TD><TD>Выход</TD></TR>

<? while($row = mysql_fetch_assoc($query)) { ?>
<TR><TD><?=$row['nickname']?> <img src="img\<?=$row['profession']?>.gif"></TD><TD>
<?=$row['log']?></TD><TD>
<?=$row['etc']?></TD><TD>
<?=$row['exit']?></TD></TR>
<? } ?>
</TABLE>
</
form>
</
body>
</
html>

Спустя 8 минут, 44 секунды (18.10.2010 - 19:51) Отторжение написал(а):
welbox2, вообще не пашет)

Спустя 5 минут (18.10.2010 - 19:56) ИНСИ написал(а):
Отторжение прости, я просто классом пользуюсь, а тут надо прописывать. в общем, вот этот код вставь куда надо:
if(isset($_GET['name'])) {
$query = mysql_query"
SELECT *
FROM `badlist`
WHERE `nickname` = '"
.mysql_real_escape_string($_GET['name'])."'
"
;
} else {
$query = mysql_query"
SELECT *
FROM `badlist`
"
;
}


Спустя 4 минуты, 54 секунды (18.10.2010 - 20:01) ИНСИ написал(а):
блин, снова туплю, просто сегодня день был ужасный просто, вот последний шрих:
if(isset($_GET['name'])) {
$query = mysql_query("
SELECT *
FROM `badlist`
WHERE `nickname` = '"
.mysql_real_escape_string($_GET['name'])."'
"
);
} else {
$query = mysql_query("
SELECT *
FROM `badlist`
"
);
}

Спустя 6 минут, 47 секунд (18.10.2010 - 20:08) Отторжение написал(а):
Код то идентичный, смысл?

Спустя 42 секунды (18.10.2010 - 20:09) ИНСИ написал(а):
Отторжение посмотри внимательно, в последнем есть круглые скобки. Получилось?

Спустя 16 минут, 54 секунды (18.10.2010 - 20:26) Отторжение написал(а):
Заработало. Запросы идентичные, почему у меня не работает?

В запросе кавычки ' ' вообще не воспринимаются =/

Спустя 6 минут, 8 секунд (18.10.2010 - 20:32) ИНСИ написал(а):
Отторжение запросы разные. Ты в запросах названия таблиц и полей указал в одинарных ковычках, а их надо в апострофах указывать smile.gif

Спустя 47 секунд (18.10.2010 - 20:33) ИНСИ написал(а):
Отторжение хоть спасибо сказал бы что ли.....

Спустя 22 минуты, 15 секунд (18.10.2010 - 20:55) Отторжение написал(а):
Ох я кострюля) думал что надо в одинарных кавычках делать, думал на форуме специально так сделано для читабельности. Спасибо большое)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.