PHP.SU

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

Страниц (70): В начало « ... 58 59 60 61 [62] 63 64 65 66 ... » В конец

> Найдено сообщений: 1045
dcc0 Отправлено: 07 Сентября, 2014 - 10:42:12 • Тема: Как написать этот цикл? • Форум: Вопросы новичков

Ответов: 2
Просмотров: 103
PHP:
скопировать код в буфер обмена
  1. $arr=array('0', '1', '0', '1');
  2. foreach($arr as $v) {
  3. if($v==='1') {
  4. echo $v;
  5. break;
  6. }
  7. }
dcc0 Отправлено: 07 Сентября, 2014 - 09:34:10 • Тема: Парсер "скобок" • Форум: Вопросы новичков

Ответов: 4
Просмотров: 285
Проснулся я сегодня утром и сразу вспомнил ваш вопрос и понял, что не очень решение я вам подсказал с заменой. strtr должна быстрее работать, но все равно от количества данных зависит и задач:

PHP:
скопировать код в буфер обмена
  1. $arr  = "{Пошёл Вася {в клуб {тусить|бухать}|в лес {по грибы|по ягоды}}|Сеня скрывается {от ментов {за грабеж|за нападение}|от прокуратуры {за неуплату налогов|за дело}}}";
  2. $change = array("}}|" => "}+{");
  3. $out1 = strtr($arr, $change);
  4. $out = explode("+", $out1);
  5. print_r($out);

(Добавление)
vestmar пишет:
теперь самое сложное) имеет цифру "1886153900" возможно опираясь на неё выбрать

О каких цифрах вы говорите?
Если у вас цифры в кавычках, а в других единицах массива больше нет кавычек, то можете опираться на кавычки, или если есть пробел перед кавычкой, то у вас есть ориентир -пробел, кавычка за ней цифра.
dcc0 Отправлено: 06 Сентября, 2014 - 22:04:19 • Тема: Парсер "скобок" • Форум: Вопросы новичков

Ответов: 4
Просмотров: 285
Есть же очевидный разделитель. Две скобки фигурные:
Или надо сохранить все скобки?
PHP:
скопировать код в буфер обмена
  1.  
  2. $pizza  = "{Пошёл Вася {в клуб {тусить|бухать}|в лес {по грибы|по ягоды}}|Сеня скрывается {от ментов {за грабеж|за нападение}|от прокуратуры {за неуплату налогов|за дело}}}";
  3. $out = preg_replace("/\}\}\|/", "} + {", $pizza);
  4. $pieces = explode(" + ", $out);
  5. print_r($pieces);
  6.  


Если фигурные скобки значения не имеют, то так:
PHP:
скопировать код в буфер обмена
  1. <?
  2. $pizza  = "{Пошёл Вася {в клуб {тусить|бухать}|в лес {по грибы|по ягоды}}|Сеня скрывается {от ментов {за грабеж|за нападение}|от прокуратуры {за неуплату налогов|за дело}}}";
  3. $pieces = explode("}}|", $pizza);
  4. print_r($pieces);
  5. ?>
dcc0 Отправлено: 06 Сентября, 2014 - 20:41:40 • Тема: php mysql • Форум: Работа с СУБД

Ответов: 19
Просмотров: 2607
Непонятно, в чем загвоздка:

PHP:
скопировать код в буфер обмена
  1.  
  2. <form method="post">
  3.  <input type="text" name="firstname" >
  4.    <input type="submit" name="check" >
  5.      </form>  
  6.  
  7.  $firstname=$_GET['firstname'];
  8.        
  9. $result = mysql_query("select * from  data_table where firstname like '%$firstname%' limit 1") or die('error!');
  10.  
  11. while ($row = mysql_fetch_array($result)) {
  12.  
  13.                  echo $row['lastname'];
  14.  
  15.  }
dcc0 Отправлено: 06 Сентября, 2014 - 20:05:20 • Тема: Сделать защиту или что-то в этом смысле • Форум: Вопросы новичков

Ответов: 6
Просмотров: 253
Считаю, что нет особенного смысла что-то писать на php для ограничений пока не настроен сервер. Т.е. большую часть защиты нужно выстроить именно средствами сервера. А это iptables, netfilter
По вопросу: можно запоминать в файле в одной строке адрес хоста, в другой счетчик, дату прихода. Сравнивать текущую и и прошлую, если расхождения менее 1 минуты и счетчик при этом больше 10, то заносить адрес во временный файл для блокировки.
Но... все это не нужно, потому что это лишние операции и вычисления.
dcc0 Отправлено: 06 Сентября, 2014 - 19:42:06 • Тема: Перезагрузка страницы с сохранением значений • Форум: Вопросы новичков

Ответов: 1
Просмотров: 206
Мда, что-то я пересидел с другим кодом, стал изобретать обманки-велосипеды и обманул сам себя.
Суть-то сводилась к этому:

Спойлер (Отобразить)
dcc0 Отправлено: 06 Сентября, 2014 - 18:41:47 • Тема: Сделать защиту или что-то в этом смысле • Форум: Вопросы новичков

Ответов: 6
Просмотров: 253
Можно ограничить кол-во соединений с одного хоста.
iptables
http://feyhoa[dot]org[dot]ua/archives/866
dcc0 Отправлено: 06 Сентября, 2014 - 17:05:11 • Тема: Перестановки алфавита без рекурсии. Без массивов. PHP • Форум: Хранение данных, их вывод и обработка

Ответов: 4
Просмотров: 2651
Ребята, если кому-то будет интересна эта тема, вот мои наработки.
Пока, вроде, получилось. Правда, есть ограничение на генерируемые размещения.
Собственно, заметка о том, как превратить размещения в перестановки.

Все алгоритмы, которые я встречал в Интернете на ключевые слова "перестановки и permutations" мне показались сложными для понимания. Заодно отталкивает использование рекурсии. Работая над другим скриптом, пришел к следующему выводу.
Чтобы получить все перестановки, которые, как известно, равны факториалу n!,
сначала надо получить все размещения с повторениями. Мной был найден такой скрипт и несколько переделан, взят с hashcode, автора не помню.
Мы генерируем все размещения в данном случае 4-х элементов - abcd. Для этого используется цикл до 4 в степени 4 (все размещения с повторением). Данные преобразуются в четверичную систему, дописываются нули слева. Затем с помощью strtr преобразование в abcd. Вот, с первым скриптом все.

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. /*Cоздать файл с набором алфавита. Исходный скрипта взят с hashcode*/
  3.  $handle = fopen("f.txt", "w");
  4. $a=-1;
  5. while(++$a<256) {
  6.    $c=str_pad(base_convert($a, 10, 4), 4, "0", STR_PAD_LEFT);
  7.  $b=strtr($c, "0123", "abcd");
  8. fwrite($handle, "$b\r\n");      
  9. }
  10.  fclose($handle);
  11.  ?>
  12.  


А дальше?! Надо удалить из всех размещений каждую строку, в который символ повторяется. Второй скрипт читает из файла f.txt построчно, проверяет количество одного символа в строке и записывает в промежуточный файл только те строки, в которых символ один. Когда цикл переберет все записи на одну букву, подставит другую. Первый цикл - перебора массива - будет иметь столько итераций, сколько всего букв в алфавите, т.е. n. Иначе говоря, есть abcd - 4 буквы, у цикла перебора массива будет 4 итерации.
Промежуточные вычисления записываются в дополнительный файлы, потом файлы удаляются и переименовываются.

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. /*Входной алфавит*/
  4.  $arr = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h');
  5.  
  6. /*Количество символов*/
  7. $n=3;
  8. /*Перебор. Сброс на последнем символе*/
  9. foreach($arr as $k => $v) {
  10.     if($k==$n) {
  11.   break;
  12.  }
  13.  $handle = fopen("f.txt", "r");
  14.     $handl1 = fopen("f1.txt", "w");
  15.  /*Читаем из файла по строчно*/        
  16. while (!feof($handle)) {
  17.   $buffer = fgets($handle);
  18.  
  19.    /*Если символ встречается 1 раз пишем в другой файл. Переменная - шаблон
  20.    подставляется из цикла сверху*/     
  21. $c = preg_match_all("/$v{1}/",  $buffer, $out);
  22. if($c==1) {
  23. fwrite($handl1, "$buffer");
  24.  }
  25. }
  26.  fclose($handle);
  27. fclose($handl1);
  28. /*Переименовываем все файлы, удалем промежуточные*/
  29.  rename("f.txt", "old1_f.txt");
  30.   unlink ("old1_f.txt");
  31. rename("f1.txt", "f.txt");
  32. }
  33. $c=file('f.txt');
  34. print_r($c);
  35. ?>
  36.  
dcc0 Отправлено: 06 Сентября, 2014 - 01:21:10 • Тема: Перезагрузка страницы с сохранением значений • Форум: Вопросы новичков

Ответов: 1
Просмотров: 206
Дикая вещь. Если можно перезагружать страницу, но нужно выполнить скрипт по нажатию на ссылку или на кнопку. Правилен ли мой ход рассуждений?
Вводим данные, нажимаем, перезагружаем страницу, сохраняем введенные данные и выполняем единожды вложенный сценарий php. Переменные при этом сохраняются.
Т.е.:
1. сначала загружается код до условия и код после else
2. По нажатию выполняется условие.
3. Включается файл
4. Затем выгружается та же форма с введенными полями.

Тестирования ради:


1.php
CODE (php):
скопировать код в буфер обмена
  1.  
  2.  <?php
  3.  
  4.  
  5.    if(isset($a)) {
  6.    
  7.         require_once '2.php';
  8.  
  9.   echo   "<form method=\"post\">
  10.  <input type=\"text\" name=\"user\" value=\"$user\">
  11.   <input type=\"text\" name=\"password\" value=\"$password\">
  12.   Try for 30 times
  13.         <input type=\"text\" name=\"countt\" value=\"$countt\">
  14.         <input type=\"submit\" name=\"a\" ></form>";
  15.    
  16.  
  17.    
  18.   } else {
  19.   $countt=0;
  20.   echo   "<form method=\"post\"><input type=\"text\" name=\"user\">
  21.                   <input type=\"text\" name=\"password\">
  22.                    <input type=\"submit\" name=\"a\" ></form>";
  23.   }
  24.   ?>
  25.  
  26.  


2.php

CODE (php):
скопировать код в буфер обмена
  1.  
  2. <?
  3. echo 'Some code';
  4.  if($password==="123" && $user==="admin") {
  5. echo "That's ok";
  6. ++$countt;
  7. }
  8. else {
  9. ++$countt;
  10. echo "Nothing done";
  11.  
  12. }
  13. if($countt==3) {
  14.  
  15. echo " <strong>You have done it!</strong>";
  16.  
  17. }
  18.  
  19. if($countt==5) {
  20.  
  21. echo " <strong>You have done it Again!</strong>";
  22.  
  23. }
  24.  
  25. if($countt==8) {
  26.  
  27. echo " <strong>Very well!</strong>";
  28.  
  29. }
  30. ?>
  31.  
dcc0 Отправлено: 05 Сентября, 2014 - 23:39:36 • Тема: Удалить похожие (не идентичные) строки из файла • Форум: Вопросы новичков

Ответов: 5
Просмотров: 296
PakaKepstr Не за что.
В завершение хочу сказать, что поиск и удаление пустых строк - это все еще открытая проблема. Я считаю, что решать ее надо по другому, но пока не знаю, как.

Для себя недавно заметил, что написание псевдокода на русском языке сильно облегчает решение. Т.е. я вообще тоже обычно пишу на бумаге и считаю этот подход верным, но это обычно выглядит не как алгоритм, а как последовательные рассуждения. А далее, мне помогает написание уже алгоритма, но на русском, типа:
Переменная1=тому-то
Цикл (условие )
и т.д.

Удачи вам ваших творческих поисках!
dcc0 Отправлено: 05 Сентября, 2014 - 21:52:07 • Тема: Удалить похожие (не идентичные) строки из файла • Форум: Вопросы новичков

Ответов: 5
Просмотров: 296
Промежуточные размышления. Можно не читать:

Спойлер (Отобразить)

(Добавление)

Итог всей эпопеи.

У нас есть файл f.txt. В нем есть пустые и повторяющиеся строки:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. 1234567
  3.  
  4. 1234567
  5.  
  6. 1234567
  7. 1234567
  8. asdfghj
  9.  



Скрипт, который ниже под спойлером, приведет его к виду:




Сам скрипт:

Спойлер (Отобразить)

(Добавление)
Последний нюанс. Если у нас файл f.txt такого вида:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. 123456
  3.  
  4. 123456
  5.  
  6. 123456
  7. asdfghj
  8. 123456
  9.  


то преобразование будет таким:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. 123456
  3. asdfghj
  4. 123456
  5.  

Так как сравниваются только ближайшие строки. Все, вроде бы...
dcc0 Отправлено: 05 Сентября, 2014 - 18:57:16 • Тема: Удалить похожие (не идентичные) строки из файла • Форум: Вопросы новичков

Ответов: 5
Просмотров: 296
Вроде работает:
PHP:
скопировать код в буфер обмена
  1.   $handle = fopen("f.txt", "r");
  2.     $handl1 = fopen("f1.txt", "w");
  3.  
  4. while (!feof($handle)) {
  5.     $buffer = fgets($handle);
  6.        
  7.  $buffer2 = fgets($handle);
  8.  
  9.   $a=substr($buffer, 0, 10);
  10.    $b=substr($buffer2, 0, 10);
  11.    
  12. if($a!==$b) {
  13. echo "$a not equal $b";
  14. fwrite($handl1, "$buffer");
  15.  fwrite($handl1, "$buffer2");
  16. }
  17. else {
  18.  fwrite($handl1, "$buffer");
  19. }
  20.  
  21.    }
  22.  fclose($handle);
  23. fclose($handl1);
  24.  
  25. ?>
  26.  


Т.е., допустим, строки в файле идут так:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. url.com/123/ree3
  3. url.com/123/ree4
  4. Something else
  5. else Something
  6.  

Вырежет вторую строку.
За один проход уберет 1 строку, но ты сам просил:
Цитата:
с сохранением 1 строки,
Улыбка

Опционально добавляем переименование:
PHP:
скопировать код в буфер обмена
  1.  rename("f.txt", "old_f.txt");
  2. rename("f1.txt", "f.txt");
  3.  


Идея заключается в том, чтобы читать из одного файла дважды. Две переменные в цикле, одна "отстает" от другой, обе обрезаются до 10 символов и сравниваются. Запись происходит в другой файл, потом можно переименовать...
Я мог ошибиться, надо тестировать еще.
(Добавление)
Собственно вот. И здесь уже можно выбрать, что писать в файл после else, buffer или buffer2,
т.е. либо четные, либо нечетные строки.

Но только пока не учел, что между строк могут быть пустые строки. Т.е если файл такой:

CODE (htmlphp):
скопировать код в буфер обмена
  1. url.com/123/ree1
  2. url.com/123/ree3
  3. цйуйцлроу
  4. 12341234
  5.  
  6. йцдвово
  7. 123213



Первым проходом цикле можно удалить пустые стоки.
dcc0 Отправлено: 05 Сентября, 2014 - 16:22:54 • Тема: php mysql • Форум: Работа с СУБД

Ответов: 19
Просмотров: 2607
Что-то вроде:
PHP:
скопировать код в буфер обмена
  1. select * from  table where text like '%$search%'

Смотри лучше документацию по mysql той версии, с которой работаешь.
dcc0 Отправлено: 05 Сентября, 2014 - 16:14:14 • Тема: php mysql • Форум: Работа с СУБД

Ответов: 19
Просмотров: 2607
Ты открываешь страницу, скрипт срабатывает, но данных в этих переменных еще нет, поэтому ты получаешь предупреждение, вернее, указание.
В итоге тебе нужна проверка.
Примерно так:


PHP:
скопировать код в буфер обмена
  1. $firstname = $_POST['firstname'];
  2. $lastname = $_POST['lastname'];
  3. $keywords = $_POST['keywords'];
  4.  
  5.   if (isset($_POST['firstname']) && ($firstname!='' )) {
  6. $con=mysql_connect("localhost","root","");
  7. if (!$con) {
  8. die('Could not connect: ' . mysql_error());
  9. }
  10. $select_db = mysql_select_db("new_db")
  11. or die("Could not select database");
  12.  
  13.  
  14.  
  15. mysql_query("INSERT INTO data_table (firstname, lastname, keywords) VALUES ('" . $firstname . "', '" . $lastname . "', '" . $keywords . "')");
  16. }
  17. ?>
  18.  
dcc0 Отправлено: 05 Сентября, 2014 - 16:04:59 • Тема: php mysql • Форум: Работа с СУБД

Ответов: 19
Просмотров: 2607
cut

Страниц (70): В начало « ... 58 59 60 61 [62] 63 64 65 66 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB