Задавайте вопросы, мы ответим
Вы не зашли.
есть набор ссылок типа
0 1 2 3 4 5 6 7 8 9
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ы Э Ю Я
при нажатии на буковку должна открыватся ссылка /?action=search&qwerty=А
пробовал так: mysql_query("SELECT pole FROM table WHERE imya LIKE '".$_POST['qwerty']."'%");
непашет.
искать кривонаписанные примеры не хочу. жду достойного ответа от профи)
Неактивен
Какая ошибка? Попробуйте так и посмотрите какая ошибка:
mysql_query("SELECT pole FROM table WHERE imya LIKE '".$_POST['qwerty']."'%") or die(mysql_error());
Если Ваша таблица так и называется table, то надо заключить ее имя в обратные кавычки "SELECT pole FROM `table` ...."
Неактивен
немножко переделал. результат тот же.
в браузере: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:\home\192.168.0.2\www\function.php on line 7
можно наблюдать тут: http://80.73.90.3
1. <?
2.
3. function search($qwerty){
4. $query = "SELECT * FROM `item` WHERE itemName LIKE '".$qwerty."'%";
5. $result = mysql_query($query);
6. $text = 'Список:<HR>';
7. while ($row=mysql_fetch_array($result)){
8. $text .= $row["itemName"];
9. $text .= '<BR>';
10. }
11. return $text;
12. }
13. ?>
в index.php вывожу так:
<?
if ($_GET["action"] == "search" && $_GET["qwerty"] != ''){
$text = file_get_contents('themplate.htm');
$title = 'тут будет титл';
$text = preg_replace("/%title%/", $title, $text);
$text_center = search($_GET["qwerty"]);
$text = preg_replace("/%center%/", $text_center, $text);
echo $text;
?>
Отредактированно vladimirov (16.12.2007 09:08:35)
Неактивен
rgbeast написал:
Если Ваша таблица так и называется table, то надо заключить ее имя в обратные кавычки "SELECT pole FROM `table` ...."
кавычки убрал. так как посчитал лишним. так как другие функции без кавычек замечательно работают.
Неактивен
переписал функцию
function search($qwerty){
$query = "SELECT itemId, itemName, itemDesc, itemPrice FROM items WHERE itemName LIKE '$qwerty'";
$result = mysql_query($query);
$text = 'Результат поиска:<HR>';
while ($row=mysql_fetch_array($result)){
$text .= $row["itemName"].' - '.$row["itemDesc"].' - '.$row["itemPrice"];
$text .= '<BR>';
}
return $text;
}
если в ссылка дописывать % типа http://192.168.0.2/?action=search&qwerty=ц%
выводит список начинающийся с буквы "ц"
если полностью имя задавать типа "цитрамон"
выводит наименование
попытки записать % в селект типа $query = "SELECT itemId, itemName, itemDesc, itemPrice FROM items WHERE itemName LIKE '$qwerty'%";
не получаются
выводится ошибка Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
в чем может быть проблема?
Отредактированно vladimirov (16.12.2007 11:45:27)
Неактивен
попытки записать % в селект типа $query = "SELECT itemId, itemName, itemDesc, itemPrice FROM items WHERE itemName LIKE '$qwerty'%";
Нужно писать процент внутри кавычек: не '$qwerty'%, а '$qwerty%'.
Кстати. Полезная есть функция mysql_error(), помогает разобраться в причинах ошибки. Например:
$result = mysql_query($query) or die(mysql_error());
Неактивен
Вы все-таки не забывайте про обработку ошибок, хотя бы минимальную:
$result = mysql_query($query) or die(mysql_error());
Запрос же измените, чтобы он соответствовал требованиям PHP (в том, что Вы указали процент считался интерпретатором частью имени переменной). И не забывайте про SQL-инъекции (сама переменная $querty дается вам извне и может содержать кавычки или что-то еще).
$query = "SELECT itemId, itemName, itemDesc, itemPrice FROM items WHERE itemName LIKE '" . addslashes($qwerty) . "%'";
Неактивен
Нужно писать процент внутри кавычек: не '$qwerty'%, а '$qwerty%'.
Виноват. Надо, конечно, процент экранировать, а то он с именем переменной сливается: '$qwery\%'
Неактивен
уау. выдало наконец таки. спасибо.
вот результат: http://80.73.90.3
адслеш в селект добавил)
кстати, я всегда сначала делаю вывод, потом защиту, паролирование и все прочье...
правильная последовательность?
Неактивен
защищайте сначала с помощью .htpasswd
Неактивен
ок. спасибо.
Неактивен
Можно (и даже, наверное, более правильно) вместо addslashes() использовать mysql_escape_string().
Неактивен
селект приобрел, кажется, свой окончательный вариант:
$query = "SELECT itemId, itemName, itemDesc, itemPrice FROM items WHERE itemName LIKE '".mysql_escape_string($qwerty)."%'";
что скажете?
и еще такой вопрос: а вот если с помощью формы отправлять уже не первую букву а часть слова или что еще интереснее - серединку слова - то как у меня будет выглядеть селект в этом случае?
Отредактированно vladimirov (16.12.2007 14:33:18)
Неактивен
если с помощью формы отправлять уже не первую букву а часть слова или что еще интереснее - серединку слова - то как у меня будет выглядеть селект в этом случае?
процент с двух сторон:
"SELECT ... LIKE '%".mysql_escape_string($qwerty)."%'"
Неактивен
ок
Неактивен
Display MySQL query results in HTML tables
http://www.phpclasses.org:80/browse/package/4284.html
класс вышел сегодня. попробовал. очень удобная вещ.
Неактивен