PHP.SU

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

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

> Найдено сообщений: 50
black_ru Отправлено: 08 Июля, 2011 - 19:24:12 • Тема: проблема с формой • Форум: Напишите за меня, пожалуйста

Ответов: 7
Просмотров: 64
Так ведь и так все работает, вы выбрали число, отправили методом POST
и вывели через echo, результат верный.
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  
  3. <form method="POST">
  4.            <select name=prpage size=1>
  5.             <option value="10">10</option>
  6.             <option value="20" selected>20</option>
  7.             <option value="50">50</option>
  8.             <option value="100">100</option>
  9.            </select>
  10. <input type=submit>
  11. </form>
  12. <?php
  13. $ppage = $_POST["prpage"];
  14. echo "$ppage";
  15. ?>
  16.  
black_ru Отправлено: 08 Июля, 2011 - 18:08:39 • Тема: php и grep • Форум: Операционная система и системные вызовы

Ответов: 12
Просмотров: 8044
Сделал пока с помощью grep. Правда, результат поиска считывается в файл, вдобавок обрабатывается sed и затем другим вызовом с помощью cat выводится.
Наверное, не очень хорошо создавать файл для каждого поискового запроса?
Но скрипт поиска получился буквально из нескольких строк.
black_ru Отправлено: 08 Июля, 2011 - 11:59:18 • Тема: php и grep • Форум: Операционная система и системные вызовы

Ответов: 12
Просмотров: 8044
Задумался, как сделать простейший поиск по текстовым файлам.
Допустим, статьи хранятся в каталоге в отдельных файлах.
Задача простая: ввели слово, получили вывод ссылок на страницы, где встретилось это слово.

Есть ли смысл сделать такой поиск с помощью php+grep ?
Или все-таки решить все это стандартными средствами php?
Буду благодарен за ссылку на обучающий мануал по созданию простого поиска.
black_ru Отправлено: 04 Июля, 2011 - 23:08:18 • Тема: Создание файлов • Форум: Напишите за меня, пожалуйста

Ответов: 9
Просмотров: 60
А все , осенило меня

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2.  
  3.  
  4. for ($n = 0; $n >= 0; $n++) {
  5.         if (file_exists('baza/'.$n.'.txt')) continue;
  6.  
  7.         break;
  8. }
  9.  
  10.  
  11. $pages_count = $n;
  12.  
  13. $current_page = (isset($_GET['page'])) ? $_GET['page'] : $pages_count-1;
  14.  
  15.  
  16.  
  17. switch($current_page) {
  18.    case $pages_count -1: {
  19.  $page_link = ($current_page == $pages_count) ? '' : '<a href="?page='.($current_page-1).'">Предыдущая страница</a>';
  20. break;
  21.    }
  22.    case '0': {
  23.  $page_link = ($current_page == $pages_count - 1) ? '' : '<a href="?page='.($current_page+1).'">Следующая страница</a>';
  24.  
  25. break;
  26.    }
  27.    default: {
  28.  $page_link = '<a href="?page='.($current_page-1).'">Предыдущая страница</a> | <a href="?page='.($current_page+1).'">Следующая страница</a>';
  29. break;
  30.    }
  31.  
  32. }
  33.  
  34.  
  35. $contents1 = file_get_contents('baza/'.$current_page.'.txt', true);
  36. print "<table width=70% align=center><td width=70%>$contents1</td></table>";
  37.  
  38.  
  39. echo "<center>$page_link</center> <a href=index.php>Главная</a>";
  40.  
  41.  
  42.  
  43. ?>
  44.  

Подставил вместо ноля $current_page; а потом ее же вывел в качестве переменной для файла Улыбка ну и тугодум же я... Саныч, Спасибо за помощь большое
black_ru Отправлено: 04 Июля, 2011 - 21:10:04 • Тема: Создание файлов • Форум: Напишите за меня, пожалуйста

