Променлива

11 отговора 553 прегледа
#1

Променлива

Здравейте, преди да постна тук потърсих информация, но не намерих това, което ме интересува.
Значи от едно input type=text и по пост си предавам стойноста му, която е число. Но после като я взема с $_POST и ПХП-то не и я разбира така, а като стринг... Как да го оправя тоя проблем?

Отговор
в отговор на Toй #2

Re: Променлива

Тези 2те под внимание
1:
if (!is_numeric($_POST['textfield'])) {
echo 'Хм това явно не е число. Може би някой иска да ме хакне :) ?!';
}
2:
$variable = (int) $_POST['textfield']; //$variable е винаги число - евентуално 0.

Отговор
в отговор на Toй #3

Re: Променлива

[линк]

Отговор
в отговор на Toй #4

Много странно

Пишеше ми се та си направих нещо такова (набързо). Като сложа число (даже и float да е) си ми дава bool(true).



<?
if($_SERVER['REQUEST_METHOD']=='GET')
{
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "[линк]">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=windows-1251"/>
<title></title>
<style type="text/css">
<!--
DIV{
text-align: center;
}
BODY{
background-color: Black;
color: White;
}
-->
</style>
</head>
<body>
<form action="<?=$_SERVER['SCRIPT_NAME'];?>" method="post">
<div>
<input type="text" name="testnumber"/>
<input type="submit" value="test number"/>
</div>
</form>
</body>
</html>
<?
}
elseif($_SERVER['REQUEST_METHOD']=='POST')
{
var_dump(is_numeric($_POST['testnumber']));
}
?>




От неизбежното се възмущава само този, който е неразумен.
Отговор
в отговор на Учeщ #5

Re: Много странно

ми.... правилно ти дава true.... и 1 и 1.5 са числа.

Отговор
в отговор на Bълk #6

Re: Много странно

Е числа са си спор няма. Странното е как на човека му ги възприема не като "числа ами като стрингове".

От неизбежното се възмущава само този, който е неразумен.

Редактирано от Учeщ на

Отговор
в отговор на jmut #7

Re: Променлива

$variable = (int) $_POST['textfield']; //$variable е винаги число - евентуално 0.

А ако е флоат? Най-лесно е просто $variable+=0;, нищо, че не е по учебник.

Отговор
в отговор на Учeщ #8

Re: Погледни

Те тва ама въобще не е по учебник:

<?
if(!$_GET['num1']){
?>
<form method=get>
<input type=text name=num1 size=1>

<input type=text name=num2 size=1>

<input type=submit>
</form>
<?
}else{
$num1 = $_GET['num1'];
$num2 = $_GET['num2'];
$num3 = $num1 + $num2;
echo $num3;
}
?>

Задаваме стойности на полетата 1 и 2 и резултатът очудващо е 12...
Те за тва питам.........

Отговор
в отговор на Toй #9

Re: Погледни

Защото пхп-то обича да се прави на умно. Сложи +0+ между тях или ги умножи по 1 (по добре, щото при +0 може и да не стане) и ще стане. или ползвай (int), но ако не знаеш дали ще получиш инт или флоат, малко ти се усложнява писането

Отговор
в отговор на дoн Пpacoнe #10

Re: Мерси ;)

Стана с +0+
Това ми оправи проблемът.
Мерси отново

Отговор
в отговор на Toй #11

Аз гледам ама ....

... виждам само че нещо ме лъжеш
при :
$num1 = $_GET['num1'];
$num2 = $_GET['num2'];
$num3 = $num1 + $num2;
echo $num3;
НЯМА начин да получи резултат 12. При математическата операция + винаги параметрите се кастват до числа.
Знака за конкатенация на стрингове е .

Кажи си че се опитваш да ръчкаш с JavaScript и тогава получаваш този резултат и ще ти повярвам !

root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
Отговор
в отговор на ro6avia #12

Re: Аз гледам ама ....

Рошавия е прав
Ако небяха числа ми нещо друго, резултатът щеше да е 0.
12 ще получиш само при $num3 = $num1.$num2;
Провери си пак скрипта или направи пълен копи/пейст да го разгледаме...
Знае ли човек...

Отговор