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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Поиск не до конца работает правильно

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Правильно заполняет только 6 из 8 столбцов таблицы
TheRealKos
Отправлено: 15 Марта, 2014 - 16:21:52
Post Id



Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Янв. 2014  


Помог: 0 раз(а)




Доброго времени суток. Поиск выполняется частично правильно. Он находит нужное и правильно заполняет только 6 из 8 столбиков таблицы (это Группа, Студент, Тема, Руководитель/Консультант, Язык пр./Среда пр., Тематика). Не правильно соответственно 2 (это Файлы и Комментарий). В столбик Файлы он заносит вообще файлы всех пользователей, а должен только найденного студента. В столбик Комментарий он не заносит комменты, которые были написаны ему и при написании нового коммента, они не сохраняются.

Вот собственно код (search_result.php):
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. include("bd.php");
  3. include("blocks/header.php");
  4.  
  5. $tema_search = $_POST["poisk"];
  6.  
  7. {
  8. /**
  9.  * void object2file - функция записи объекта в файл
  10.  *
  11.  * @param mixed value - объект, массив и т.д.
  12.  * @param string filename - имя файла куда будет произведена запись данных
  13.  * @return void
  14.  *
  15.  */
  16.  function object2file($value, $filename)
  17.  {
  18.     $str_value = serialize($value);
  19.     $f = fopen($filename, 'w');
  20.     fwrite($f, $str_value);
  21.     fclose($f);
  22.  }
  23.  
  24.  /**
  25.  * mixed object_from_file - функция восстановления данных объекта из файла
  26.  *
  27.  * @param string filename - имя файла откуда будет производиться восстановление данных
  28.  * @return mixed
  29.  *
  30.  */
  31.  function object_from_file($filename)
  32.  {
  33.     $file = file_get_contents($filename);
  34.     $value = @unserialize($file);
  35.     return $value;
  36.  }
  37. }
  38.  
  39.  function recursive($dir)
  40.   {
  41.    if(is_dir($dir))
  42.     {
  43.      $glob=glob($dir.'*/');
  44.      if(is_array($glob) && join('',$glob))
  45.       {
  46.        foreach($glob as $filess)
  47.         {
  48.          if(is_dir($filess))
  49.           {
  50.            recursive($filess);
  51.           }
  52.          else if(is_file($filess))
  53.           {
  54.            $filename = 'stats.txt';//файл для хранения
  55.            $array = object_from_file($filename);
  56.            if(isset($_POST['sub']) and isset($_POST['stats']) and !empty($_POST['stats']))
  57.             {
  58.              if($array == false)
  59.               {
  60.                $array=array();
  61.               }
  62.             $array[$_POST['file']]= $_POST['stats'];
  63.             object2file($array,$filename);
  64.            }
  65.  
  66.           $files = scandir($dir); //сканируем (получаем массив файлов)
  67.           array_shift($files); // удаляем из массива '.'
  68.           array_shift($files); // удаляем из массива '..'
  69.  
  70.           for($i=0; $i<sizeof($files); $i++)
  71.            {
  72.             if($array !== false)
  73.              {
  74.               $s=(array_key_exists($files[$i],$array)==true)?$array[$files[$i]]:'';
  75.              }
  76.             else
  77.              {
  78.               $s = '';
  79.              }
  80.            echo '<a href="'.$filess.'" title="Скачать файл"> '.basename($filess).'</a> '.$s.'
  81.            <form method="post" name="">
  82.            <select name="stats"></option>
  83.            <option selected disabled>Выберите статус...
  84.            <option value="Выполнено">Выполнено
  85.            <option value="Не выполнено">Не выполнено
  86.            </select>
  87.            <input type="hidden" name="file" value="'.basename($filess).'">
  88.            <input type="submit" name="sub">
  89.            <input type="hidden" name="login" value="<?PHP echo $_SESSION[login]?>"></form>
  90.           <form action="delete.php" method="post"><button name="path" value="'.$filess.'"><img style="width: 15px;" src="/css/delete.png" title="Удалить файл"></button></form><br>';
  91.           }}
  92.         }
  93.       }
  94.     }
  95.   }
  96.  
  97. $resource = mysql_query("SELECT `files`.`tema`, `users`.`id`, `users`.`login`, `users`.`name`, `users`.`familiya`, `users`.`group`, `files`.`rukov`, `files`.`konsul`, `files`.`yazik`, `files`.`sreda`, `files`.`tematika`  FROM `files`, `users` WHERE `files`.`tema` LIKE '$tema_search%' AND `files`.`poluchatel_file` = `users`.`id`",$db);
  98.  
  99.  if(mysql_num_rows($resource) > 0):
  100. /* выводим на страницу сайта заголовки HTML-таблицы*/ ?>
  101.     <br>
  102.     <table width="100%" border="1" cellspacing="5" cellpadding="0">
  103.         <thead>
  104.             <tr> <th colspan="8" align="center">Результаты поиска<br><a href="index.php">Перейти на главную страницу</a> или <a href="search.php">Вернуться к поиску</a></th> </tr>
  105.             <tr>
  106.               <th align="center" width="5%"  height="25px" bgcolor="">Группа</th>
  107.               <th align="center" width="10%" height="25px" bgcolor="">Студент</th>
  108.               <th align="center" width="15%" height="25px" bgcolor="">Тема</th>
  109.               <th align="center" width="15%" height="25px" bgcolor="">Руководитель/<br>Консультант</th>
  110.               <th align="center" width="15%" height="25px" bgcolor="">Язык пр./<br>Среда пр.</th>
  111.               <th align="center" width="15%" height="25px" bgcolor="">Тематика</th>
  112.               <th align="center" width="10%" height="25px" bgcolor="">Файлы</th>
  113.               <th align="center" width="15%" height="25px" bgcolor="">Комментарий</th>
  114.             </tr>
  115.         </thead>
  116.     <tbody>
  117.  
  118.     <?PHP // выводим в HTML-таблицу данные студентов из таблицы MySQL
  119.     while($row = mysql_fetch_array($resource)):?>
  120.         <tr>
  121.           <td align="center"> <?PHP echo $row['group'];?></td>
  122.           <td align="center"> <?PHP echo $row['name'];?> <?PHP echo $row['familiya'];?> </td>
  123.           <td align="center"> <?PHP echo $row['tema'];?></td>
  124.           <td align="center"> <?PHP echo $row['rukov'];?>/<br><?PHP echo $row['konsul'];?></td>
  125.           <td align="center"> <?PHP echo $row['yazik'];?>/<br><?PHP echo $row['sreda'];?></td>
  126.           <td align="center"> <?PHP echo $row['tematika'];?></td>
  127.  
  128.           <td align="center"> <?PHP $filename = 'stats.txt';//файл для хранения
  129.            $array = object_from_file($filename);
  130.            if(isset($_POST['sub']) and isset($_POST['stats']) and !empty($_POST['stats']))
  131.             {
  132.              if($array == false)
  133.               {
  134.                $array=array();
  135.               }
  136.              $array[$_POST['file']]= $_POST['stats'];
  137.              object2file($array,$filename);
  138.             }
  139.            $dir='upload/'.$array2['group'].'/'.$array2['login'].'/';
  140.            $dir=iconv('utf-8','windows-1251',$dir);
  141.            recursive($dir);?></td>
  142.  
  143.          <td align="center"> <?PHP
  144.       $page_id = 111;// Уникальный идентификатор страницы (статьи или поста)
  145.       $name = @$_SESSION['login'];
  146.       $poluchatel = $array2['id'];// id пользователя, для которого предназначается комментарий
  147.       $mysqli = new mysqli("данные для подключения");// Подключается к базе данных
  148.      
  149.  
  150.       $mysqli->query("SET CHARACTER_SET_client='cp1251'");
  151.       $mysqli->query("SET CHARACTER_SET_results='cp1251'");
  152.       $mysqli->query("SET collation_connection='cp1251_general_ci'");
  153.      
  154.       $result_set = $mysqli->query("SELECT * FROM `comments` WHERE `page_id`='$page_id' AND `poluchatel` = " .$array2['id']); //Вытаскиваем все комментарии для данной страницы
  155.  
  156. if($result_set)
  157. {
  158. while ($row = $result_set->fetch_assoc())
  159.       {
  160. ?>
  161.     <span style="font-family:Courier; font-size:8pt;">
  162.         <?=$row["name"]?>
  163.         (<?=date("d.m.Y H:i", $row['date'])?>):
  164.     </span>
  165.    
  166.         <?=$row["text_comment"]?>
  167.     <?PHP
  168.         }
  169.     }
  170.  
  171.       echo "
  172.      <form name='comment' action='comment.php' method='post'>
  173.       <p>    <!--  <label>Имя:</label> -->
  174.       <!--   <input type='text' name='name' /> -->
  175.      <input type='hidden' name='name' value='$_SESSION[login]' />
  176.      <input type='hidden' name='id' value='$poluchatel' /></p>
  177.      <p>
  178.       <label><font face='Courier' size='2px'>Оставить комментарий:</font></label>
  179.       <br>
  180.       <textarea name='text_comment' cols='25px' rows='1px'></textarea>
  181.       <input type='hidden' name='page_id' value='111' />
  182.       <input type='submit' value='Отправить' /></p>
  183.      </form>"; ?> <td>
  184.  
  185.  
  186.           </tr>
  187.     <?PHP endwhile; ?>
  188.  
  189.     </tbody>
  190.     </table>
  191. <?PHP else:?>
  192.     Ничего не найдено!<br> <a href="index.php">Перейти на главную страницу</a> или <a href="search.php">Вернуться к поиску</a>
  193. <?PHP endif; ?>
  194.  
  195. <html>
  196. <head>
  197. <title>Результаты поиска</title>
  198. </head>
  199. </html>

Ощущение как будто, что запрос не до конца правильный...Хотя может и в коде нужно править...
Что странно, проверил запрос в phpMyAdmin, там выдает файлы нужного студента, а не все как в php получается Огорчение
 
 Top
TheRealKos
Отправлено: 15 Марта, 2014 - 19:43:29
Post Id



Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Янв. 2014  


Помог: 0 раз(а)




С запросом все в порядке (почти уверен), сам вывод файлов нужно скорей всего подправить...
Да да, определенно с выводом файлов связано, вот только как исправить понять не могу Недовольство, огорчение

(Отредактировано автором: 15 Марта, 2014 - 20:18:56)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB