Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] liczba która nie jest liczbą
adi456
post 11.09.2019, 13:28:26
Post #1





Grupa: Zarejestrowani
Postów: 248
Pomógł: 0
Dołączył: 21.01.2010
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


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ć
Go to the top of the page
+Quote Post
dublinka
post 11.09.2019, 13:36:00
Post #2





Grupa: Zarejestrowani
Postów: 271
Pomógł: 33
Dołączył: 22.02.2008

Ostrzeżenie: (0%)
-----


To pokaz to co ma ten post

Sprawdz przez


is_numeric()


Ten post edytował dublinka 11.09.2019, 13:39:14
Go to the top of the page
+Quote Post
adi456
post 11.09.2019, 13:39:54
Post #3





Grupa: Zarejestrowani
Postów: 248
Pomógł: 0
Dołączył: 21.01.2010
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


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)

Ten post edytował adi456 11.09.2019, 13:41:23
Go to the top of the page
+Quote Post
dublinka
post 11.09.2019, 13:45:19
Post #4





Grupa: Zarejestrowani
Postów: 271
Pomógł: 33
Dołączył: 22.02.2008

Ostrzeżenie: (0%)
-----


Mam rozumiec ze przekazujesz liczbe 2 postem a potem podczas odczytu nie jest juz "dwójką"?
Nie kombinujesz nic miedzyczasie z tym ?
Go to the top of the page
+Quote Post
adi456
post 11.09.2019, 13:47:44
Post #5





Grupa: Zarejestrowani
Postów: 248
Pomógł: 0
Dołączył: 21.01.2010
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


  1. echo 'problem dotyczy '.$kod.'<br>';
  2. if(is_numeric($kod)){
  3. echo 'liczba';
  4. } else {
  5. echo 'lipa liczba';
  6. }
  7. echo '<br>';
  8.  
  9. if(is_array($kod)){
  10. echo 'tablica';
  11. } else {
  12. echo 'lipa tablica';
  13. }
  14.  
  15. echo '<br>';
  16.  
  17. $test1=$kod*1;
  18. echo $test1.'<br>';
  19.  
  20. $test2=(int) $kod;
  21. echo $test2.'<br>';
  22.  
  23. $test2=intval($kod);
  24. echo $test2.'<br>';


wynik:
problem dotyczy 2
lipa liczba
lipa tablica
0
0
0
Go to the top of the page
+Quote Post
Pyton_000
post 11.09.2019, 13:47:53
Post #6





Grupa: Zarejestrowani
Postów: 7 813
Pomógł: 1373
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


pokaż `var_dump($_POST['twoja_liczba']);`
Go to the top of the page
+Quote Post
adi456
post 11.09.2019, 13:51:04
Post #7





Grupa: Zarejestrowani
Postów: 248
Pomógł: 0
Dołączył: 21.01.2010
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


string(7) "2"
Go to the top of the page
+Quote Post
Pyton_000
post 11.09.2019, 13:51:54
Post #8





Grupa: Zarejestrowani
Postów: 7 813
Pomógł: 1373
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


formularz masz skopany. Pokaż go
Go to the top of the page
+Quote Post
dublinka
post 11.09.2019, 13:54:46
Post #9





Grupa: Zarejestrowani
Postów: 271
Pomógł: 33
Dołączył: 22.02.2008

Ostrzeżenie: (0%)
-----


Jesli ustawisz na sztywno $liczbe


  1. $kod = 2;
  2.  
  3. echo "problem dotyczy $kod.<br>";
  4. if(is_numeric($kod)){
  5. echo 'liczba';
  6. } else {
  7. echo 'lipa liczba';
  8. }
  9. echo '<br>';
  10.  
  11. if(is_array($kod)){
  12. echo 'tablica';
  13. } else {
  14. echo 'lipa tablica';
  15. }
  16.  
  17. echo '<br>';
  18.  
  19. $test1=$kod*1;
  20. echo $test1.'<br>';
  21.  
  22. $test2=(int) $kod;
  23. echo $test2.'<br>';
  24.  
  25. $test2=intval($kod);
  26. echo $test2.'<br>';


Wynik:

problem dotyczy 2.
liczba
lipa tablica
2
2
2

Wiec problem w formularzu raczej
Go to the top of the page
+Quote Post
adi456
post 11.09.2019, 13:56:32
Post #10





Grupa: Zarejestrowani
Postów: 248
Pomógł: 0
Dołączył: 21.01.2010
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


  1. $txt['js_onlick_rozlicz']=' czytaj(\'php/test.php\',\'nr_rozlicz='.$r['id'].'&nr_serwis='.$r['nr'].'&typ_rozlicz='.$r['typ'].'\',\'wynikpoz\'); ';


  1. $rozl=rozliczenia('lista',array('rozlicz_nr'=>$arr['post']['nr_rozlicz']))[0];
  2. $kody=explode(' ',$rozl['row']['kody']);
  3.  
  4. foreach($kody as $licz=>$kod){ $licz++;
  5. var_dump($kod);
  6.  
  7. $r=kod('info',array('kod'=>$kod))['row'];
  8. $razem+=$r['cena'];
  9. }


a sorki teraz się zorientowałem że ta liczba 2 pochodzi z bazy a nie z zmiennej POST (sorki ale mam gorączke)
ale dlaczego ten string nie chce się konwertować na liczbę?

Ten post edytował adi456 11.09.2019, 13:57:11
Go to the top of the page
+Quote Post
Pyton_000
post 11.09.2019, 14:06:04
Post #11





Grupa: Zarejestrowani
Postów: 7 813
Pomógł: 1373
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


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:
Kod
(int)filter_var($kod, FILTER_SANITIZE_NUMBER_INT)



Inne pytanie dlaczego tak się zapisuje (brak obróbki przed zapisem?)

Ten post edytował Pyton_000 11.09.2019, 14:07:06
Go to the top of the page
+Quote Post
dublinka
post 11.09.2019, 14:14:48
Post #12





Grupa: Zarejestrowani
Postów: 271
Pomógł: 33
Dołączył: 22.02.2008

Ostrzeżenie: (0%)
-----


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()
Go to the top of the page
+Quote Post
adi456
post 11.09.2019, 14:17:17
Post #13





Grupa: Zarejestrowani
Postów: 248
Pomógł: 0
Dołączył: 21.01.2010
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


w tym przypadku varchar jest wygodny bo najczęściej jest kilka liczb ale przynajmniej wiem w czym problem dzięki wielkie za info
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 23.09.2019 - 08:52