|
|
|
| Пожалуйста Помогите с программой. Надо занести список чисел введенные в форме textarea. Цифры располагаются каждая в новой строчке. Нужно сложить все числа и вывести результат. | |
|
|
|
|
|
|
|
для: BlueWolf
(31.12.2012 в 14:55)
| | А что-нибудь кроме задания есть? Например попытки решить задачу?... Какой-то код, возможно не работающий, в котором нужно найти ошибку? | |
|
|
|
|
|
|
|
для: Sfinks
(31.12.2012 в 15:05)
| |
<?
//Принимаем входящие данные и фильтруем
if (isset($_POST['god'])) {$god=$_POST['god']; $god = mysql_real_escape_string(htmlspecialchars(trim($god)));} //принимаем god
if (!empty($_POST['do'])) {
//Если кнопка нажата
if (!preg_match("/^([0-9])+$/",$god)){$god=1; echo'Только цифры!!!';}else{
$arrgod = array($god);
$total = count($arrgod); // всего строк
$summa = 0;
for ($x=0; $x<$total; $x++){$summa = $summa + $arrgod[$x];}
echo "<br>Сумма = ".$summa."<br>";
}
}
else{//Если кнопка не нажата
echo'
<form action="" method="POST">
<br/>
<textarea name="god" type="text" style=width:540px rows=8 id="form2textarea">Введите список чисел</textarea><br/>';
echo'
<br/><br/>
<input type="submit" name="do" value="Рассчитать" id="form2buttons" />
</form>';
}
?>
|
Выводиться ошибки : Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'М-Видео'@'localhost' (using password: NO) in Z:\home\proekt7.ru\www\data\1\index.php on line 4
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in Z:\home\proekt7.ru\www\data\1\index.php on line 4
Только цифры!!!
Что нужно исправлять? | |
|
|
|
|
|
|
|
для: BlueWolf
(31.12.2012 в 17:30)
| | Ошибка в том, что тут бездумно намешаны какие-то куски неизвестно откуда.
mysql_real_escape_string - экранирует спец.символы перед SQL-запросом.
У вас есть SQL запросы?
htmlspecialchars - используется при выводе в HTML непосредственно перед выводом, но не перед обработкой.
trim - допустим на результат не повлияет, но и пользы нет от него в данном случае.
!empty($_POST['do']) - также никак не влияет на результат.
Получавем выжатый остаток:
<?php
// если передано непустое $_POST['god']
if( $god = trim($_POST['god']) ){
echo "Сумма = " . array_sum( array_filter( explode("\n",$god), 'intval' ) );
}
// если ничего не передано
else{
echo '<form action="'.$_SERVER['PHP_SELF'].'" method=POST>
<textarea name=god style=width:540px rows=8>Введите список чисел</textarea><br/>
<input type=submit value="Сумма">
</form>';
}
?>
|
| |
|
|
|
|
|
|
|
для: Sfinks
(31.12.2012 в 17:55)
| | Спасибо большое. А это 100% безопасный код? Через него нельзя будет мой сайт взломать?
А ещё как сюда добавить оповещение если пользователь добавил буквы? | |
|
|
|
|
|
|
|
для: Sfinks
(31.12.2012 в 17:55)
| | И ещё надо ограничить максимальное количество числа. Иначе вобьют гигантское число и ппц всему.. | |
|
|
|
|
|
|
|
для: BlueWolf
(01.01.2013 в 04:56)
| | Зачем все числа проверять?
Этот код некорректные числа просто проигнорирует. их отбросит функция array_filter()
А ограничения можно просто написать текстовым сообщением.
Да, и код безопасен полностью. | |
|
|
|
|
|
|
|
для: Sfinks
(01.01.2013 в 13:21)
| | Вот что получилось http://mosara.ru/data/summa/
Максимальное количество символов ограничил html тегом maxlength="2000"
Но как ограничить максимальную длину одного числа? Чтобы не было сложений огромных чисел. Думаю сложение больших чисел повышает нагрузку на хостинг это правда? | |
|
|
|
|
|
|
|
для: BlueWolf
(06.01.2013 в 22:47)
| | > Максимальное количество символов ограничил html тегом maxlength="2000"
Во-первых это не тег, а атрибут тега
Во-вторых, у HTML-тега TEXTAREA нет атрибута maxlength
> Думаю сложение больших чисел повышает нагрузку на хостинг
Улыбнуло =)))
Думаю если все олигархи и корпорации мира начнут на вашем сайте складывать свои доходы, то нагрузка сильно возрастет! | |
|
|
|
|
|
|
|
для: BlueWolf
(06.01.2013 в 22:47)
| | >Думаю сложение больших
>чисел повышает нагрузку на хостинг это правда?
Это самая дешевая операция из всех возможных... реализовано на уровне процессора, выполняется быстрее, чем что бы то ни было. Чем больше у вас таких операций - тем лучше. Деление, умножение - уже хуже. Вызов библиотечной функции еще хуже. Вызов собственной функции еще хуже. Реализация класса или объекта - еще хуже.
PS А вообще, лучше не заморачиваться проблемой оптимизации, до тех пор, пока в этом не возникает необходимость или пока не пройдетесь по коду профилировщиком. Без опыта угадать узкое место очень сложно, да и вообще гадать не стоит - только трата времени и сил. | |
|
|
|
|
|
|
|
для: BlueWolf
(01.01.2013 в 04:56)
| | ну, сайт взорвется 8-) | |
|
|
|