Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Поиск Ajax
Форумы портала PHP.SU » » Вопросы новичков » Поиск Ajax

Страниц (1): [1]
 

1. antonhristovsky - 05 Апреля, 2012 - 21:05:48 - перейти к сообщению
Здравствуйте. У меня есть страница /jquery2.php, на которой есть поиск. Вот её код:
CODE (html):
скопировать код в буфер обмена
  1. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
  2. <script type="text/javascript">
  3.         function runajax()
  4.         {
  5.                 var inp0 = $("#inp0").val();
  6.                 $.ajax({
  7.                   type: "POST",
  8.                   data: "key=" + inp0,
  9.                   url: "/ajax2.php",
  10.                   dataType: "json",
  11.                   success: function(data)
  12.                   {
  13.                         $("#firstname").text(data.firstname);
  14.                         $("#lastname").text(data.lastname);
  15.                   }
  16.                 })     
  17.         }
  18.         $(document).ready(function(){
  19.                 $("#inp0").keyup(runajax);
  20.         });
  21. </script>
  22.  
  23. Имя пользователя: <input type="text" id="inp0">
  24. <hr>
  25. <span id="firstname"></span> <span id="lastname"></span>

Данные передаються из файла ajax2.php:
PHP:
скопировать код в буфер обмена
  1. <?
  2. if (isset($_POST["key"])) $key = $_POST["key"];
  3. if (!mysql_connect(localhost, root, azsxdc040197131))
  4. {
  5.         exit;
  6. }
  7. mysql_select_db("kohana");
  8. $q = mysql_query("SELECT * FROM users WHERE firstname = '$key'");
  9. $res = mysql_fetch_assoc($q);
  10. echo json_encode($res);
Я не могу понять как можно на страницу выводить не один результат поиска,а много(все). Я так понимаю как-то нужно использовать цикл javascrip???
2. LIME - 05 Апреля, 2012 - 21:12:43 - перейти к сообщению
нет
формируйте хтмл в пхп обработчике
там запускайте цикл
и результирующий хтмл возвращайте
3. antonhristovsky - 05 Апреля, 2012 - 21:21:30 - перейти к сообщению
LIME а каки образом? можно пример привести?
4. LIME - 05 Апреля, 2012 - 21:36:40 - перейти к сообщению
навскидку
надо конечно будет допилить прилично
но принцип надеюсь поймете
хотя предлагаю лучше использовать метод $().load()
гораздо проще
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if (isset($_POST["key"])) $key = $_POST["key"];
  3. if (!mysql_connect(localhost, root, azsxdc040197131))
  4. {
  5.         exit;
  6. }
  7. $content=array('firstname'=>'','lastname'=>'');
  8. mysql_select_db("kohana");
  9. $q = mysql_query("SELECT firstname,lastname FROM users WHERE firstname = '$key'");
  10. while ($res = mysql_fetch_assoc($q)) {
  11.         $content['firstname'].='<h1>'.$res['firstname'].'</h1><br/>';
  12.         $content['lastname'].='<h1>'.$res['lastname'].'</h1><br/>';
  13.         }
  14. echo json_encode($content);
5. antonhristovsky - 05 Апреля, 2012 - 21:41:16 - перейти к сообщению
LIME так) это я понял) Но если это вывести, то оно сначало выводит все имена, а потоом все фамилии) А как сделать имя - фамилия?
6. Viper - 06 Апреля, 2012 - 09:14:40 - перейти к сообщению
LIME объясните мне на кой случай вы генерите на стороне сервера html, пхаете его в json, а затем функцией для загрузки html-контента пытаетесь вывести? Это новый стиль такой?

antonhristovsky если у вас возвращается массив строк...

Создаете div там где нужны результаты
CODE (html):
скопировать код в буфер обмена
  1. <div id="search_result"></div>


и js
CODE (javascript):
скопировать код в буфер обмена
  1. var row = '';
  2. $.each(response, function(k, v){
  3.         row += '<div>ФИО: '+v.firstname+' '+v.lastname+'</div>';
  4. });
  5. $('#search_result').append(row);


Примерно так.
7. avtor.fox - 06 Апреля, 2012 - 10:14:11 - перейти к сообщению
Я решил аяксовый поиск вот так:

CODE (javascript):
скопировать код в буфер обмена
  1. <script type="text/javascript">
  2.         $(function() {
  3.                 $("#search").keyup(function(){
  4.                         var search = $("#search").val();
  5.                                                
  6.                         $.ajax({
  7.                                 type: "POST",
  8.                                 url: "search.php",
  9.                                 data: {"search": search},
  10.                                 cache: false,                                          
  11.                                 success: function(response){
  12.                                         $("#resSearch").html(response);
  13.                                 }
  14.                         });
  15.                         return false;
  16.                                        
  17.                 });
  18.         });
  19.         </script>



CODE (html):
скопировать код в буфер обмена
  1. <form action="search.php" method="post" name="form" onsubmit="return false;">
  2. <input name="search" type="text" id="search" placeholder="Введите параметры поиска">
  3. </form>
  4. <div id="resSearch"></div>


Файл search.php
PHP:
скопировать код в буфер обмена
  1. $query = mysql_query("SELECT * FROM `table'");
  2. if(mysql_num_rows($query) > 0){
  3.         while($r = mysql_fetch_array($query)){
  4.                 echo implode(" ", $r)."<br>";
  5.         }
  6. }

//
Упс. Есесьна пример без проверки данных.
8. antonhristovsky - 08 Апреля, 2012 - 21:06:00 - перейти к сообщению
Скажите пожалуйста. Что я не правильно делаю??? Мне нужно вывести ВСЕ значения) А оно выводи только последние.
PHP:
скопировать код в буфер обмена
  1. <?
  2. if (isset($_POST["key"])) $key = $_POST["key"];
  3. if (!mysql_connect(localhost, root, azsxdc040197131))
  4. {
  5.         exit;
  6. }
  7. mysql_select_db("kohana");
  8. $q = mysql_query("SELECT * FROM users WHERE firstname = '$key'");
  9. $res = mysql_fetch_assoc($q);
  10.  
  11. if($res[lastname] == "")
  12. {
  13.     $pusto = "Пусто";
  14.         echo json_encode($pusto);
  15. }
  16. else
  17. {
  18.         while($r = mysql_fetch_array($q)){
  19.         echo json_encode($r['firstname'] ." " .$r['lastname']);
  20.     }
  21. }

 

Powered by ExBB FM 1.0 RC1