Witam
mam taki dziwny problem, przechwytuje niby liczbę przez zmienną POST która nie jest liczbą, tzn przez echo oraz print wyświetla się 2, ale ani mysql nie rozpoznaje jej jako 2, gdy mnożę tą liczbę razy 1 otrzymuje 0, funkcja intval też pokazuje 0. Spotkał się ktoś z takim problemem za bardzo nie wiem gdzie szukać
To pokaz to co ma ten post
Sprawdz przez
is_numeric()
2
sprawdzałem is_numeric() wyświetla fałsz, z tym że zawsze wystarczyło albo użyć trim albo mnożyć razy 1, albo zdefiniować typ zmiennej (int)
Mam rozumiec ze przekazujesz liczbe 2 postem a potem podczas odczytu nie jest juz "dwójką"?
Nie kombinujesz nic miedzyczasie z tym ?
http://www.php.net/echo 'problem dotyczy '.$kod.'<br>'; if(http://www.php.net/is_numeric($kod)){ http://www.php.net/echo 'liczba'; } else { http://www.php.net/echo 'lipa liczba'; } http://www.php.net/echo '<br>'; if(http://www.php.net/is_array($kod)){ http://www.php.net/echo 'tablica'; } else { http://www.php.net/echo 'lipa tablica'; } http://www.php.net/echo '<br>'; $test1=$kod*1; http://www.php.net/echo $test1.'<br>'; $test2=(int) $kod; http://www.php.net/echo $test2.'<br>'; $test2=http://www.php.net/intval($kod); http://www.php.net/echo $test2.'<br>';
pokaż `var_dump($_POST['twoja_liczba']);`
string(7) "2"
formularz masz skopany. Pokaż go
Jesli ustawisz na sztywno $liczbe
$kod = 2; http://www.php.net/echo "problem dotyczy $kod.<br>"; if(http://www.php.net/is_numeric($kod)){ http://www.php.net/echo 'liczba'; } else { http://www.php.net/echo 'lipa liczba'; } http://www.php.net/echo '<br>'; if(http://www.php.net/is_array($kod)){ http://www.php.net/echo 'tablica'; } else { http://www.php.net/echo 'lipa tablica'; } http://www.php.net/echo '<br>'; $test1=$kod*1; http://www.php.net/echo $test1.'<br>'; $test2=(int) $kod; http://www.php.net/echo $test2.'<br>'; $test2=http://www.php.net/intval($kod); http://www.php.net/echo $test2.'<br>';
$txt['js_onlick_rozlicz']=' czytaj(\'php/test.php\',\'nr_rozlicz='.$r['id'].'&nr_serwis='.$r['nr'].'&typ_rozlicz='.$r['typ'].'\',\'wynikpoz\'); ';
$rozl=rozliczenia('lista',http://www.php.net/array('rozlicz_nr'=>$arr['post']['nr_rozlicz']))[0]; $kody=http://www.php.net/explode(' ',$rozl['row']['kody']); foreach($kody as $licz=>$kod){ $licz++; http://www.php.net/var_dump($kod); $r=kod('info',http://www.php.net/array('kod'=>$kod))['row']; $razem+=$r['cena']; }
Dlatego że ma białe znaki na froncie. Konwersja (rzutowanie) działa na zasadzie że jeśli 1-szy znak jest liczbą to string jest konwertowany na liczbę do 1-szego nienumerycznego znaku.
Możesz zrobić tak:
Jesli pole w tabeli jest tylko dla liczb to ustaw ja na INT. Nie wiem jak tam masz. Moze jest varchar. Przed zapisem tez rzutuj na liczbe i moze settype()
w tym przypadku varchar jest wygodny bo najczęściej jest kilka liczb ale przynajmniej wiem w czym problem dzięki wielkie za info
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)