PHP.SU

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

Страниц (59): В начало « ... 43 44 45 46 [47] 48 49 50 51 ... » В конец

> Найдено сообщений: 881
Vladimir Kheifets Отправлено: 13 Апреля, 2018 - 08:25:27 • Тема: отсортировать диапазон ip • Форум: Вопросы новичков

Ответов: 4
Просмотров: 223
савелей пишет:
Привет всем,
у меня просьба, помогите отсортировать IP диапазоны,
нужно из списка вида:
44.202.254.0
44.202.254.0
44.202.255.0
.................
получить список:
44.202.254.0
44.202.255.0
.....................
прошу помогите, буду благодарен любой информации..

Привет!
Как я понял Вам нужно Выбрать из списка уникальные адреса.
Можно сделать так:
PHP:
скопировать код в буфер обмена
  1. $ip=['44.202.254.0',
  2. '44.202.254.0',
  3. '44.202.255.0',
  4. '22.160.84.0',
  5. '22.160.85.0',
  6. '22.160.86.0',
  7. '22.160.86.0',
  8. '22.160.87.0'];
  9.  
  10. $res= array_unique ( $ip ,  SORT_STRING  );
  11. foreach($res as $v) echo "$v<br>";
  12.  
  13. /*
  14. Результат:
  15. 44.202.254.0
  16. 44.202.255.0
  17. 22.160.84.0
  18. 22.160.85.0
  19. 22.160.86.0
  20. 22.160.87.0
  21. */

Удачи!
Vladimir Kheifets Отправлено: 12 Апреля, 2018 - 19:47:22 • Тема: пишет ошибку • Форум: Объектно-ориентированное программирование

Ответов: 2
Просмотров: 1645
Добрый вечер! У Вас второй параметр в explode массив.
Нужно убрать скобки:

Удачи!
Vladimir Kheifets Отправлено: 12 Апреля, 2018 - 13:10:55 • Тема: ошибка в пхп объясните • Форум: Вопросы новичков

Ответов: 7
Просмотров: 352
php2 пишет:
а где мне ту директорию взять

Добрый день! Из Вашего кода видно, что в директории, в которой работает PHP-скрипт
должна быть поддиректория "pics" и в ней должны быть jpg-файлы.
Если её нет, то нужно её создать и записать в неё файлы.
Так можно увидеть, есть ли у Вас поддиректория "pics" :
PHP:
скопировать код в буфер обмена
  1. $dh = new DirectoryIterator(dirname(__FILE__));  
  2. foreach( $dh as $file )
  3. {
  4.   echo "$file<br>";
  5. }

Удачи!
Vladimir Kheifets Отправлено: 11 Апреля, 2018 - 16:07:40 • Тема: ошибка в пхп объясните • Форум: Вопросы новичков

Ответов: 7
Просмотров: 352
php2 пишет:

................................ .....................
$dh = new DirectoryIterator( "pics" );
................................ .....................

Fatal error: Uncaught UnexpectedValueException: DirectoryIterator::__construct(pics,pics): �� ������ ����� �������� ����. ......

Добрый день! Что-то у Вас $dh = new DirectoryIterator( "pics" ) не хочет работать с директорией "pics"
Проверьте, если у Вас эта директория, открыт ли к ней доступ и попробуйте написать так:
PHP:
скопировать код в буфер обмена
  1. $dh = new DirectoryIterator(dirname(__FILE__)."/pics");

Удачи!
Vladimir Kheifets Отправлено: 11 Апреля, 2018 - 08:00:32 • Тема: Не работает foreach() • Форум: Вопросы новичков

Ответов: 5
Просмотров: 332
Srthmnt пишет:
foreach($data as $line)
{
}
В чём причина?
Код ошибки:
Warning: Invalid argument supplied for foreach() in index.php on line 4

Доброе утро! Вообщем-то в причине этой ошибки разобрались.
На всякий случай, нужно иметь ввиду, что в качестве первого параметра foreach может быть задан не только массив, но и объект.
В том случае, если, как у Вас, должен быть массив, но по какой-то причине он там не оказывается можно избежать проблем используя is_array или (array)$data
PHP:
скопировать код в буфер обмена
  1. $data =[1,2,3];
  2. var_dump($data);
  3. echo "<hr>";
  4. foreach ($data as $line)
  5. {
  6.     echo  "$line<br>";
  7. }
  8. echo "<hr>";
  9. $data = 1;
  10. var_dump($data);
  11. echo "<hr>";
  12. foreach ((array)$data as $line)
  13. {
  14.     echo  "$line<br>";
  15. }
  16. echo "<hr>";
  17. if(is_array($data))
  18. {
  19.         foreach ($data as $line)
  20.         {
  21.             echo  "$line<br>";
  22.         }
  23. }
  24.  
  25. /*
  26. Результат:
  27. array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }
  28. 1
  29. 2
  30. 3
  31. --------------------------------
  32. int(1)
  33. 1
  34. */
  35.  

Удачи!
Vladimir Kheifets Отправлено: 10 Апреля, 2018 - 15:45:02 • Тема: Не работает foreach() • Форум: Вопросы новичков

Ответов: 5
Просмотров: 332
Srthmnt пишет:
Код программы:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <title>ShT</title>
  2. <?php
  3. $data = fopen('data.txt', 'a+');
  4. foreach($data as $line){
  5. echo $line;
  6. echo "<br />";
  7. }
  8. ?>
  9. <meta http-equiv="refresh" content=3; url='https://ShT-com.000webhostapp.com/'>

, а точнее, эта часть:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. foreach($data as $line){
  3.  
  4. }
  5.  

. В чём причина?
Код ошибки:
Warning: Invalid argument supplied for foreach() in index.php on line 4

Добрый день! Почему не работает Вам объяснили. Если вместо
$data = fopen('data.txt', 'a+'); написать
$data = file('data.txt'); то будет работать.
Удачи!
Vladimir Kheifets Отправлено: 10 Апреля, 2018 - 09:28:49 • Тема: Скрипт формы заказа • Форум: Напишите за меня, пожалуйста

Ответов: 2
Просмотров: 65
supmener пишет:
Здравствуйте. Не завалялся ли у кого то скрипт или может видел кто в сети, для случая, когда к разным товарам на сайте есть кнопка «Заказать» и у неё в ссылке есть комментарий <!-- --> или у изображения с товаром (банера) прописан "alt". И надо чтобы при нажатии на ссылку или картинку со ссылкой текст передавался в заголовок формы заказа. Например скрытый текст "Заказ игрушки розового хомячка" передаётся в заголовок формы заказа, чтобы покупателю не надо было самостоятельно заполнять это поле.

Здравствуйте. Случайно не завалялся. Попробуйте JS функцию SetStrToObj(id,str)
CODE (javascript):
скопировать код в буфер обмена
  1. <script>
  2.         function SetStrToObj(id,str){
  3.                 obj = document.getElementById(id);                     
  4.                 if(obj)
  5.                 {
  6.                         if(obj.type=="text")
  7.                         {
  8.                                 obj.value=str;
  9.                         }
  10.                         else
  11.                         {                              
  12.                                 obj.innerHTML=str;
  13.                         }
  14.                 }      
  15.         }      
  16. </script>

Параметры:
id - объекта, в который должен вставляться техт - input или id html объекта
str - вставляемый текст

Пример использования:
CODE (html):
скопировать код в буфер обмена
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <script>
  5.         function SetStrToObj(id,str){
  6.                 obj = document.getElementById(id);                     
  7.                 if(obj)
  8.                 {
  9.                         if(obj.type=="text")
  10.                         {
  11.                                 obj.value=str;
  12.                         }
  13.                         else
  14.                         {
  15.                                 alert(obj);
  16.                                 obj.innerHTML=str;
  17.                         }
  18.                 }      
  19.         }      
  20. </script>
  21. <title>Test</title>
  22. </head>
  23. <body>
  24. <a  href="#" onclick="SetStrToObj('t1','Заказ игрушки розового хомячка')" >Заказ</a>
  25. <img src="xxx.gif"  name="test"  onclick="SetStrToObj('t2','Заказ игрушки розового хомячка')" />
  26. <span id="t1"></span>
  27. <form>
  28. <input name="t2"  id="t2"  type="text" />
  29. </form>
  30. </body>
  31. </html>

Удачи!
Vladimir Kheifets Отправлено: 08 Апреля, 2018 - 11:46:07 • Тема: В цикле foreach получаю только последнюю запись массива • Форум: Вопросы новичков

Ответов: 3
Просмотров: 570
t3dev пишет:
Все добрый день. Я использую следующий код для вывода объектов с массивом значений. Всё работает почти правильно, но в последнем цикле я получаю только последнюю запись массива. Подскажите пожалуйста, что не так?


Добрый день!
См. ниже. Значение $items определяется в 1 стр., массив $childClassesObj в 6 стр. Для чего нужна в цикле foreach($childClassesObj as $code) строка $items->setChildClasses($childClassesObj)?
PHP:
скопировать код в буфер обмена
  1. foreach ($classItems as $i => $items)
  2. {
  3.         $childClassesArray = explode(", ", $items->getSubClasses());
  4.         foreach ($childClassesArray as $childClassesCodes)
  5.         {
  6.                 $childClassesObj = explode(",", $childClassesCodes);
  7.                 foreach($childClassesObj as $code)
  8.                 {
  9.                     ..................
  10.                     ..................
  11.                     $items->setChildClasses($childClassesObj);
  12.                 }    
  13.         }  
  14. }

Удачи!
Vladimir Kheifets Отправлено: 01 Апреля, 2018 - 11:34:19 • Тема: расширенный поиск • Форум: Вопросы новичков

Ответов: 7
Просмотров: 356
Мелкий пишет:
Vladimir Kheifets пишет:
Вывод:
Ваше решение работает а четыре раза медленне моего

Внимательнее надо результаты сравнивать.
Если не придираться к самому измерению - то разница в 2,5 раза. Внимание на порядок величин.

Если придираться к измерению - единичное измерение будет сильно плавать. Необходимо повторять на значительном числе итераций.

И по существу - оба времени генерации SQL не имеют значения на фоне времени выполнения этого запроса, который в большинстве случаев даст гарантированный seqscan всей таблицы.

Согласен с Вами. Невнимательно сравнил резудьтат и измерение будет сильно плавать, но вывод мой Вы процетировали не полностью:
Vladimir Kheifets пишет:
...В даном случае это не принципиально, но может плохо работать на больших объёмах данных.
Vladimir Kheifets Отправлено: 01 Апреля, 2018 - 09:14:46 • Тема: расширенный поиск • Форум: Вопросы новичков

Ответов: 7
Просмотров: 356
armancho7777777 пишет:
Vladimir Kheifets пишет:
PHP:
скопировать код в буфер обмена
  1. $condition_of_Query = preg_replace("/^\ OR\ /","",$condition_of_Query);

PHP:
скопировать код в буфер обмена
  1. $condition_of_Query = '1=1';
  2. if($vvAuthor!=''){
  3.     $condition_of_Query .= "OR Author LIKE '%$vvAuthor%'";
  4. }
  5. // ....

Или:
PHP:
скопировать код в буфер обмена
  1. $conditions = [];
  2.  
  3. if($vvAuthor!=''){
  4.     $conditions[] = "Author LIKE '%$vvAuthor%'";
  5. }
  6. // ...
  7. $condition_of_Query = join(' OR ', $conditions);


Добрый день!

1. Прежде всего, чтобы не запутать автора темы хочу отметить, что моё решение и Ваше выдаёт один и тот же результат.
2. Моё решение отличается тем, что я не использую массив и join, а просто сливаю строки.
3. Сравнение эффектвности:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $start = microtime(1);
  3. if(true)
  4. {
  5.         $condition_of_Query .= "Author LIKE '%$vvAuthor%'";
  6. }
  7. if(true)
  8. {
  9.         $condition_of_Query .= " OR Title LIKE '%$vvTitle%'";
  10. }
  11. if(true)
  12. {
  13.         $condition_of_Query .= " OR Fac LIKE '%$vvFac%'";
  14. }
  15. if(true)
  16. {
  17.         $condition_of_Query .= " OR Kaf LIKE '%$vvKaf%'";
  18. }
  19. if(true)
  20. {
  21.         $condition_of_Query .= " OR UGSN LIKE '%$vvUGSN%'";
  22. }
  23. if(teue)
  24. {
  25.         $condition_of_Query .= " OR Year LIKE '%$vvYear%'";
  26. }
  27. $condition_of_Query = preg_replace("/^\ OR\ /","",$condition_of_Query);
  28. echo $condition_of_Query."<br>";
  29.  
  30. $end = microtime(1);
  31. $time = $end - $start;
  32. echo $time."<hr>";      
  33. #############################################################
  34. $start = microtime(1);
  35. if(true)
  36. {
  37.         $conditions[] ="Author LIKE '%$vvAuthor%'";
  38. }
  39. if(true)
  40. {
  41.         $conditions[] ="Title LIKE '%$vvTitle%'";
  42. }
  43. if(true)
  44. {
  45.         $conditions[] ="Fac LIKE '%$vvFac%'";
  46. }
  47. if(true)
  48. {
  49.         $conditions[] ="Kaf LIKE '%$vvKaf%'";
  50. }
  51. if(true)
  52. {
  53.         $conditions[] ="UGSN LIKE '%$vvUGSN%'";
  54. }
  55. if(teue)
  56. {
  57.         $conditions[] ="Year LIKE '%$vvYear%'";
  58. }
  59. $condition_of_Query = join(' OR ', $conditions);
  60. echo $condition_of_Query."<br>";
  61. $end = microtime(1);
  62. $time = $end - $start;
  63. echo $time;
  64. ?>

Результат:
Author LIKE '%%' OR Title LIKE '%%' OR Fac LIKE '%%' OR Kaf LIKE '%%' OR UGSN LIKE '%%' OR Year LIKE '%%'
2.1934509277344E-5
-------------------------------- -------------------------------- -------------------------------- -----------
Author LIKE '%%' OR Title LIKE '%%' OR Fac LIKE '%%' OR Kaf LIKE '%%' OR UGSN LIKE '%%' OR Year LIKE '%%'
8.1062316894531E-6


Вывод:
Ваше решение работает а четыре раза медленне моего. В даном случае это не принципиально, но может плохо работать на больших объёмах данных.
Удачи!
Vladimir Kheifets Отправлено: 31 Марта, 2018 - 12:43:35 • Тема: расширенный поиск • Форум: Вопросы новичков

Ответов: 7
Просмотров: 356
ЛеваХФактор пишет:
Здравствуйте, подскажите пожалуйста, как сделать расширенный поиск, т.е учитывать несколько полей при поиске, а не одно, как реализовано у меня сейчас
if($vvAuthor!=''){
$condition_of_Query .= "Author LIKE '%$vvAuthor%'";
} else
if($vvTitle!=''){
$condition_of_Query .= "Title LIKE '%$vvTitle%'";
}else
if($vvFac!=''){
$condition_of_Query .= "Fac LIKE '%$vvFac%'";
}else
if($vvKaf!=''){
$condition_of_Query .= "Kaf LIKE '%$vvKaf%'";
}else
if($vvUGSN!=''){
$condition_of_Query .= "UGSN LIKE '%$vvUGSN%'";
}
else
if($vvYear!=''){
$condition_of_Query .= "Year LIKE '%$vvYear%'";
}
В данном примере, у меня идет поиск по полю в отдельности, как объединить в общий запрос. Поля равнозначны, и поиск можно вести по любому полю

Спасибо


Добрый день!
Если нужно проверять, что один из заданных фильтров совпадает, то можно сделать так:
PHP:
скопировать код в буфер обмена
  1. if($vvAuthor!='')
  2. {
  3.         $condition_of_Query .= "Author LIKE '%$vvAuthor%'";
  4. }
  5. if($vvTitle!='')
  6. {
  7.         $condition_of_Query .= " OR Title LIKE '%$vvTitle%'";
  8. }
  9. if($vvFac!='')
  10. {
  11.         $condition_of_Query .= " OR Fac LIKE '%$vvFac%'";
  12. }
  13. if($vvKaf!='')
  14. {
  15.         $condition_of_Query .= " OR Kaf LIKE '%$vvKaf%'";
  16. }
  17. if($vvUGSN!='')
  18. {
  19.         $condition_of_Query .= " OR UGSN LIKE '%$vvUGSN%'";
  20. }
  21. if($vvYear!='')
  22. {
  23.         $condition_of_Query .= " OR Year LIKE '%$vvYear%'";
  24. }
  25. $condition_of_Query = preg_replace("/^\ OR\ /","",$condition_of_Query);


Если требуется проверять совпадение всех фильтров, то вместо OR нужно поставить AND

Удачи!
Vladimir Kheifets Отправлено: 30 Марта, 2018 - 20:10:37 • Тема: Image информер на php(наложение текста из MySql) • Форум: Вопросы новичков

Ответов: 1
Просмотров: 95
samorez пишет:
Помогите примером вывода из таблицы текста на картинку /page/?id=1, Все огромное спасибо!
<a href="https://site/page/?id=1"><img src="https://site/page/?id=1" border="0"></a>

Добрый день!
Делается просто на CSS. Примеров много. Например, здесь:
http://www[dot]css-tricks[dot]ru/article[dot][dot][dot]locks-over-image
Удачи!
Vladimir Kheifets Отправлено: 30 Марта, 2018 - 11:56:59 • Тема: Как подставлять значения из массива,в форму и автоматически отправлять • Форум: Объектно-ориентированное программирование

Ответов: 4
Просмотров: 1637
Solomon пишет:

Спасибо большое!.Но я имел ввиду,не подставлять все элементы массива сразу.Например.у меня есть массив со значениями array('fisrt' => 'Your name', 'second' => 'Last anme'); и так дальше,и мне нужно,чтобы в форму подставлялось лишь одно значение из этого массива,если форма была отправлена успешно,то следующее и тоже отправить и т.д,пока не закончатся все элементы массива.я хотел сделать так,Через каждые 10 сек обновлять страницу,это можно сделать через ajax,потом проверять сколько раз было обновление и записывать это в переменную,потом по этой цифре брать нужный элемент из массива.Только я не понимаю ,как это сделать,вот,что я имел ввиду,но за этот пример все равно спасибо!

Добрый день!
Я видел, другую тему, которую Вы открыли про передачу значений переменных.
Вроде бы с этим Вы разобрались.
В данном случае Вам потребется завести переменную, например, indeх и передавать её через $_POST
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $index = isset($_POST['index'])?$_POST['index']:0;
  3. ................................
  4. ................................
  5. $index = $index++;
  6. ?>

p.s. смущает "если форма была отправлена успешно"... впрочем, в жизни всякое бывает...
Удачи!
Vladimir Kheifets Отправлено: 29 Марта, 2018 - 11:23:22 • Тема: Как подставлять значения из массива,в форму и автоматически отправлять • Форум: Объектно-ориентированное программирование

Ответов: 4
Просмотров: 1637
Solomon пишет:
Здравствуйте,возникла такая задача,имея,некий массив со значениями,подставлять их в форму,чтобы при этом форма автоматически отправлялась ,и бралось следующее значение из массива и тоже подставлялось.Подскажите,Кто-нибудь,как это можно реализовать на php и js.

Добрый день!
Я написал функцию ArrayToFormSubmit($FormId,$Action,$HiddenField)
PHP:
скопировать код в буфер обмена
  1. function ArrayToFormSubmit($FormId,$Action,$HiddenField){
  2. ?>
  3.     <form id="<?=$FormId?>" name="<?=$FormId?>" method="post" action="<?=$Action?>">
  4.     <?
  5.     foreach($HiddenField as $name=>$value)
  6.     {
  7.         ?>
  8.           <input type="hidden" name="<?=$name?>" value="<?=$value?>" />
  9.         <?
  10.     }
  11.     ?>
  12.     </form>
  13.     <script>
  14.     document.getElementById("<?=$FormId?>").submit();
  15.     </script>
  16.     <?
  17. }

Пример вызова:
PHP:
скопировать код в буфер обмена
  1. <html>
  2. <body>
  3. <?
  4. $FormId="test";
  5. $Action="test.php";
  6. $HiddenField=array("Field1"=>100,"Field2"=>200);
  7. ArrayToFormSubmit($FormId,$Action,$HiddenField);
  8. ?>
  9. </body>
  10. </html>


test.php
PHP:
скопировать код в буфер обмена
  1. <html>
  2. <body>
  3. <?PHP
  4. var_dump($_POST);
  5. ?>
  6. </body>
  7. </html>
  8.  

результ из test.php
PHP:
скопировать код в буфер обмена
  1. array(2) { ["Field1"]=> string(3) "100" ["Field2"]=> string(3) "200" }

Удачи!
Vladimir Kheifets Отправлено: 27 Марта, 2018 - 17:12:53 • Тема: Как ускорить работу вебсайта • Форум: Программирование на PHP

Ответов: 13
Просмотров: 1393
lerneree пишет:
1 конечно с каждым сайтом надо разбираться конкрентно. и все таки если компилировать php
и не использовать неэффективных кострукций то тормозит hdd
2 ваше мнение конкретно-согласны вы с тем что физичекское размещение таблиц имеет большое значение?
3 я программирую 42 года тогда диски были совчем меделлные.
однажды меня попросили учкорить программу которая работала сутки. у меня она работала 20 мин

Добрый день!
Согласен с Вами, что с каждым сайтом нужно разбираться и лучше не использовать в программировании неэффективные конструкции.
Относительно hdd, ssd, таблиц находящихся на разных цилиндрах, коромысла, которому приходится перемещаться...
Возможно, Вы правы, но к сожалению, даже самые замечательные идеи не всегда удаётся реализовать, потому,
что наши желания не всегда совпадают с нашими возможностями.
Специфика Веб-проектов состоит в том, что часто системы разрабатываются удалённо на серверах, на системную и техническую конфигурацию,
которых разработчики ПО влиять не могут.
Удачи!

Страниц (59): В начало « ... 43 44 45 46 [47] 48 49 50 51 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB