Есть поисковой программный код. При найденных более десяти (есть ограничение для вывода не более 10 значений на 1 странице) значениях не может сделать переход на другую страницу. Если есть те, которые смогут в этом разобраться, пожалуйста, помогите! PHP: <?php // Get the search variable from URL $var = @$_GET['q'] ; $trimmed = trim($var); //trim whitespace from the stored variable // rows to return $limit=10; // check for an empty string and display a message. if ($trimmed == "") { echo "<p>Please enter a search...</p>"; exit; } // check for a search parameter if (!isset($var)) { echo "<p>We dont seem to have a search parameter!</p>"; exit; } //connect to your database ** EDIT REQUIRED HERE ** mysql_connect("localhost","username","pass"); //(host, username, password) //specify database ** EDIT REQUIRED HERE ** mysql_select_db("dbase") or die("Unable to select database"); //select which database we're using // Build SQL Query /*$query = "select * from users where post_code like \"%$trimmed%\" order by post_code"; */ $query = "SELECT * FROM users WHERE post_code LIKE \"%$trimmed%\" ORDER BY post_code"; // EDIT HERE and specify your table and field names for the SQL query $numresults=mysql_query($query); $numrows=mysql_num_rows($numresults); // If we have no results, offer a google search as an alternative if ($numrows == 0) { echo "<h4>Results</h4>"; echo "<p>Sorry, your search: "" . $trimmed . "" returned zero results</p>"; } // next determine if s has been passed to script, if not use 0 if (empty($s)) { $s=0; } // get results $query .= " limit $s,$limit"; $result = mysql_query($query) or die("Couldn't execute query"); // display what the person searched for echo "<p>You searched for: "" . $var . ""</p>"; // begin to show results set echo "Results"; $count = 1 + $s ; // now you can display the results returned while ($row= mysql_fetch_array($result)) { $title = $row["post_code"]; echo "$count.) $title" ; $count++ ; } $currPage = (($s/$limit) + 1); //break before paging echo "<br />"; // next we need to do the links to other results if ($s>=1) { // bypass PREV link if s is 0 $prevs=($s-$limit); print " <a href=\"$PHP_SELF?s=$prevs&q=$var\"><< Prev 10</a>  "; } // calculate number of pages needing links $pages=intval($numrows/$limit); // $pages now contains int of pages needed unless there is a remainder from division if ($numrows%$limit) { // has remainder so add one page $pages++; } // check to see if last page if (!((($s+$limit)/$limit)==$pages) && $pages!=1) { // not last page so give NEXT link $news=$s+$limit; echo " <a href=\"$PHP_SELF?s=$news&q=$var\">Next >></a>"; } $a = $s + ($limit) ; if ($a > $numrows) { $a = $numrows ; } $b = $s + 1 ; echo "<p>Showing results $b to $a of $numrows</p>"; ?>
Просто, понимаешь, тут проблема в том, что ты скопипэйстил откуда-то этот код, запостил огромный кусок этого кода сюда… ппц, руки опускаются читать все эти 109 строчек и искать ошибку. Просто бери и методом тыка эксперементируй — посмотри на ссылки, которые у тебя получились — может там какой-то символ лишний в параметрах? Сделай print_r() того, что у тебя выбралось из базы. Выведи сам запрос — может в нем ошибка, может там кавычки неправильно расставлены — echo $query; и так далее. Обязательно найдешь ощибку или опечатку. А вообще, ты почитай, что такое LIMIT в MySQL, почитай, как через $_GET параметры увеличивать этот LIMIT, чтобы разбивалась по страницам выборка. Потом почитай про кеш и кешируй страницы, которые получились ну и так далее.
Столкнулся с проблемой и не знаю, как её обойти. Мне нужно чтобы при введенном значение - «А» на экран выводились все данные начинающиеся именно с «А» На данный момент система производит отбор данных не в том порядке, который требуется. При введенном значении «А» она выводит данные – А, АВ, ВА, 12А…и т.д. Пожалуйста, если кто-то разбирается, помогите.
$query = "SELECT * FROM users WHERE post_code LIKE \"%$trimmed%\" ORDER BY post_code"; --> $query = "SELECT * FROM users WHERE post_code LIKE \"$trimmed%\" ORDER BY post_code";