За последние 24 часа нас посетили 18455 программистов и 1704 робота. Сейчас ищут 909 программистов ...

Поисковой программный код не может сделать переход

Тема в разделе "PHP для новичков", создана пользователем Nymo, 24 июл 2009.

  1. Nymo

    Nymo Активный пользователь

    С нами с:
    10 июн 2009
    Сообщения:
    36
    Симпатии:
    0
    Есть поисковой программный код. При найденных более десяти (есть ограничение для вывода не более 10 значений на 1 странице) значениях не может сделать переход на другую страницу.
    Если есть те, которые смогут в этом разобраться, пожалуйста, помогите!
    PHP:
    1.  
    2. <?php
    3.  
    4.  
    5.   // Get the search variable from URL
    6.   $var = @$_GET['q'] ;
    7.   $trimmed = trim($var); //trim whitespace from the stored variable
    8.  
    9. // rows to return
    10. $limit=10;
    11.  
    12. // check for an empty string and display a message.
    13. if ($trimmed == "")
    14.   {
    15.   echo "<p>Please enter a search...</p>";
    16.   exit;
    17.   }
    18.  
    19. // check for a search parameter
    20. if (!isset($var))
    21.   {
    22.   echo "<p>We dont seem to have a search parameter!</p>";
    23.   exit;
    24.   }
    25.  
    26. //connect to your database ** EDIT REQUIRED HERE **
    27. mysql_connect("localhost","username","pass"); //(host, username, password)
    28.  
    29. //specify database ** EDIT REQUIRED HERE **
    30. mysql_select_db("dbase") or die("Unable to select database"); //select which database we're using
    31.  
    32. // Build SQL Query  
    33. /*$query = "select * from users where post_code like \"%$trimmed%\" order by post_code"; */
    34. $query = "SELECT * FROM users WHERE post_code LIKE \"%$trimmed%\" ORDER BY post_code";
    35.  
    36. // EDIT HERE and specify your table and field names for the SQL query
    37.  
    38.  $numresults=mysql_query($query);
    39.  $numrows=mysql_num_rows($numresults);
    40.  
    41. // If we have no results, offer a google search as an alternative
    42.  
    43. if ($numrows == 0)
    44.   {
    45.   echo "<h4>Results</h4>";
    46.   echo "<p>Sorry, your search: &quot;" . $trimmed . "&quot; returned zero results</p>";
    47.   }
    48.  
    49. // next determine if s has been passed to script, if not use 0
    50.   if (empty($s)) {
    51.   $s=0;
    52.   }
    53.  
    54. // get results
    55.   $query .= " limit $s,$limit";
    56.   $result = mysql_query($query) or die("Couldn't execute query");
    57.  
    58. // display what the person searched for
    59. echo "<p>You searched for: &quot;" . $var . "&quot;</p>";
    60.  
    61. // begin to show results set
    62. echo "Results";
    63. $count = 1 + $s ;
    64.  
    65. // now you can display the results returned
    66.   while ($row= mysql_fetch_array($result)) {
    67.   $title = $row["post_code"];
    68.  
    69.   echo "$count.)&nbsp;$title" ;
    70.   $count++ ;
    71.   }
    72.  
    73. $currPage = (($s/$limit) + 1);
    74.  
    75. //break before paging
    76.   echo "<br />";
    77.  
    78.   // next we need to do the links to other results
    79.  
    80.   if ($s>=1) { // bypass PREV link if s is 0
    81.   $prevs=($s-$limit);
    82.   print "&nbsp;<a href=\"$PHP_SELF?s=$prevs&q=$var\">&lt;&lt;
    83.  Prev 10</a>&nbsp&nbsp;";
    84.   }
    85.  
    86. // calculate number of pages needing links
    87.   $pages=intval($numrows/$limit);
    88.  
    89. // $pages now contains int of pages needed unless there is a remainder from division
    90.  
    91.   if ($numrows%$limit) {
    92.   // has remainder so add one page
    93.   $pages++;
    94.   }
    95.  
    96. // check to see if last page
    97.   if (!((($s+$limit)/$limit)==$pages) && $pages!=1) {
    98.  
    99.   // not last page so give NEXT link
    100.   $news=$s+$limit;
    101.  
    102.   echo "&nbsp;<a href=\"$PHP_SELF?s=$news&q=$var\">Next &gt;&gt;</a>";
    103.   }
    104.  
    105. $a = $s + ($limit) ;
    106.   if ($a > $numrows) { $a = $numrows ; }
    107.   $b = $s + 1 ;
    108.   echo "<p>Showing results $b to $a of $numrows</p>";
    109.  
    110. ?>
    111.  
     
  2. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    за сколько?
     
  3. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Где-то между 235 и 264 строкой ошибка!
     
  4. Nymo

    Nymo Активный пользователь

    С нами с:
    10 июн 2009
    Сообщения:
    36
    Симпатии:
    0
    Извините, изначально был плохо скопирован програмный код, поправил.
     
  5. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    $query .= " limit $s,$limit";

    -->

    $query .= " limit $s," .($limit+$s);

    ??
     
  6. Nymo

    Nymo Активный пользователь

    С нами с:
    10 июн 2009
    Сообщения:
    36
    Симпатии:
    0
    Нет, не работает, тоже самое....
     
  7. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    надо дебагить. Так сразу не скажешь.
     
  8. artuska

    artuska Активный пользователь

    С нами с:
    6 авг 2007
    Сообщения:
    61
    Симпатии:
    0
    Адрес:
    Riga, Latvia
    Просто, понимаешь, тут проблема в том, что ты скопипэйстил откуда-то этот код, запостил огромный кусок этого кода сюда… ппц, руки опускаются читать все эти 109 строчек и искать ошибку.

    Просто бери и методом тыка эксперементируй — посмотри на ссылки, которые у тебя получились — может там какой-то символ лишний в параметрах? Сделай print_r() того, что у тебя выбралось из базы. Выведи сам запрос — может в нем ошибка, может там кавычки неправильно расставлены — echo $query; и так далее. Обязательно найдешь ощибку или опечатку.

    А вообще, ты почитай, что такое LIMIT в MySQL, почитай, как через $_GET параметры увеличивать этот LIMIT, чтобы разбивалась по страницам выборка. Потом почитай про кеш и кешируй страницы, которые получились ну и так далее.
     
  9. Nymo

    Nymo Активный пользователь

    С нами с:
    10 июн 2009
    Сообщения:
    36
    Симпатии:
    0
    Нашел ошибку, не хватало $s = $_GET['s']; Сейчас отлично работает. Спасибо за идеи.
     
  10. Nymo

    Nymo Активный пользователь

    С нами с:
    10 июн 2009
    Сообщения:
    36
    Симпатии:
    0
    Столкнулся с проблемой и не знаю, как её обойти.
    Мне нужно чтобы при введенном значение - «А» на экран выводились все данные начинающиеся именно с «А» На данный момент система производит отбор данных не в том порядке, который требуется. При введенном значении «А» она выводит данные – А, АВ, ВА, 12А…и т.д.
    Пожалуйста, если кто-то разбирается, помогите.
     
  11. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    $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";
     
  12. Nymo

    Nymo Активный пользователь

    С нами с:
    10 июн 2009
    Сообщения:
    36
    Симпатии:
    0
    Спасибо за помощь, всё заработало.