Вот есть Html где:
<form method="post" action="index1.php"> tt<br><br>
Введите число<input name="chislo" type="text" maxlength="10" size="5" value="" />
<br><br> Введите степень <input name="stepen" type="text" maxlength="2" size="3" value="" />
<br><br> <input type=submit value="Выполнить..."></form>
передаем параметры в index1.php где создаю функию и выполняю вычисления, как вывести результат на страницу Html?
В функции function ST($chislo, $stepen) правильно переданы параметры с Html?
<?php
if (!empty($_POST["chislo"])&&!empty($_POST["stepen"]))
{
echo "Данные:<br>";
echo "Число - ";
echo $_POST["chislo"];
echo "<br>Степень - ";
echo $_POST["stepen"];
}
else
{
echo "Введите данные!";
}
function ST($chislo, $stepen)
{
\\
}
?>
Спустя 3 минуты, 18 секунд (6.11.2011 - 19:39) walerus написал(а):
Цитата |
как вывести результат на страницу Html? |
на эту же страницу html ? или просто вывести результаты...
Цитата |
В функции function ST($chislo, $stepen) правильно переданы параметры с Html? |
- нет, я вообще не вижу чтоб они были переданы.
Спустя 2 минуты, 17 секунд (6.11.2011 - 19:41) bulgakov написал(а):
Вы в функцию передаете неинициализированные переменные $chislo и $stepen, я бы посоветовал обработать входные данные и потом уже их передавать в функцию например так:
$chislo = (int)$_POST["chislo"]
$stepen = (int)$_POST["stepen"]
/*
*
*
*/
function ST($chislo, $stepen)
Спустя 1 минута, 57 секунд (6.11.2011 - 19:43) bulgakov написал(а):
Полный код:
Свернутый текст
<?php
if (!empty($_POST["chislo"]) && !empty($_POST["stepen"]))
{
$chislo = (int)$_POST["chislo"];
$stepen = (int)$_POST["stepen"];
echo "Данные:<br>";
echo "Число - ";
echo $chislo;
echo "<br>Степень - ";
echo $stepen;
}
else
{
echo "Введите данные!";
}
function ST($chislo, $stepen)
{
// напишите саму функцию и как вариант прямо в функции вызвать echo с результатом или использовать return в какую-то переменную которую потом вывести
}
ST($chislo, $stepen);
?>
Спустя 9 минут, 7 секунд (6.11.2011 - 19:52) Millenium написал(а):
walerus
на эту же, чтоб при вводе данных и клике выводился результат
bulgakov
сделал..безрезультатно
на эту же, чтоб при вводе данных и клике выводился результат
bulgakov
{
echo "Данные:<br>";
echo "Число - ";
echo $_POST["chislo"];
echo "<br>Степень - ";
echo $_POST["stepen"];
//echo " лет";
$chislo = (int)$_POST["chislo"];
$stepen = (int)$_POST["stepen"];
}
else
{
echo "Введите данные!";
}
function ST($chislo, $stepen)
{
$res = 1;
while($stepen > 0)
{
if ($stepen % 2 == 0)
{
$stepen /= 2;
$chislo *= $chislo;
}
else
{
$stepen--;
$res *= $chislo;
}
}
return $res;
echo $res;
}
?>
сделал..безрезультатно
Спустя 6 минут, 20 секунд (6.11.2011 - 19:58) bulgakov написал(а):
Цитата |
сделал..безрезультатно |
Так нука подробнее, что пишет, какие ошибки, добавьте в начало скрипта error_reporting(E_ALL)
Спустя 49 секунд (6.11.2011 - 19:59) bulgakov написал(а):
Просмотрите что приходит в $_POST:
Можно еще action пустым сделать если скрипт в одном файле делается:
print_r($_POST);
Можно еще action пустым сделать если скрипт в одном файле делается:
<form method="post" action=""> tt<br><br>
Спустя 1 минута, 42 секунды (6.11.2011 - 20:01) walerus написал(а):
bulgakov а если переменные не придут ?
не сработает и вызов функции,
нужно ставить в условие, а не после нее, иначе она вызываться будет и при НЕ введенных данных, что позовет за собой нотисы.
И первому вопросу никто не ответил...
if (!empty($_POST["chislo"]) && !empty($_POST["stepen"]))
не сработает и вызов функции,
ST($chislo, $stepen);
нужно ставить в условие, а не после нее, иначе она вызываться будет и при НЕ введенных данных, что позовет за собой нотисы.
И первому вопросу никто не ответил...
Спустя 4 минуты, 14 секунд (6.11.2011 - 20:05) bulgakov написал(а):
Цитата |
bulgakov а если переменные не придут ? |
Да не уследил, спасибо
if (!empty($_POST["chislo"]) && !empty($_POST["stepen"]))
{
$chislo = (int)$_POST["chislo"];
$stepen = (int)$_POST["stepen"];
echo "Данные:<br>";
echo "Число - ";
echo $chislo;
echo "<br>Степень - ";
echo $stepen;
ST($chislo, $stepen);
}
else
{
echo "Введите данные!";
}
function ST($chislo, $stepen)
{
// напишите саму функцию и как вариант прямо в функции вызвать echo с результатом или использовать return в какую-то переменную которую потом вывести
}
Спустя 7 минут, 19 секунд (6.11.2011 - 20:12) walerus написал(а):
if ( isset( $_POST["chislo"] ) && trim( $_POST["chislo"] ) != '' && isset( $_POST["stepen"] ) && trim( $_POST["stepen"] ) != '' )
{
function ST($chislo, $stepen)
{
// bcpow ( string x, string y [, int scale]) - Возводит x в степень y.
// Необязательный параметр scale используется для установки количества цифр после десятичного разделителя в результате.
return bcpow( $chislo, $stepen );
}
$chislo = (int)$_POST["chislo"];
$stepen = (int)$_POST["stepen"];
// Вызвали функцию
$result = ST($chislo, $stepen);
echo "Данные:<br>";
echo "Число - " . $chislo. "<br>\n";
echo "Степень - " . $stepen . "<br>\n";
echo "Результат - " . $result . "<br>\n";
}
else
{
?>
<form method="post" action="">
Форма:<br><br>
Введите число - <input name="chislo" type="text" maxlength="10" size="5" value=""><br><br>
Введите степень - <input name="stepen" type="text" maxlength="2" size="3" value="" ><br><br>
<input type=submit value="Выполнить...">
</form>
<?php
}
Вот так.
Спустя 3 минуты, 29 секунд (6.11.2011 - 20:16) walerus написал(а):
empty($_POST["chislo"])тоже не подойдет, а если я пробел введу ? )), только isset - проверка на существование, и trim - проверка на пустоту.
Спустя 1 минута, 26 секунд (6.11.2011 - 20:17) Millenium написал(а):
bulgakov
не выдает ни каких ошибок, выводит только :
Данные:
Число - 12
Степень - 12
а результатов нет
не выдает ни каких ошибок, выводит только :
Данные:
Число - 12
Степень - 12
а результатов нет
Цитата |
Просмотрите что приходит в $_POST: |
Степень - 12Array ( [chislo] => 12 [stepen] => 12 )
Цитата |
Можно еще action пустым сделать если скрипт в одном файле делается: : |
Сделал! но тогда перехода на index1.php нет, хотя находятся в одной папке " на денвере"..
walerus
Подскажите новичку как это сделать?
Спустя 3 минуты, 33 секунды (6.11.2011 - 20:21) bulgakov написал(а):
Цитата |
тоже не подойдет, а если я пробел введу ? )), только isset - проверка на существование, и trim - проверка на пустоту. |
C каких пор trim стал проверять на пустоту?
Спустя 1 минута, 3 секунды (6.11.2011 - 20:22) walerus написал(а):
Millenium
я же написал весь код, запихиваешь его в index.php, и вызываешь в броузере именно index.php.
Или Вам нужно чтоб из index.html передавались данные в index1.php, а результаты выводились опять в index.html ???, если так - то не будет так работать...
только index.php.
я же написал весь код, запихиваешь его в index.php, и вызываешь в броузере именно index.php.
Или Вам нужно чтоб из index.html передавались данные в index1.php, а результаты выводились опять в index.html ???, если так - то не будет так работать...
только index.php.
Спустя 4 минуты, 3 секунды (6.11.2011 - 20:26) Millenium написал(а):
walerus
Цитата |
а результаты выводились опять в index.html ??? |
Да именно так я планировал..Сейчас сделаю по-вашему:)
walerus
bulgakov
спасибо мужики!
Спустя 15 секунд (6.11.2011 - 20:26) walerus написал(а):
Цитата (bulgakov @ 6.11.2011 - 17:21) | ||
C каких пор trim стал проверять на пустоту? |
$string = ' ';
$string_2 = '';
if ( trim( $string ) == '' )
echo "Пусто в строке<br>";
else
echo "НЕ пусто в строке<br>";
if ( trim( $string_2 ) == '' )
echo "Пусто в строке<br>";
else
echo "НЕ пусто в строке<br>";
Что выдает ? у меня выдает что в обоих строках пустота, хотя в 1й строке стоит пробел, может я не корректно выразился, но это как бы защита от ввода пустой строки, либо с пробелами, как я сделал поправку выше :rolleyes:
Спустя 7 минут, 36 секунд (6.11.2011 - 20:34) bulgakov написал(а):
Вот еще вариант:
Свернутый текст
header("Content-type: text/html; charset=utf-8");
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
$chislo = (int)trim($_POST["chislo"]);
$stepen = (int)trim($_POST["stepen"]);
if($chislo and $stepen){
// Вызвали функцию
$result = pow($chislo, $stepen);
echo "Данные:<br>";
echo "Число - " . $chislo. "<br>\n";
echo "Степень - " . $stepen . "<br>\n";
echo "Результат - " . $result . "<br>\n";
}
}
else
{
?>
<form method="post" action="">
Форма:<br><br>
Введите число - <input name="chislo" type="text" maxlength="10" size="5" value=""><br><br>
Введите степень - <input name="stepen" type="text" maxlength="2" size="3" value="" ><br><br>
<input type=submit value="Выполнить...">
</form>
<?php
}
Спустя 2 минуты, 27 секунд (6.11.2011 - 20:36) bulgakov написал(а):
Если хочеш чтобы вычисления были в одном файле а результаты и форма ввода в другом тогда у тебя должно быть два php файла - index.php action.php например, ну и соответственно логика работы скрипта немножко меняется.
Спустя 2 минуты, 5 секунд (6.11.2011 - 20:38) walerus написал(а):
bulgakov - Не рабочий Ваш вариант, введите два пробела в поля или даже один любой, - в ответ будет пустота, потому что
поступил, а данных НЕТУ ! B)
$_SERVER["REQUEST_METHOD"]
Спустя 9 минут, 21 секунда (6.11.2011 - 20:48) bulgakov написал(а):
walerus
А так?
А так?
Свернутый текст
<?php
header("Content-type: text/html; charset=utf-8");
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
$chislo = (int)trim($_POST["chislo"]);
$stepen = (int)trim($_POST["stepen"]);
if($chislo and $stepen){
// Вызвали функцию
$result = pow($chislo, $stepen);
echo "Данные:<br>";
echo "Число - " . $chislo. "<br>\n";
echo "Степень - " . $stepen . "<br>\n";
echo "Результат - " . $result . "<br>\n";
}
else{
?>
<form method="post" action="">
Форма:<br><br>
Введите число - <input name="chislo" type="text" maxlength="10" size="5" value=""><br><br>
Введите степень - <input name="stepen" type="text" maxlength="2" size="3" value="" ><br><br>
<input type=submit value="Выполнить...">
</form>
<?php
}
}
?>
Спустя 8 минут, 2 секунды (6.11.2011 - 20:56) walerus написал(а):
Опять Ошибка, не дописали кусок кода...
И теперь сравнить размеры моего кода и этого, туча ненужных операций и проверок, это для тех кто зарабатывает на количестве строк кода - самое то :D
P.S. Никого не хотел обидеть или как то задеть B)
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
$chislo = (int)trim($_POST["chislo"]);
$stepen = (int)trim($_POST["stepen"]);
if($chislo and $stepen){
// Вызвали функцию
$result = pow($chislo, $stepen);
echo "Данные:<br>";
echo "Число - " . $chislo. "<br>\n";
echo "Степень - " . $stepen . "<br>\n";
echo "Результат - " . $result . "<br>\n";
}
else
{
?>
<form method="post" action="">
Форма:<br><br>
Введите число - <input name="chislo" type="text" maxlength="10" size="5" value=""><br><br>
Введите степень - <input name="stepen" type="text" maxlength="2" size="3" value="" ><br><br>
<input type=submit value="Выполнить...">
</form>
<?php
}
}
else
{
?>
<form method="post" action="">
Форма:<br><br>
Введите число - <input name="chislo" type="text" maxlength="10" size="5" value=""><br><br>
Введите степень - <input name="stepen" type="text" maxlength="2" size="3" value="" ><br><br>
<input type=submit value="Выполнить...">
</form>
<?php
}
И теперь сравнить размеры моего кода и этого, туча ненужных операций и проверок, это для тех кто зарабатывает на количестве строк кода - самое то :D
P.S. Никого не хотел обидеть или как то задеть B)
Спустя 12 минут (6.11.2011 - 21:08) bulgakov написал(а):
Раз уж начали мерятся кодами, попробуйте в свой код ввести два нуля, вот еще один мой вариант:
<?php
header("Content-type: text/html; charset=utf-8");
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
$chislo = (int)trim($_POST["chislo"]);
$stepen = (int)trim($_POST["stepen"]);
if($chislo and $stepen){
// Вызвали функцию
$result = pow($chislo, $stepen);
echo "Данные:<br>";
echo "Число - " . $chislo. "<br>\n";
echo "Степень - " . $stepen . "<br>\n";
echo "Результат - " . $result . "<br>\n";
}
}
?>
<form method="post" action="">
Форма:<br><br>
Введите число - <input name="chislo" type="text" maxlength="10" size="5" value=""><br><br>
Введите степень - <input name="stepen" type="text" maxlength="2" size="3" value="" ><br><br>
<input type=submit value="Выполнить...">
</form>
Спустя 14 минут, 52 секунды (6.11.2011 - 21:23) walerus написал(а):
У меня дописать всего лишь нужно было проверку на ноль, да, мой косяк, не учел, НО в моем коде используется функция как просил ТС и теперь еще добавлена проверка на ввод ТОЛЬКО цифр, а у Вас можно и буквы вводить <_<
тут покороче код, без функции
Свернутый текст
if (
isset( $_POST["chislo"] ) && trim( $_POST["chislo"] ) != '' &&
$_POST["chislo"] && preg_match('~^[\d]+$~', trim( $_POST["chislo"] )) &&
isset( $_POST["stepen"] ) && trim( $_POST["stepen"] ) != '' &&
$_POST["stepen"] && preg_match('~^[\d]+$~', trim( $_POST["stepen"] ))
)
{
function ST($chislo, $stepen)
{
// bcpow ( string x, string y [, int scale]) - Возводит x в степень y.
// Необязательный параметр scale используется для установки количества цифр после десятичного разделителя в результате.
//
return bcpow( $chislo, $stepen );
}
$chislo = (int)$_POST["chislo"];
$stepen = (int)$_POST["stepen"];
// Вызвали функцию
$result = ST($chislo, $stepen);
echo "Данные:<br>";
echo "Число - " . $chislo. "<br>\n";
echo "Степень - " . $stepen . "<br>\n";
echo "Результат - " . $result . "<br>\n";
}
else
{
?>
<form method="post" action="">
Форма:<br><br>
Введите число - <input name="chislo" type="text" maxlength="10" size="5" value=""><br><br>
Введите степень - <input name="stepen" type="text" maxlength="2" size="3" value="" ><br><br>
<input type=submit value="Выполнить...">
</form>
<?php
}
тут покороче код, без функции
Свернутый текст
if (
isset( $_POST["chislo"] ) && trim( $_POST["chislo"] ) != '' &&
$_POST["chislo"] && preg_match('~^[\d]+$~', trim( $_POST["chislo"] )) &&
isset( $_POST["stepen"] ) && trim( $_POST["stepen"] ) != '' &&
$_POST["stepen"] && preg_match('~^[\d]+$~', trim( $_POST["stepen"] ))
)
{
$chislo = (int)$_POST["chislo"];
$stepen = (int)$_POST["stepen"];
echo "Данные:<br>";
echo "Число - " . $chislo. "<br>\n";
echo "Степень - " . $stepen . "<br>\n";
echo "Результат - " . bcpow( $chislo, $stepen ) . "<br>\n";
}
else
{
?>
<form method="post" action="">
Форма:<br><br>
Введите число - <input name="chislo" type="text" maxlength="10" size="5" value=""><br><br>
Введите степень - <input name="stepen" type="text" maxlength="2" size="3" value="" ><br><br>
<input type=submit value="Выполнить...">
</form>
<?php
}
Спустя 4 минуты, 47 секунд (6.11.2011 - 21:27) bulgakov написал(а):
Цитата |
У меня дописать всего лишь нужно было проверку на ноль, да, мой косяк, не учел, НО в моем коде используется функция как просил ТС и теперь еще добавлена проверка на ввод ТОЛЬКО цифр, а у Вас можно и буквы вводить ![]() |
Просто у меня желание что бы ТС уже сам допер до проверок и я хочу спать и лениво писать полноценный код) А за замечания все равно спасибо) Неплохо подискутировали.
И кстати насчет использования функции вы схалтурили применив библиотечную функцию, если уж пишем свою функцию то можно было бы реализовать полностью свою функцию вычисления степени, а не использовать функцию обертку, это к вопросу о придирках к коду) И буквы у меня вводятся но никак не участвуют в вычислениях потому как после (int) они превращаются в нули.
Спустя 5 минут, 18 секунд (6.11.2011 - 21:33) Millenium написал(а):
walerus
bulgakov
Спасибо
Придется тогда без Нtml обойтись
теперь буду писать функцию "быстрого возведения в степень" ибо стандартные операторы сказали не брать.
bulgakov
Спасибо
Придется тогда без Нtml обойтись
теперь буду писать функцию "быстрого возведения в степень" ибо стандартные операторы сказали не брать.
Спустя 1 минута, 7 секунд (6.11.2011 - 21:34) Millenium написал(а):
За праверки ввода отдельное спасибо:)
Спустя 16 минут, 38 секунд (6.11.2011 - 21:50) walerus написал(а):
bulgakov
Цитата |
после (int) они превращаются в нули |
А нули и на нули как мы знаем нельзя возводить в степень...
Да беседа веселая оказалась :D, раз пошла такая пьянка, со своей функцией ...
function ST( $chislo, $stepen )
{
$result = 1;
while( $stepen > 0 )
{
if ( $stepen % 2 == 0 )
{
$stepen /= 2;
$chislo *= $chislo;
}
else
{
$stepen--;
$result *= $chislo;
}
}
return $result;
}
if (
isset( $_POST["chislo"] ) && trim( $_POST["chislo"] ) != '' &&
$_POST["chislo"] && preg_match('~^[\d]+$~', trim( $_POST["chislo"] )) &&
isset( $_POST["stepen"] ) && trim( $_POST["stepen"] ) != '' &&
$_POST["stepen"] && preg_match('~^[\d]+$~', trim( $_POST["stepen"] ))
)
{
$chislo = (int)$_POST["chislo"];
$stepen = (int)$_POST["stepen"];
echo "Данные:<br>";
echo "Число - " . $chislo. "<br>\n";
echo "Степень - " . $stepen . "<br>\n";
echo "Результат - " . ST( $chislo, $stepen ) . "<br>\n";
}
else
{
?>
<form method="post" action="">
Форма:<br><br>
Введите число - <input name="chislo" type="text" maxlength="10" size="5" value=""><br><br>
Введите степень - <input name="stepen" type="text" maxlength="2" size="3" value="" ><br><br>
<input type=submit value="Выполнить...">
</form>
<?php
}
Спустя 22 часа, 39 минут, 9 секунд (7.11.2011 - 20:30) Millenium написал(а):
сделал следующее :
$x = decbin ( $chislo);
число приставил в двоичном виде. В си фором бегаю всегда..
в РНР нужно в массив загонять или можно побитово в перемнной пробижать и выполнить тело цикла?
$x = decbin ( $chislo);
число приставил в двоичном виде. В си фором бегаю всегда..
в РНР нужно в массив загонять или можно побитово в перемнной пробижать и выполнить тело цикла?
Спустя 2 минуты, 29 секунд (7.11.2011 - 20:32) Millenium написал(а):
вывод результата выполнения функции лучше "в теле" фунции делать или после фунции оператором echo?