Ответов: 9
Просмотров: 60
Саныч, пока меня не выгнали с форума, спрошу еще:
Нужно сделать переход по этим страницам, т.е. если отобразилась последняя, нажал на ссылку предпоследняя, Например, текущая на странице 9.dat нажал предыдущая 8.dat, 7.dat и т.д.
Пока не знаю как запомнить значение, пытаюсь переделать найденный в интернете код:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3.  
  4. for ($n = 0; $n >= 0; $n++) {
  5.         if (file_exists('baza/'.$n.'.txt')) continue;
  6. $n2=$n-1;
  7. $contents = file_get_contents('baza/'.$n2.'.txt', true);
  8. print "<table width=70% align=center><td width=70%>$contents</td></table>";
  9. echo "baza/'.$n2.'.txt'";
  10.         break;
  11. }
  12.  
  13. $pages_count = $n2;
  14. echo "$pages_count";
  15. $current_page = (isset($_GET['page'])) ? $_GET['page'] : $pages_count;
  16.  
  17. switch($current_page) {
  18.    case $pages_count -1: {
  19.  $page_link = ($current_page == 0) ? '' : '<a href="?page='.($current_page-1).'">Предыдущая страница</a>';
  20.  
  21. break;
  22.    }
  23.    case '0': {
  24.  $page_link = ($current_page == $pages_count - 1) ? '' : '<a href="?page='.($current_page+1).'">Следующая страница</a>';
  25.  
  26. break;
  27.    }
  28.    default: {
  29.  $page_link = '<a href="?page='.($current_page-1).'">Предыдущая страница</a> | <a href="?page='.($current_page+1).'">Следующая страница</a>';
  30.  
  31.    }
  32. }
  33.  
  34.  
  35. echo $page_link;
  36. ?>
  37.  
black_ru Отправлено: 04 Июля, 2011 - 16:39:30 • Тема: Создание файлов • Форум: Напишите за меня, пожалуйста

Ответов: 9
Просмотров: 60
А до меня дошло уже, так сделал:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. for ($n = 0; $n >= 0; $n++) {
  3.          if (file_exists($n.'.txt')) continue;
  4. $n2=$n-1;
  5.  
  6. $text_of_file=join(file($n2.'.txt'));
  7. $message_array=explode('<br>',$text_of_file);
  8. fclose( $file_handle);
  9. echo "$message_array";
  10. echo "$n2.'.txt'";
  11.          break;
  12. }
  13.  


Спасибо и вам.
black_ru Отправлено: 04 Июля, 2011 - 16:00:51 • Тема: Создание файлов • Форум: Напишите за меня, пожалуйста

Ответов: 9
Просмотров: 60
Саныч, спасибо.

Можно еще спрошу, а если нужно прочитать и последний созданный файл. Как быть?
black_ru Отправлено: 04 Июля, 2011 - 11:18:39 • Тема: Создание файлов • Форум: Напишите за меня, пожалуйста

Ответов: 9
Просмотров: 60
Если можно , пример . У меня получается либо рекурсивно создавать огромное число файлов, либо только два, т.е. инкремент происходит один раз.
black_ru Отправлено: 04 Июля, 2011 - 01:13:33 • Тема: Создание файлов • Форум: Напишите за меня, пожалуйста

Ответов: 9
Просмотров: 60
Подскажите, в учебных целях интересуюсь. Нужно php-скриптом создать файл с именем 0.dat, затем, при вторичном выполнении создать файл 1.dat и так далее.
Я так понимаю, нужно использовать file_exists и инкремент имени файла?!
black_ru Отправлено: 18 Октября, 2010 - 22:48:19 • Тема: Не могу понять в чём дело... • Форум: Программирование на PHP

Ответов: 22
Просмотров: 1172
А как тут использовать header для редиректа?
Сорри, что вымешиваюсь... ведь header, вроде, не срабатывает, если уже было echo... или нет?
black_ru Отправлено: 16 Октября, 2010 - 23:46:26 • Тема: Постраничная навигация • Форум: Программирование на PHP

