Помогите, пожалуйста, чайнику huh.gif Реализую в php скриптах вот такую задачку: "Сколько дециметров ширина монитора с диагональю 28 дюймов, при соотношении сторон 12:9? Точность - 3 знака после запятой." Все цифры в задаче -переменные. На одной странице должна быть и форма ввода и показан результат расчета скрипта.......... Я решил эту задачку вот скрипт: Код (PHP): <?php echo 'Задача '; echo 'Сколько дециметров ширина монитора с диагональю a дюймов, если длинна относиться к ширине как b:c? Точность - 3 знака после запятой. '; echo ' '; function clearData($data, $type='i'){ switch($type){ case 'i': return $data*1; break; case 's': return trim(strip_tags($data)); break; } } if($_SERVER['REQUEST_METHOD'] == 'POST'){ $a = clearData ($_POST['a']); #Получаем первое слагаемое $b = clearData ($_POST['b']); #Получаем второе слагаемое $c = clearData ($_POST['c']); $e = 0.254; $f = 0.5; $result = round ($a*$c*0.254/sqrt((pow($b,2)+pow($c,2))),3); #Действия с числами и результат записываем в переменную echo 'Результат: '. $result; #Выводим результат на экран } ?> <form action="<?=$_SERVER['PHP_SELF']?>" method="POST"> Диагональ монитора в дюймах - a: <input type="text" name="a"> Длина частей - b: <input type="text" name="b"> Ширина частей - c: <input type="text" name="c"> <input type="submit" value="Считать!"> </form> Вопрос в следующем : нужно на станице, которая получилась в результате выполнения прошлого задания нарисовать прямоугольник в масштабе 1 сантиметр = 1 пиксель. Прямоугольник перерисовывается при поступлении новых переменных (диагональ, соотношение сторон). Ничего не получается, подскажите с чего хотя бы начать huh.gif?? Рабочий скрипт есть в сети - http://zadachy.zz.mu
Да подходит!!! Добавлено спустя 4 минуты 23 секунды: Нашел вот такой код: Код (Text): <?php // Создание изображения 200 x 200 $canvas = imagecreatetruecolor(200, 200); // Создание цветов $pink = imagecolorallocate($canvas, 255, 105, 180); $white = imagecolorallocate($canvas, 255, 255, 255); $green = imagecolorallocate($canvas, 132, 135, 28); // Рисование разноцветных прямоугольников imagerectangle($canvas, 50, 50, 150, 150, $pink); imagerectangle($canvas, 45, 60, 120, 100, $white); imagerectangle($canvas, 100, 120, 75, 160, $green); // Вывод и освобождение памяти header('Content-Type: image/jpeg'); echo 'uuu'; imagejpeg($canvas); imagedestroy($canvas); ?> но не соображу как заставить при изменении данных в форме перерисовываться прямоугольник....
это пхп, чтобы перерисовать треугольник, вам надо отправить на сервер новые данные через форму. Либо крутить аякс, чтоб без обновления страницы. А вообще на самом деле попробуйте html5 canvas
А если всё же нужно php, то можно передать скрипту рисования прямоугольника длину и ширину в параметрах, а адрес скрипта указать в теге <img>. Скрипт, который вы нашли, вполне себе ничего. Код (Text): echo 'uuu'; я только не понял, зачем там. Если вы свою задачу смогли решить, то сможете и переделать его, чтоб он рисовал прямоугольник именно нужной ширины, взятой из параметров (подсказка: $_GET)
Лови, покуда нефиг было делать, накидал тебе рисовалку простенькую. Добавлено спустя 4 минуты 14 секунд: Да, все числа это, в твоем случае, сантиметры. Если дециметры нужны, поковыряйс, где вывод текста идет, и сам на 10 раздели, ок? Ну..чтобы не все коту масленица.
Да, я там канвас скопипастил с другого своего проекта, и там в стилях пробито, что курсор над ним не отображается, обрати внимание на такие мелочи. А лучше просто свой канвас вбрось. Функции один фиг, от него только айдишник нужен.
ok!!! Добавлено спустя 26 минут 9 секунд: а можно заставить функцию draw_rectangle взвемодействовать с вишеописаним php кодом?
Дык при генерации кода страницы, который включает эту функцию, подставляй в вызов нужные тебе циферки. Страницу же сервер генерирует. Так генерируй что душе угодно. echo, все дела.
Всем спасибо огромное за помощь !!! Вот результат - http://zadachy.zz.mu Добавлено спустя 2 минуты 18 секунд: Коды: Файл 1 Код (Text): <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>Задача</title> </head> <body> <h2>Задача</h2> <h3>Сколько дециметров ширина монитора с диагональю a дюймов, если ширина относится к высоте как b:c? Точность - 3 знака после запятой.</h3> <?php echo '<br />'; function clearData($data, $type='i'){ switch($type){ case 'i': return $data*1; break; case 's': return trim(strip_tags($data)); break; } } if($_SERVER['REQUEST_METHOD'] == 'POST'){ $a = clearData ($_POST['a']); #Получаем первое слагаемое $b = clearData ($_POST['b']); #Получаем второе слагаемое $c = clearData ($_POST['c']); $resultWidth = round ($a*$c*0.254/sqrt((pow($b,2)+pow($c,2))),3); #Действия с числами и результат записываем в переменную $resultWidthCM = round ($resultWidth*10); $resultHeight = round ($a*$b*0.254/sqrt((pow($b,2)+pow($c,2))),3); $resultHeighCM = round ($resultHeight*10); echo $f = "<img src='rect.php?w=$resultHeighCM&h=$resultWidthCM'>"; echo '<br />'; echo '<br />'; echo 'Результат ширины в дециметрах:<br /> '. $resultHeight; echo '<br />'; echo 'Результат высоты в дециметрах: <br />'. $resultWidth; #Выводим результат на экран echo '<br />'; echo 'Результат ширины в сантиметрах:<br /> '. $resultHeighCM; echo '<br />'; echo 'Результат высоты в сантиметрах: <br />'. $resultWidthCM; echo '<br />'; } ?> <h3>ВВЕДИТЕ ДАННЫЕ В ФОРМУ:</h3><br /> <form action="<?=$_SERVER['PHP_SELF']?>" method="POST"> Диагональ монитора в дюймах - a:<br /> <input type="text" name="a"><br /> Ширина - b: <br /> <input type="text" name="b"><br /> Высота - c:<br /> <input type="text" name="c"><br /> <br /> <input type="submit" value="Считать!"> </form> </body> </html> Файл 2 Код (Text): <?php $resultWidthCM = $_GET["w"]; $resultHeighCM = $_GET["h"]; $canvas = imagecreatetruecolor($resultWidthCM, $resultHeighCM); // Вывод и освобождение памяти header('Content-Type: image/jpeg'); imagejpeg($canvas); imagedestroy($canvas); ?>
Условие: Сколько дециметров ширина монитора с диагональю a дюймов, если ширина относится к высоте как b:c? Точность - 3 знака после запятой. То есть известна только длина диагонали. Ввел только диагональ. Жмакнул "считать", выпала ошибка и ничего не произошло. Не работает. Зачем поля для ввода ширины и высоты? Их рассчитывать надо. Это у меня в рисовалке диагональ высчитывается автоматом из ширины и высоты по теореме пифагора. А тебе сначала надо обратное действие запилить же. Добавлено спустя 1 минуту 16 секунд: При вбивании данных от балды, рисуется просто черный квадрат. Я же тебе дал красивый рисовальник, почему его бы не заюзать ?
Fell-x27, у него известно ещё отношение длины диагонали к ширине, так что это отношение. Туда надо вводить что-то типа 2:3. Иначе у вас получится одно уравнение с двумя неизвестными. Он поля неверно обозвал
Отожблин. Так и падает юзабилити. И да, один фиг, ошибка при неверном вводе - косяк. Должна быть мягкая обработка. Тогда все работает, но моя рисовалка, имхо лучше результат выдает
Ваша рисовалка очень классная, спасибо, гдет-о ее обязательно применю, но так как я только учусь то сообразил только с php реализацией рисования квадрата, не вышло у меня заставить вашу рисовалку рисовать то что на выходе моего скрипта....
Даю подсказки: Страницы - это тупо текст. В плане вывода на страницу нет никакой разницы между JS и HTML с точки зрения PHP. Это просто буковки. Выполни в PHP: Код (Text): echo '<script>alert("Код на JS!");</script>'; Вуаля, работает! Теперь так: Код (Text): $a = "Переменная из пыха"; echo '<script>alert("'.$a.'");</script>'; А теперь давай прикинем, является ли проблемой выкинуть на страницу JS-функцию, и ее вызов, с заранее проставленными еще на стадии генерации значениями. P.S. И да, вообще всю эту задачу можно сделать на JS. Как таковой, сервер тут не нужен для вычислений. Клиент справится без проблем.