PHP.SU

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

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

> Найдено сообщений: 43
TheRealKos Отправлено: 24 Марта, 2014 - 09:01:55 • Тема: Дублируются записи выборки • Форум: Работа с СУБД

Ответов: 14
Просмотров: 2025
Доброго времени суток. В общем суть проблемы такая Нужно выводить данные из таблицы таким образом:
Спойлер (Отобразить)


Написал вот так:
PHP:
скопировать код в буфер обмена
  1. $menu2 = mysql_query("SELECT * FROM `menu` ORDER BY `Nomer_semestra`");
  2. echo "Семестр<br><br>";
  3. while ($row2 = mysql_fetch_array($menu2))
  4. {
  5.  echo $row2['Nomer_semestra']."<br>";
  6.  echo $row2['Name_predmeta']."<br>";
  7.  
  8.  $menu3 = mysql_query("SELECT * FROM `menu` WHERE `Name_predmeta`='".$row2['Name_predmeta']."' ORDER BY `Nomer_group`");
  9.  while ($row3 = mysql_fetch_array($menu3))
  10.   {
  11.    echo $row3['Nomer_group']."<br>";
  12.   }
  13.  echo "<br>";
  14. }


В итоге выводится так Огорчение :
Спойлер (Отобразить)
TheRealKos Отправлено: 15 Марта, 2014 - 19:43:29 • Тема: Поиск не до конца работает правильно • Форум: Вопросы новичков

Ответов: 1
Просмотров: 133
С запросом все в порядке (почти уверен), сам вывод файлов нужно скорей всего подправить...
Да да, определенно с выводом файлов связано, вот только как исправить понять не могу Недовольство, огорчение
TheRealKos Отправлено: 15 Марта, 2014 - 16:21:52 • Тема: Поиск не до конца работает правильно • Форум: Вопросы новичков

Ответов: 1
Просмотров: 133
Доброго времени суток. Поиск выполняется частично правильно. Он находит нужное и правильно заполняет только 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 получается Огорчение
TheRealKos Отправлено: 25 Января, 2014 - 12:06:03 • Тема: Удалить одну из выводимых записей по кнопке • Форум: Работа с СУБД

Ответов: 1
Просмотров: 621
Доброго времени суток. Из таблицы выводятся записи
PHP:
скопировать код в буфер обмена
  1. if ((isset($_SESSION['login']) or isset($_SESSION['id'])) && $_SESSION['type_users']=='Преподаватель')
  2. {
  3.  $query = "SELECT * FROM `predmeti`";
  4.  $res = mysql_query($query);
  5.  $row = mysql_num_rows($res);
  6.  echo "Предметы:<br>";
  7.  while ($row = mysql_fetch_array($res))
  8.   {
  9.     echo "<table>";
  10.     echo "<tr>";
  11.     echo "$row[predmet_translit]"; echo " - "; echo "$row[predmet_norm]"; echo " <form action='D_predmeti.php' method='post'>"; echo "<button name='delete' value='$row[predmet_norm]'><img style='width: 15px;' src='/css/delete.png' title='Удалить'></button></form><br>";
  12.     echo "</table>";
  13.   } echo "<form action='A_predmeti.php' method='post'>";
  14.     echo "Название предмета транслитом:"; echo "<input name='predmet_translit' type='text'> "; echo "Название предмета обычно:"; echo "<input name='predmet_norm' type='text'>";
  15.     echo "<input type='submit' name='submit' value='Добавить предмет'></form>";
  16.     echo "<br><br>";
  17. }

Делаю удаление, и почему-то не хочет удаляться
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.   include("bd.php");
  3.   $del = $_POST['name'];
  4.   $delete = "DELETE FROM `predmeti` WHERE `predmet_norm` = '$del'";
  5.   mysql_query($delete);
  6.  @ header("Location: ".$_SERVER["HTTP_REFERER"]);// Делаем реридект обратно
  7. ?>
TheRealKos Отправлено: 15 Января, 2014 - 17:30:42 • Тема: Изменить вывод списка файлов • Форум: Работа с файловой системой и файлами

Ответов: 17
Просмотров: 4297
gefard пишет:
Действительно тяжелый случай
У ВАС ТАК????

Да, но ни чего не выводит. echo $dir; показывает, что дошло только до папки upload/Группа/Логин
TheRealKos Отправлено: 15 Января, 2014 - 16:45:29 • Тема: Изменить вывод списка файлов • Форум: Работа с файловой системой и файлами

Ответов: 17
Просмотров: 4297
imya пишет:
А если у вас придут пустые
$array2["group"]
$array2["login"]
?

Они не бывают пустые
TheRealKos Отправлено: 15 Января, 2014 - 16:34:54 • Тема: Изменить вывод списка файлов • Форум: Работа с файловой системой и файлами

Ответов: 17
Просмотров: 4297
teddy пишет:
значит papka нужно заменить на /upload/Группа/Логин

Я заменил, вот так вот идет: "upload/".$array2["group"]."/".$array2["login"]."/". Группа состоит из чисел, а Логин из английских букв.
TheRealKos Отправлено: 15 Января, 2014 - 16:27:53 • Тема: Изменить вывод списка файлов • Форум: Работа с файловой системой и файлами

Ответов: 17
Просмотров: 4297
teddy пишет:
Путь нужно указывать относительно скрипта

Ну это я понимаю, скрипт в корневой папке, а начинать искать нужно с папки /upload/Группа/Логин (но после папки Логин есть еще папки).
TheRealKos Отправлено: 15 Января, 2014 - 16:21:00 • Тема: Изменить вывод списка файлов • Форум: Работа с файловой системой и файлами

Ответов: 17
Просмотров: 4297
teddy пишет:
PHP:
скопировать код в буфер обмена
 
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(__DIR__.'/papka'));
foreach($iterator as $value){
  if(is_file($value)){
    echo $value.'<br />';
  }
}
papka это название папки, с которой нужно начать проход по папкам и подпапкам

Если делать тем, что вы предложили, то выдает ОГРОМНУЮ ОШИБКУ: Fatal error: Uncaught exception 'UnexpectedValueException' with message 'RecursiveDirectoryIterator::__construct(__DIR__upload/1-78-5/cellse/) [<a href='recursivedirectoryiterator.--construct'>recursivedirectoryiterator.--construct</a>]: failed to open dir: No such file or directory' in /ftp_aerium-01/arhivtz_613/arhivtz.gixx.ru/index.php:529 Stack trace: #0 /ftp_aerium-01/arhivtz_613/arhivtz.gixx.ru/index.php(529): RecursiveDirectoryIterator->__construct('__DIR__upload/1...') #1 {main} thrown in.
Ругается на строчку $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(__DIR__."upload/".$array2["group"]."/".$array2["login"]."/"));
TheRealKos Отправлено: 15 Января, 2014 - 16:04:44 • Тема: Изменить вывод списка файлов • Форум: Работа с файловой системой и файлами

Ответов: 17
Просмотров: 4297
DeepVarvar пишет:
Вырезал лишнее:

DeepVarvar пишет:
Использование:

А где указать путь? И в маске сделать что бы были только .doc и .docx?
TheRealKos Отправлено: 14 Января, 2014 - 21:37:12 • Тема: Изменить вывод списка файлов • Форум: Работа с файловой системой и файлами

Ответов: 17
Просмотров: 4297
gefard, хм... раньше выводил папки, теперь же вообще ни чего не выводит
TheRealKos Отправлено: 14 Января, 2014 - 19:05:15 • Тема: Изменить вывод списка файлов • Форум: Работа с файловой системой и файлами

Ответов: 17
Просмотров: 4297
Доброго времени суток. В общем есть такой вот код, который выводит файлы в папке upload/Группа/Логин. Но если в папке Логин есть еще папки, то он и их выведет (а нужно только файлы).
PHP:
скопировать код в буфер обмена
  1. $dir = "upload/".$array2["group"]."/".$array2["login"]."/";
  2.  echo $dir;
  3.  if(is_dir($dir))
  4.  {
  5.     $files = scandir($dir); //сканируем (получаем массив файлов)
  6.     array_shift($files); // удаляем из массива '.'
  7.     array_shift($files); // удаляем из массива '..'
  8.  
  9.     for($i=0; $i<sizeof($files); $i++)
  10.     {
  11.         if($array !== false)
  12.         {
  13.             $s=(array_key_exists($files[$i],$array)==true)?$array[$files[$i]]:'';
  14.         }
  15.             else
  16.             {
  17.                 $s = '';
  18.             }
  19.             echo '<a href="'.$dir.$files[$i].'" title="Скачать файл"> '.$files[$i].'<br></a> '.$s.' ';
  20.     }
  21.  }

Знаю, что можно рекурсией (но как правильно сделать так и не понял). Собственно говоря нашел вот такой код с рекурсией, но как адаптировать не знаю.
PHP:
скопировать код в буфер обмена
  1. function glob_recursive($dir, $mask){
  2.         foreach(glob($dir.'/*') as $filename){
  3.                 if(strtolower(substr($filename, strlen($filename)-strlen($mask), strlen($mask)))==strtolower($mask)) echo $filename."<br>";
  4.                 if(is_dir($filename)) glob_recursive($filename, $mask);
  5.         }
  6. }
  7. glob_recursive("upload/".$array2["group"]."/".$array2["login"]."/", ".doc");

Ругается на строчки function glob_recursive($dir, $mask){ с ошибкой Fatal error: Cannot redeclare glob_recursive() (previously declared in ). И на foreach(glob($dir.'/*') as $filename){ с ошибкой (Warning: Invalid argument supplied for foreach() in
И как изменить в маске, чтобы искал не только форматы .doc, но и .docx?
TheRealKos Отправлено: 14 Января, 2014 - 17:12:29 • Тема: Изменить вывод списка файлов • Форум: Вопросы новичков

Ответов: 0
Просмотров: 67
Доброго времени суток. В общем есть такой вот код, который выводит файлы в папке upload/Группа/Логин. Но если в папке Логин есть еще папки, то он и их выведет (а нужно только файлы).
PHP:
скопировать код в буфер обмена
  1. $dir = "upload/".$array2["group"]."/".$array2["login"]."/";
  2.  echo $dir;
  3.  if(is_dir($dir))
  4.  {
  5.     $files = scandir($dir); //сканируем (получаем массив файлов)
  6.     array_shift($files); // удаляем из массива '.'
  7.     array_shift($files); // удаляем из массива '..'
  8.  
  9.     for($i=0; $i<sizeof($files); $i++)
  10.     {
  11.         if($array !== false)
  12.         {
  13.             $s=(array_key_exists($files[$i],$array)==true)?$array[$files[$i]]:'';
  14.         }
  15.             else
  16.             {
  17.                 $s = '';
  18.             }
  19.             echo '<a href="'.$dir.$files[$i].'" title="Скачать файл"> '.$files[$i].'<br></a> '.$s.' ';
  20.     }
  21.  }

Знаю, что можно рекурсией (но как правильно сделать так и не понял). Собственно говоря нашел вот такой код с рекурсией, но как адаптировать не знаю.
PHP:
скопировать код в буфер обмена
  1. function glob_recursive($dir, $mask){
  2.         foreach(glob($dir.'/*') as $filename){
  3.                 if(strtolower(substr($filename, strlen($filename)-strlen($mask), strlen($mask)))==strtolower($mask)) echo $filename."<br>";
  4.                 if(is_dir($filename)) glob_recursive($filename, $mask);
  5.         }
  6. }
  7. glob_recursive("upload/".$array2["group"]."/".$array2["login"]."/", ".doc");

Ругается на строчки function glob_recursive($dir, $mask){ с ошибкой Fatal error: Cannot redeclare glob_recursive() (previously declared in ). И на foreach(glob($dir.'/*') as $filename){ с ошибкой (Warning: Invalid argument supplied for foreach() in
И как изменить в маске, чтобы искал не только форматы .doc, но и .docx?

Страниц (3): « 1 2 [3]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB