|
|
|
| Здравствуйте!
Подскажите, пожалуйста, решение.
Код обработчика
<?php
session_start();
if(isset($_POST['searchterm']))
$_SESSION['searchterm'] = $_POST['searchterm'];
$searchterm = $_SESSION['searchterm'];
ini_set('display_errors',1);
error_reporting(E_ALL);
if (!($conn_id = @mysql_connect("localhost", "root", "webwizard")))
die ("Cannot connect to server<br>");
if (!@mysql_select_db("pprr", $conn_id))
die ("Cannot select database<br>");
if (isset($_GET['page'])) $page=($_GET['page']-1); else $page=0;
$start=abs($page*$per_page);
$query = "select * from sss where textname=$searchterm LIMIT $start, $per_page";
$result=mysql_query($query);
echo '<table border="0" cellpadding="0" cellspacing="0" width="95%">';
while($row=mysql_fetch_array($result)) [b]// строка 34[/b]
{
$url = $row['linkname'];
$poisk = $row['textname'];
echo "
<TR>
<TD><a href = 'http://$url' class = 'load'>$poisk</a></TD>
</TR>";
}
echo '</table>';
$query = "SELECT count(*) FROM sss where textname=$searchterm";
$result=mysql_query($query); [b]// строка 48[/b]
$row=mysql_fetch_row($result);
$total_rows=$row[0];
$num_pages=ceil($total_rows/$per_page);
....
?>
|
Проблема в следующем:
если переменная $searchterm(её значение передаётся из формы) содержит только какие - либо числа, которые присутствуют в базе данных, то результат поиска выводится правильно, но если $searchterm содержит какие-либо русские слова или английские (которые тоже присутствуют в базе), то выдаётся сообщение об ошибке:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\server\newpoisk.php on line 34
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\server\newpoisk.php on line 48
Я попробовал разобраться в чём ошибка используя:
echo mysql_errno() . ": " . mysql_error(). "\n";
Выводится следующее сообщение:
1054: Unknown column 'end' in 'where clause'
(Неизвестная строка 'end' в ...) Но end присутствует в базе данных
Вот пример таблицы:
CREATE TABLE sss
(
textname CHAR(255),
linkname CHAR(255)
);
INSERT INTO find VALUES("название статьи","ссылка на неё");
...
INSERT INTO find VALUES("555","www");
INSERT INTO find VALUES("end","www");
INSERT INTO find VALUES("555end","www");
|
Как исправить данную ошибку я не могу понять.
Буду очень признателен, если Вы поможете мне разобраться в этом вопросе. | |
|
|
|
|
|
|
|
для: webzorb
(24.11.2006 в 09:01)
| | Поменяйте строку
$searchterm = $_SESSION['searchterm'];
|
на
$searchterm = "'".mysql_escape_string($_SESSION['searchterm'])."'";
|
| |
|
|
|
|
|
|
|
для: Trianon
(24.11.2006 в 09:27)
| | Спасибо огромное, Trianon
Вы настоящий профессионал! | |
|
|
|
|
|
|
|
для: Trianon
(24.11.2006 в 09:27)
| | Я изменил немного код:
<?php
if(!isset($_POST['searchterm']))
{
if(isset($_GET['searchterm']))
{
$searchterm = "'".mysql_escape_string($_GET['searchterm'])."'";
}
}
else
{
$searchterm = "'".mysql_escape_string($_POST['searchterm'])."'";
}
...
|
Чтобы передавать через URL строку запроса так:
echo "<a href=".$_SERVER['PHP_SELF']."?page=$i&searchterm=$searchterm>".$i."</a>";
|
Как теперь необходимо поменять это условие:
$searchterm = "'".mysql_escape_string($_SESSION['searchterm'])."'";
|
При таком значении $searchterm ссылка на следующую страницу выглядит так:
http://localhost/newpoisk.php?page=2&searchterm='7867'
Как избавиться от ' ' ?
Подскажите, пожалуйста. | |
|
|
|
|
|
|
|
для: webzorb
(24.11.2006 в 19:15)
| |
<?php
session_start();
if(isset($_REQUEST['searchterm']))
$_SESSION['searchterm'] = $_REQUEST['searchterm'];
$searchterm = $_SESSION['searchterm'];
$st_sql = "'".mysql_escape_string($searchterm)."'";
$st_ref = urlencode($searchterm);
|
$st_sql применяете в sql-запросах
where textname=$st_sql
$st_ref применяете при формировании параметра ссылки
<a href=?page=$i&searchterm=$st_ref > $i </a> | |
|
|
|
|
|
|
|
для: Trianon
(24.11.2006 в 19:32)
| | Спасибо огромное, Trianon
Всё работает как часики! | |
|
|
|