Здравствуйте, возникло затруднение с осуществлением цикла While. Делаю скрипт который должен по нажатию кнопки запустить цикл WHILE, а по нажатию другой кнопки, прекратить, в любой момент! Вот мои кнопки: Код (Text): <input class="start123" type="submit" value="НАЧАТЬ!!"> <input class="stop123" type="submit" value="ОСТАНОВИТЬ!!"> Вот скрипт нажатия: Код (Text): if(!isset($_POST['start123'])) { startcikl(); } Вот сам цикл: Код (Text): function startcikl() { while(true) { if(!isset($_POST['stop123'])) //из-за него не запускается ЦИКЛ!!!!!!! { break; //если нажали кнопку остановки, стоп скрипта } //тут функция которая будет выполнятся. } } Я гуглил: "Как сделать действие по нажатию кнопки... php..." Много расхождений, толи: "isset" функция, толи функция обратная "!isset", то вообще бредятина, вы уже мне помогите, и не забудьте про сами кнопки, там указан class, а не name! А сама проблема в том, что ставлю условие внутри цикла While и цикл не запускается. Пробовал делать отдельно скрипты нажатия кнопок, мол нажимается кнопка, дается значение переменной TRUE или FALSE, Global.... Но без успешно. Жду помощи! Скрипт запускаю с компьютера. DENWER. PHP последний) ну так на всякий... Заранее благодарю)
PHP выполняется на стороне сервера, браузер находится у клиента. К тому времени как вы тыкнули на кнопку скрипт уже давно помер.
1. php в денвере ни разу не последний. Ну так, на всякий. 2. скрипт должен работать в фоновом режиме чтоли? Я вот, например, не понимаю, как вы так хотите сделать. Вообще, саму суть. Насколько я знаю, при каждом обращении к скрипту создаётся новая копия его исполнения. А это значит, что первый раз запустив его, остановить его посылом дополнительных параметров вы уже не сможете, ибо они будут выполнены в новой копии. Напишите хоть, какую цель вы преследуете.
Во первых, по какой литературе идет изучение? Во вторых, что бы на сервер приходили данные отправленные из формы, т.е. что бы к ним можно было обратится через $_POST тегам должны быть заданы атрибуты name, т.е. в твоем говнокоде вот вообще ни когда не будет isset($_POST['stop123']) вот эта штука срабатывать, потому что ни когда не будет $_POST['stop123'], а что бы она появилась надо написать так: <input class="stop123" name="stop123" type="submit" value="ОСТАНОВИТЬ!!"> ну и + то, что тебе писали выше.
я так и думал что найдутся "умники" и "умницы", которые начнут "разглагольствовать", ребята вам завтра не в школу случаем? А теперь по теме, это часть скрипта, я новичок и спорить с вами не буду, я попросил помощи, но видимо не ее не получу, хуеплетов сброд вообще понимаете смысл и значение слова ФОРУМ?
Ты делаешь какую то хрень, не понятную, не логичную не выполнимую и бессмысленную, какую помощь ты хочешь получить? Если бы изучал по нормальной литературе, ты бы не делал такое, по этому самый дельный совет, смени литературу.
Я не читаю литературу, в плане изучения PHP, самоучка, объясняю: Скрипт PHP. Задача: Отправка автосообщений на игровой сервер (сама функция рабочая). -Сделать кнопки отключения и включения отправки сообщений (сообщения отправляются с помощью цикла While). Буду делать только через While. Проблематика: -Скрипт работает, цикл работает, но при попытке сделать кнопку отключения, а именно, постановку какого то условия внутрь самого цикла While, цикл не запускается. И по поводу: "в твоем говнокоде вот вообще ни когда не будет isset($_POST['stop123']) вот эта штука срабатывать, потому что ни когда не будет $_POST['stop123'], а что бы она появилась надо написать так: <input class="stop123" name="stop123" type="submit" value="ОСТАНОВИТЬ!!">" Я же написал что читал в интернете, ТАК И НЕ ПОНЯЛ КАК И ЧТО. Так как много разных способов, кто то пишет одно, кто то другое, по крайней мере через !isset у меня работает кнопка включения, кнопка указана выше! Так же я уточнил: "не забудьте про сами кнопки, там указан class, а не name!" Я изучал на протяжении 3-4 лет, какой-то "мутант" семейства BASIC (autoit) и C++ на игровом модуле Call of Duty, так сказать знаю принципы и какие-то базы имеются, php изучая около недели, так получилось. Именно по этому я уточнил каждую деталь в своем первом посте, на форумах не первый раз, видал и не такие ответы. (обратные назначению данного форума/сайта).
самоучка это как? для меня самоучка это тот, кто изучает сам по какой-либо литературе, а не самоучка этот кто обучается где то в институте / на курсах и т.д. Очень интересно как это можно изучать язык не по литературе? ну действительно интересно, это не сарказм, может есть познания в других ЯП? PS то, что ты делаешь реализовать на РНР не возможно. Добавлено спустя 6 минут 26 секунд: РНР это язык серверный, его задача сформировать страницу (HTML код) и отдать тебе его в виде файла, в момент его формирования остановить этот процесс описанным тобой способом не возможно. Представь автомат с кофе, ты бросил монету выбрал какой, все, процесс начался, началось его приготовление, ты уже ни чего поменять не можешь и получишь то, что заказал, в отличии допустим от того где тебе кофе готовит не автомат, а человек, примерно так же работает РНР. PS правда есть такой вариант, это сделать сторонний сайт, назовем его second, при каждом прохождении цикла твой цикл будет обращаться к second, а тот в свою очередь будет как раз предоставлять true OR false, продолжать работу или нет. но это должно неплохо затормозить твою рассылку, но можно не каждый раз обращаться к second, а допустим раз 10 или 100.
Опыт в других языках + доки по новому. Но при условии минимальной похожести. Добавлено спустя 2 минуты 3 секунды: Автору к ознакомлению: http://phpfaq.ru/na_tanke Собсно, сам с этого начинал после опыта десктопного программирования.
Я так понимаю, цикл While если начать не чем не остановить?? (Каким то действие) Просто можно сделать (как я считаю) некий счетчик: While(i<5) i+=1; Тогда цикл остановиться?? Когда i станет равным =5. VLK, ты что то писал про "...сайт second...", можно поподробнее?
Я понял что остановить можно, вы вообще читали мой пост сверху? ПРОБЛЕМА: ЕСЛИ СТАВЛЮ УСЛОВИЕ ПРИ КОТОРОМ ЦИКЛ WHILE ДОЛЖЕН ПРЕКРАТИТЬСЯ (BREAK), ВНУТРЬ САМОГО ЦИКЛА, ЦИКЛ НЕ ЗАПУСКАЕТСЯ!!!!! Условие: !isset. Нажатие кнопки.
Читал, там какой-то треш, показывающий, что ты не в курсе, чем клиент-серверное программирование отличается от десктопного. Для того я тебе и дал ссылку. Код (PHP): $text = ''; while (true){ // по определению бесконечный цикл if ($text === 'lalalala'){ break; } $text.='la'; } echo $text; //Если цикл не запустится, тут будет пусто, если не сможет остановиться, эта строка не выполнится, если стопорнется, тут будет 'lalalala' Запусти, посмотри, что будет. Не в бряке внутри цикла дело. Искать надо там, где потерял, а не там, где светлее.
Я не такой тупой в php. Я выводил переменные с помощью echo, не выводило ничего, даже те переменные которые создавал сам цикл, а не которые стоят в условии: while(true) { if($responsestart123=="NO") { break; } $say="dsda"; echo $say; } ==================== Использовал ваш скрипт. p.s: добавил в конце цикла while, sleep(1); ибо цикл не начинался, а точнее "пролетал" и выводил lalalala. Скрипт остановился, после того как "стакнул" сообщение lalala, и вывел мне его на экран. Значит ошибка в условии (нажатие кнопки). !isset || isset Как правильно то??
Зачем? Боишься, что иначе текст в экран по проводу заползти не успеет, или что? Добавлено спустя 2 минуты 44 секунды: Потому что у тебя $responsestart123="NO" до выполнения скрипта еще, твой К.О. Я тебе ссылку дал. Читай до посинения. Нет в клиент-серверном программировании такой же интерактивности, как в десктопном. Не передает браузер в рилтайме все нажатия кнопочек прям в твой цикл, чтобы он преравться мог.
Весь шлак я пропустил и прочитал нижние строчки, "...$resonsestart123="no"..." написано для примера. Напиши просто как "отследить" нажатие кнопки, не надо пытаться меня учить!
а в чем задача? ну не конкретно описание псевдокодом как это должно работать, а в общем, у тебя какая то конкретная задача? или ты просто учишься, вот придумал себе задание? Может можно решить данную проблему другими языками, тем более если ты знаком с С++. Просто то что ты хочешь, это примерно тоже самое что ты выстрелишь из пистолета и тут же будешь как то пытаться остановить эту пулю. Добавлено спустя 1 минуту 29 секунд: и хватит писать про этот isset, isset тут вот вообще не причем.
Я понял что нельзя "закинуть" в цикл инфу мол я тыкнул по кнопке... Просто на будущее, переменную или условие, по которой моно отследить нажатие кнопки. p.s: Fell-x27, кнопка не на клавиатуре, а кнопка в "окошечке"... ну так, мало ли... Это я решил сделать сам, для игрового сервера.
А, ок. Просто смутило, что ты запостился в разделе >>PHP для новичков Это раздел для тех, кто пытается понять, что делает и хочет учиться. Раздел для копипастеров-недоучек с заоблачным ЧСВ называется "Сделайте за меня". Перенести тему?
Ды нет разницы. Нажатие кнопки должно инициировать запрос. Запрос придет на скрипт. Скрипт отработает и даст ответ. Строй архитектуру именно исходя из такой парадигмы. Никакого прямого взаимодействия и интерактива. Только запрос-ответ. Есть конечно всякие веб-сокеты, можешь попробовать их погуглить и осилить. Но смысл, по факту тот же - запрос/ответ, разве что без прерывания работы скрипта на стороне сервера. Добавлено спустя 1 минуту 4 секунды: Ты определись уже, нужно тебя учить, или не нужно. А то сначала "подскажите", потом "не нужно меня учить", потом "полезных советов в изучении нет". И да, тебе никто ничего не должен. Се ля ви.
Я ПОННЯЯЛЛЛ ТЕБЯЯ!!! АЛЛЛООООО!!!! Просто скажи мне как сделать функцию реагирующую на нажатие кнопки, НЕ В ЦИКЛ, НЕ КУДА, ПРОСТО СКАЖИ МНЕ!!! ДЛЯ ОБЩЕГО РАЗВИТИЯ!!!!!
А формы не умеешь отсылать/принимать? Ок лови http://htmlbook.ru/samhtml5/formy/otpravka-dannykh-formy И не капси, вопли твои никому не нужны. Равно как и истерики.
нет, я не издеваюсь, просто вопрос, нажатие кнопки где? на странице браузера? просто там разные подходы бывают.
Хочешь, чтобы без перезагрузки странички работало, кури AJAX до кучи. Привязывай к форме с сабмитом, либо напрямую к кнопке на событие onclick и отправляй по клику запрос на сервер таким образом.