Ответов: 7
Просмотров: 948
Код не мой, но думаю, автор простит, так как лицензия сродни GPL, но строк вроде меньше, хотя и реализация проще. Выдает "предыдущая", "следующая", также переход по номерам станиц в середине, который смело можно выкинуть или дописать. Улыбка
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?
  2.         $startpage=$_GET['page'];
  3.         $xnews=file(NEWS_FILE);
  4.         $xnews=array_reverse($xnews);
  5.         $startpage-=1;
  6.         $ubound=count($xnews);
  7.         if($startpage<0 || $startpage>=$ubound/PERPAGE) $startpage=0;
  8.         if (PERPAGE<$ubound)
  9.         if($startpage==0) echo "< previous | &nbsp;";
  10.         else    echo "< <a href=".$_SERVER['PHP_SELF']."?page=$startpage>previous</a> | &nbsp;";
  11. //Это
  12.         if($ubound>PERPAGE)
  13.         for($j=1;$j<=ceil($ubound/PERPAGE);$j++) {
  14.         if($j==$startpage+1)
  15.                 echo "$j &nbsp;";
  16.         else
  17.                 echo "<a href=".$_SERVER['PHP_SELF']."?page=$j>$j</a> &nbsp;";
  18.         }
  19. //Лишнее
  20.         if(PERPAGE<$ubound)
  21.         if($startpage+1>=$ubound/PERPAGE) echo "&nbsp; | next >";
  22.         else    echo "&nbsp; | <a href=".$_SERVER['PHP_SELF']."?page=".($startpage+2).">next</a> >";
  23.         for($i=$startpage*PERPAGE;$i<$startpage*PERPAGE+PERPAGE && $i<$ubound;$i++)
  24.         {
  25.         if(ENCODING=='yes') $xnews[$i]=base64_decode($xnews[$i]);
  26.         $crtsplit="";
  27.         $crtsplit=explode("%~#",$xnews[$i]);
  28.         echo "<table border=\"1\" cellspacing=\"0\"><tr><td width=\"1000\" bgcolor=\"#CCCCCC\"><font color=\"0033CC\">$crtsplit[1] - posted on <b>$crtsplit[0]</b></font></td></tr>";
  29.         echo "<br><tr><td>$crtsplit[2]";
  30.         echo "</td></tr></table>";
  31.         }
  32. echo "<font size=\"1\">news powered by <a href=\"http://www.planetsourcecode.com/vb/scripts/ShowCode.asp?txtCodeId=1034&lngWId=8\"> phpZvon 1.2</a> - copyright (c)2003 Andrei Besleaga</font>";
  33.  
  34. ?>
black_ru Отправлено: 15 Октября, 2010 - 15:35:57 • Тема: Простой движок новостной на файлах • Форум: Программирование на PHP

Ответов: 1
Просмотров: 402
Давно интересуюсь, но из тех, что находил, одни либо слишком навороченные, либо недоделанные. Даже сложилось ощущение, что авторы начинают изучение php с написания такого движка, на середине понимают, что бд лучше и бросают, переходят на mysql. Я тоже решил попробовать, так как пока тоже новичок... не могу сказать, что получается сделать так как хотелось... вернее, пока есть только идея.
Хочу поделится, потому что может у кого-то есть похожие идеи, реализованные или в стадии. Пока получилось так:
файл config.php (пароли и имя пользователя)
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. define ("username", admin, true);
  3. define ("password", 123, true);
  4. ?>
  5.  


Файл adminka.php
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. include 'config.php';
  3. //Контрольный вопос
  4. $askss = array( 'В каком году основан город Москва?'=>'1147',
  5. 'Как называется наша планета?'=> 'Земля', 'Кто светит нам утром в окно?'=> 'Солнце');
  6. $fraf = array_rand($askss);
  7. if (isset($askss[$_GET['ques']]) && $askss[$_GET['ques']] == $_GET['thekey']) {
  8. chkod ();
  9. } else {
  10. echo "<p align=center><b>Следует правильно ответить на контрольный вопрос<b></p>";
  11. }
  12.  
  13. //Проверка заполнены ли поля
  14. function chkod () {
  15. include 'confnews.php';
  16. if (($_GET[user_login]!='') && ($_GET[user_pass]!='')) {
  17. chus ();
  18. }else {
  19. }
  20.  
  21. }
  22.  
  23. //Проверка имени и пароля
  24. function chus () {
  25.  
  26. if (($_GET[user_login]!=username) || ($_GET[user_pass]!=password)) {
  27. echo "<b>Неудачно</b>";
  28. } else {
  29. echo "<b>Вы вошли в систему</b>";
  30. mkdirr ();
  31. }
  32. }
  33. //Функция проверки создания текущей папки (по году) для базы новостей
  34. function mkdirr () {
  35. $mkdrr="news/".date('Y')."/".date('n')."/";
  36. if (file_exists($mkdrr)) {
  37. addnew ();
  38. }
  39. else {
  40. mkdir("news/".date('Y')."/", 0755);
  41. mkdir("news/".date('Y')."/".date('n')."/", 0755);
  42. addnew ();
  43. }
  44. }
  45.  
  46. // добавление новостей
  47. function addnew () {
  48. echo "<form action method=post>
  49. Заголовок<br>
  50. <input type='headl' name='headl' value='' size='60' maxlength='200'><br
  51. Новость<br>
  52. <textarea name='text' rows='10' cols='60' value=''></textarea>
  53. <input type=submit name=sav value='добавить новость'>
  54. </form>";
  55. //Проверка заполнена ли  поля для предотвращения пустой отравки
  56. if (isset($_POST['sav'])) {
  57. postnew ();
  58. }
  59. else {
  60. echo "Not saved";
  61. }
  62. }
  63. //Сама отрправка
  64. function postnew () {
  65. $headl='news/'.date('Y').'/'.date('n')."/".date('d')." ".date('H').":".date('i')." ".htmlspecialchars($_POST['headl'].":" );
  66. $text=($_POST['text']);
  67. if (($_POST['text'] = '') || ($_POST['headl'] = ''))  {
  68. echo "Не заполнены поля";
  69. }
  70. else {
  71. $f=fopen($headl, 'a+');
  72. fwrite($f, $text);
  73. fclose($f);
  74. }
  75.  
  76. }
  77.  
  78. echo "<br>Новости <br><form action method=GET>
  79. <input type=text name='user_login' size='10' maxlength='30' value=''>
  80. <input type=password name=user_pass size=10 maxlength=15 value=''>";
  81. echo "<table width=350><tr><td width=350>$fraf</td></tr></table>";
  82. echo "<br><input type='hidden' name='ques' value='".($fraf)."' size=50>
  83. <input type='text' name='thekey' value=''></br>
  84. <input type='submit' size=8 value=Войти>
  85. </form>";
  86.  
  87. ?>

(Добавление)
С выводом новостей мне менее всего понятно... пока сделал так, что новости выводятся только за один месяц,
в случае отсутствия новостей, выводятся за предыдущей, далее не выводятся (я сделал так с учетом того, что новости пишутся не чаще одного раза в день в небольшом объеме)
Простейший поиск тоже сделал, а также вывод по месяцам за текущий год, но проблема возникла, когда я подумал о нормальной пагинации, честно говоря не появилось идей, как уже с учетом такого вывода реализовать человеческий постраничный вывод.
Да, чуть не забыл, заголовок новости - это имея файла с прилепленной к нему датой, что избежать совпадений имен.

файл news.php
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. //Функция вывода(поиска) по году и дате
  4. function letop () {
  5. $ddta=($_GET['letop']);
  6. $mdir="news/";
  7. $slsh="/";
  8. $ldir="/*";
  9. $arFiless = glob($mdir.$ddta.$ldir);
  10. krsort($arFiless);
  11. foreach($arFiless as $filenam) {
  12. echo "<p align=left><br></br>";
  13. echo "<b>$filenam</b>";
  14. echo $filenam . "\n";
  15. echo "</a>";
  16. $homm = file_get_contents($filenam);
  17. echo "<br>$homm";
  18. }
  19. }
  20.  
  21. $month = array( 1=>'Январь', 2=>'Февраль', 3=>'Март', 4=>'Апрель', 5=>'Май', 6=>'Июнь', 7=>'Июль', 8=>'Август', 9=>'Сентябрь', 10=>'Октябрь', 11=>'Ноябрь', 12=>'Декабрь');
  22.  
  23. foreach ( $month as $k=>$v )
  24. {
  25.  
  26.   echo "<a href=?mn=$k> " .$v." </a>";
  27.  
  28. }
  29. //Вывод сообщений  (по текущему году и месяцу)
  30.  
  31. $mdir="news/";
  32. $slsh="/";
  33. $datty=date('Y');
  34. $dattm=date('n');
  35. $ldir="/*";
  36. $arFiles = glob($mdir.$datty.$slsh.$dattm.$ldir);  
  37. krsort($arFiles);
  38. foreach($arFiles as $filename) {
  39. echo "<p align=left><br></br>";
  40. echo "<b>";
  41. echo $filename . "\n";
  42. $hom = file_get_contents($filename);
  43. echo "</b><br>$hom";
  44. }
  45. //Проверка, надены ли файлы за текущий год и месяй, если нет вывод за прошлый
  46. if (!file_exists($filename)) {
  47. $mindat=--$dattm;
  48. $arFiless = glob($mdir.$datty.$slsh.$mindat.$ldir);
  49. krsort($arFiless);
  50. foreach($arFiless as $filenam) {
  51. echo "<p align=left><br></br>";
  52. echo "<b>";
  53. echo $filenam . "\n";
  54. $hom = file_get_contents($filenam);
  55. echo "</b><br>$hom";
  56. }
  57. }
  58. //Поиск за прошлый год, если новостей нет за январь (не очень удачный вариант, вероятно)
  59. if (($dattm < "2") && (!file_exists($filename))) {
  60. $mingod=--$datty;
  61. $arFiless = glob($mdir.$mingod.$slsh."12".$ldir);
  62. krsort($arFiless);
  63. foreach($arFiless as $filenam) {
  64. echo "<p align=left><br></br>";
  65. echo "<b>";
  66. echo $filenam . "\n";
  67. $hom = file_get_contents($filenam);
  68. echo "</b><br>$hom";
  69. }
  70. }
  71.  
  72. echo "<form action method='get'>
  73. <p align=left> Введите год и месяц:
  74. <input type='letop' name='letop' value='2010/01'><input type='submit' value='искать в новостях'></form>";
  75. if (isset($_GET['letop'])) {
  76. letop ();
  77. }
  78.  
  79. //Вывод по месяцам
  80. if (isset($_GET['mn'])) {
  81. echo "Архивные записи...";
  82. $kb=($_GET['mn']);
  83. $mdirr="news/";
  84. $datty1=date('Y');
  85. $dattm=date('n');
  86. $slsh="/";
  87. $ldirr="/*";
  88. $arFilesss = glob($mdirr.$datty1.$slsh.$kb.$ldirr);
  89. krsort($arFilesss);
  90. foreach($arFilesss as $filenamm) {
  91. echo "<p align=left><br></br>";
  92. echo "<b>$filenamm</b>";
  93. echo $filenamm . "\n";
  94. echo "</a>";
  95. $hommm = file_get_contents($filenamm);
  96. echo "<br>$hommm";
  97. }
  98. }
  99. ?>

В общем буду рад критике, предложениям, идеям, особенно касательно постраничного вывода и т.д.
black_ru Отправлено: 15 Октября, 2010 - 13:57:22 • Тема: Поясните про декремент • Форум: Программирование на PHP

Ответов: 7
Просмотров: 595
JustUserRа это не связано с тем, что числа нчиинающиеся с 0 считаются октальными?
black_ru Отправлено: 14 Октября, 2010 - 12:24:03 • Тема: Поясните про декремент • Форум: Программирование на PHP

Ответов: 7
Просмотров: 595
garvey пишет:
Viper привел вам функцию, которая избавит вас от декремента. Natural order отсортирует так как надо. Вы бы хоть почитали по ссылке информацию, которую вам предоствил Viper.

я прочитал про natsort, но я же написал, с сортировкой все в порядке. Видимо, я неточно сформулировал вопрос, но в любом случае проблема решена.
black_ru Отправлено: 14 Октября, 2010 - 11:35:08 • Тема: Поясните про декремент • Форум: Программирование на PHP

Ответов: 7
Просмотров: 595
[quote=Viper][/quote]
Нет, я не об этом, сортировка происходит правильно, не срабатывал нужным образом именно декремент по месяцу
например, если делать так:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $dattm=date('m');
  2. $decrdatt=--$dattm;

Просто я ожидал, что декрементирование, например от 10 месяца будет 09, ведь используется m, получается, а при операции декрментирования в переменной уже не 09, а 9, (что, видимо, логично, так как переменная уже просто целое число) нужно использовать n в этом случае.

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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB