Ну так данные появляются в окнах, а я говорю про скрипт построения графика. PHP: if (isset($_GET["L11"])) $L11 = $_GET["L11"]; else $L11 = 8; Там же не обязательно 0 ставить, можно любое значение --- Добавлено --- И тогда вместо кучи ошибок деления на 0 будет строиться сразу график на дефолтных данных. Ну или не будет строиться (поскольку не будут установлены галочки), но что-нибудь нарисуется. Я до этого нули оставлял, поскольку думал, что это соответствует вашей логике. --- Добавлено --- Так у вас будет куча notice об undefined variable, и опять переполненный лог ошибок. Вы никак не поймёте причину бед - скрипт запускается без исходных данных, подставляет вместо них 0 и пытается сделать действия, и плюётся предупреждениями. Поэтому варианты - либо исключить запуск скрипта без исходных данных, и я писал как, либо сделать, чтоб скрипт работал без ошибок и в этом случае (как вариант, подставлять те данные, что в окошках). Вот не думал, что физику будет сложно понять такую простую вещь. php здесь не причём вообще, это ВЫ запускаете скрипт без исходных данных, сразу указав его в атрибуте src тега img, и ВЫ не предусмотрели корректного его поведения для такого случая.
У моей логики, как и во всей электроакустике нет нулей. Там или бесконечность минус чуть-чуть или бесконечно малые величины. Например 10000 или 0.0001. Завтра надеюсь обнулят логи, получу доступ и заменю в этих строчках нули на 0.0001. <Скрипт> запускается с исходными данными, точнее после того, как они объявлены. По любой логике программа выполняется сверху вниз, если не заявлено другое. Как я мог догадаться, что это не так. Тем более что всё по этой логике и работало. Как физик, я вижу, что графики рисуются и никогда не поверю, что это возможно в случае если в процессе происходит деление на ноль. В расчёте нет деления на ноль по любому, а в косяках php я не разбираюсь. Но костыль вставлю. Если уж без него не обойтись.
С какой целью? Ну вы просто не до конца понимаете, как работает web. Вы даёте html с вашей формой, а в нём есть этот злополучный <img src='script.php'>. Браузер начинает отображать ваш html, видит картинку, ему нужно считать картинку. И он запускает скрипт без параметров и даются эти нули, поскольку вы такую логику написали. Вы могли написать логику, что если не передано параметров, отдать картинку с нарисованными осями. Могли не писать в <img> свойства src. Могли написать src на статическую картинку (хороший, кстати, вариант, например, на такую: http://prntscr.com/dntctu. А вы всё ещё ситуации не понимаете. Уж не знаю, как ещё объяснить. http://phpfaq.ru/na_tanke
никак не поймёте, что это ваш косяк, а не php. Вы запустили скрипт указанием его в свойстве src без исходных данных. А всё потому, что вы теорию знать не хотите.
Цель простая: для расчёта не имеет значения какая там будет цифра, если даже наличие нуля он не заметил. Интересная логика у php. Вот Вы пишите: "Браузер начинает отображать ваш html, ...". Не будем перескакивать. Сначала браузер видит таблицу с дефолтными данными. И ведь видит их, иначе откуда они попадают в расчёт. А потом доходит дело до скриптов (они находятся ниже), рисования всяких осей и расчётов. Но Вы утверждаете, что сначала рисуется картинка, происходит расчёт с нулями прописанными в этих строчках, а только потом браузер видит данные. Получается браузер сначала делает расчёт с нулями, а потом отображает страницу на экране пользователя. Интересно а браузер делает расчёт до того, как пользователь нажимает на ссылку на страницу или после? Очень "понятная" логика получается. Конечно, всё элементарно. Это я совсем "ситуации не понимаю", "теории не знаю" и "ничего не хочу читать". Без строчек нельзя, строчки без цифр нельзя, нули тоже нельзя, а 0.0001 - "С какой целью? С простой: потому что как же ещё? Какие у меня ещё варианты? Мёртвые картинки не подходят, уже пробовал. Как я потом буду к ним координаты привязывать.
Ну неужели непонятно? Отображается страница http://www.aie.sp.ru/Calculator_filter2.php - ваша форма. Вся эта страница! В ней есть такой фрагмент кода (он есть сразу, до того как пользователь что-то нажмёт или вообще что-то сделает, а раз есть, браузер обязан его обработать и отобразить): HTML: <td width=720> <!-- выведим наш рисунок в браузер, указав желаемые размеры!--> <img id="myimg" border="0" style="width:718px; height:620px;" src="script.php" alt="" /> <script type="text/javascript"> // Функция вызываемая при отправке формы, что бы форма не отправлялась функция должна вернуть false function sub (f) { // получим значения полей ввода из формы var U = f.U.value; var L11 = f.L11.value; var Rl11 = f.Rl11.value; var C11 = f.C11.value; var Rd1 = f.Rd1.value; var R31 = f.R31.value; var C31 = f.C31.value; var L31 = f.L31.value; var Rl31 = f.Rl31.value; var L32 = f.L32.value; var Rl32 = f.Rl32.value; var C32 = f.C32.value; var Rd3 = f.Rd3.value; var R21 = f.R21.value; var C21 = f.C21.value; var L21 = f.L21.value; var Rl21 = f.Rl21.value; var Rd2 = f.Rd2.value; // здесь нужно проверять x1-2 и y1-2 на правильность, т.е. что бы были цифрами и не были пустыми if ( U == "" || L11 == "" || Rl11 == "" || C11 == "" || Rd1 == "" || R31 == "" || C31 == "" || L31 == "" || Rl31 == "" || L32 == "" || Rl32 == "" || C32 == "" || Rd3 == "" || R21 == "" || C21 == "" || L21 == "" || Rl21 == ""|| Rd2 == "" ) { alert ("Заполните все поля ввода !"); return false; } //формируем GET запросvar get = "?" + $(f).serialize() var get = "?" + $(f).serialize() // меняем src нашего рисунка тем самым делая новый запрос к скрипту iso.php document.getElementById("myimg").src = "script.php"+get; // что бы форма не отправлялась и не перезагружала страницу возвращаем false return false; } </script> </td> И дальше происходит следующее. И это не логика php (php отработал уже для этой страницы, раз она появилась в браузере, он к браузеру никакого отношения не имеет, работает на сервере), это логика браузера. Смотрите, нормальная ссылка на script.php со всеми данными формируется только в момент нажатия кнопки. Но, ещё раз, до нажатия кнопки браузеру надо как-то отобразить вашу страницу. Он разбирает html - видит форму, отображает. Всё прекрасно, красивая форма. Дальше он видит тег img, ему надо отобразить картинку! Как он это делает? Он посылает на сервер запрос в соответствии с тем, что написано в атрибуте src. А у вас до того, как кнопка нажата, что написано в src? Правильно, script.php, без единого параметра. И сервер получает данный запрос, а там php-файл, для него запускается php-машина. И получается что первый раз, ещё до того, как пользователь нажал на кнопку, ваш script.php отрабатывает без исходных данных, и плюётся ворнингами про деление на ноль - такая у него логика, когда без исходных данных. Уже потом, после того как пользователь нажал на кнопку, src у картинки меняется через javascript с подставленными исходными данными, видя это сервер теперь уже снова посылает запрос на сервер, и скрипт снова отрабатывает, и имея исходные данные уже нули никуда не подставляет (в вашем варианте 0 подставляются только когда данных нету) и корректно рисует ваш любимый график. Поэтому, в принципе, достаточно просто убрать src у img изначально, чтоб он подставлялся только по нажатию кнопки, и всё сразу заработает корректно. Или подставить url статической картинки - просто осей, к примеру, которая потом, при смене атрибута src будет полностью заменена графиком. Вы, по ходу, не сильно понимаете даже логику работы того, что написали. И не смешиваете функции браузера и php. Браузер только посылает запросы на сервер и принимает их, формирует картинку на основе html, скачивает файлы, а также выполняет javascript-код (но не PHP-код! Он о нём понятия не имеет. Ему по сути всё равно, что у вас на сервере - PHP, Ruby, Python, Perl, C#, NodeJS, вариантов бесконечно много, поскольку теоретически можно любой язык туда прикрутить, я перечислил наиболее распространённые и уже прикрученные). Поэтому в вашем случае браузер вообще не делает никаких рассчётов, ни с нулями, ни с чем-то ещё. Он бы их делал, если бы вы их написали на JavaScript. А так, он видит src у картинки, посылает запрос на сервер, в этом запросе именно то, что написано в src. А в src написана команда серверу запустить script.php без исходных данных. Кстати, ещё, как вариант, вы можете подставить в src какие-нибудь исходные данные, и тогда что-то умное выведется сразу (http://www.aie.sp.ru/script.php?U=8...3=7&R21=0.4&C21=3.85&L21=0.38&Rl21=0.25&Rd2=7). А потом у вас при каждом нажатии на кнопку "считать" src подменяется и грузится новая картинка, а старая уничтожается. И кстати, зачем там вверху вот эта чушь ещё, которая ошибками в консоль пуляется?
Та чушь вверху висит в интерненте уже 10 лет (без 3-х месяцев), одинаковая на паре десятков страниц и ещё ни разу не вызывала никаких вопросов. Это делал не я и зачем это нужно - понятия не имею. Тут по принципу: работает - не трогай. Зато эта чушь набирает в кибераналитике 1470 баллов. Когда мне предлагают "оптимизировать" сайт, а мне скучно и хочется развлечься, то я всегда прошу продемонстрировать примеры работ этих оптимизаторов и объяснить смысл "оптимизации" с понижением баллов, часто в два раза. Много интересного узнал. Ещё недавно вместо строки 41 было это: PHP: //формируем GET запрос var get = "?L11="+L11+"&C11="+C11+"&L12="+L12+"&C12="+C12; Это случайно не тот код, который объясняет какие данные надо подставлять вместо нулей? Если это не он, то наверно надо его придумать и написать? Рисовать отдельно картинку и отдельно картинку с графиками, чтобы сначала показывать одну, а потом другую - это очень по php-шному, т.е. одного раза всегда не достаточно. Это для того, чтобы жизнь мёдом не казалась, и если захочется что-то поменять, то менять придётся в двух местах. Понятно, что это придумано для создания рабочих мест программистов. Но у меня такой цели нет. Может быть всё-таки лучше одну строку с объяснениями для сервера по поводу первичных данных? В общем заменил нули на 0.0001 и ошибки прекратились. Несколько раз заходил и перезагружал - новых нет. Подожду до вечера, сравню вечерние логи с утренними.
Нет, не те строки. Они тоже срабатывали уже после нажатия кнопки, и serialize() делает тоже самое, только автоматически. Я вам 25 раз конкретную строку указываю. В посте №131 в листинге строка 4 провоцирует вызов скрипта без исходных данных --- Добавлено --- Ну да, теперь вхолостую рассчитывается правда график для этих данных (0.0001), но поскольку галочки не отмечены, рисуются только сетки. Пусть будет так хотя бы, с вами каши не сваришь
Очень даже сваришь. Потому что я всегда использую советы лучших, местами даже гениальных советчиков и в конце получаю работающий результат, который не имеет аналогов. Как в случае этого конкретного калькулятора, так и в других областях. С теми, с которыми "можно кашу сварить", кроме разговоров ничего обычно не получается. Люди они конечно хорошие, даже иногда замечательные, но с результатом часто проблемы. Особенно это заметно при непосредственном сравнении. А сравниваем мы постоянно, почти каждый день. mkramer Спасибо Вам Большое. Если потребуется помощь по нашему профилю - обращайтесь. Там внизу контакты есть.