• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PHP is_int()

Object Storage Arubacloud
+1 głos
344 wizyt
pytanie zadane 28 czerwca 2021 w PHP przez Doge Gaduła (3,370 p.)

Witam, mam następujący kod:

<!DOCTYPE HTML>
<html>
<head>
	<meta charset = "utf-8" />
	<title>Podsumowanie zamówienia</title>
</head>
<body>
<?php
	$ile_paczkow = $_POST['paczki'];
	$ile_rogali = $_POST['rogale'];
	if(!isset($ile_paczkow) || !isset($ile_rogali))
	{
		header('Location: index.php');
	}
	if(is_int($ile_paczkow) && is_int($ile_rogali))
	{
		
	}
	else
	{
		header('Location: index.php');
	}
	$suma = 0.99*$ile_paczkow + 1.29*$ile_rogali;
	
echo<<<END
	Podsumowanie zamówienia
	<table border="1" cellpadding="10" cellspacing="0">
		<tr> 
			<td>Ilość pączków(0,99zł/szt)</td> <td>$ile_paczkow</td>
		</tr>
		<tr> 
			<td>Ilość rogali(1,29zł/szt)</td> <td>$ile_rogali</td>
		</tr>
		<tr> 
			<td>SUMA</td> <td>$suma</td>
		</tr>
	</table>
	<br />
	<a href="index.php">Powrót do strony głównej</a>
END;
	
?>
</body>
</html>

i nie wiem dlaczego, ale nie chce mi działać funkcja "is_int()", próbowałem również robić to za pomocą

if(is_int($ile_paczkow) == false)

oraz

if(!is_int($ile_paczkow))

lecz nic nie działa. Oczywiście przy zmianie sposobów zmieniałem również zawartość nawiasów {} if'a tak, aby za każdym razem, kiedy zmienna nie jest intem, przerzucało do index.php. Niestety nic mi nie działa, ponieważ za każdym razem niezależnie od wartości zmiennej przerzuca do dokumentu index.php. Prosiłbym o wytłumaczenie, ponieważ nie mam już pomysłu, co tutaj może nie działać.

1 odpowiedź

+2 głosów
odpowiedź 28 czerwca 2021 przez Comandeer Guru (600,810 p.)
wybrane 28 czerwca 2021 przez Doge
 
Najlepsza

Bo dane przesyłane w formularzu zawsze przychodzą jako string. Powinieneś użyć funkcji is_numeric.

komentarz 28 czerwca 2021 przez Doge Gaduła (3,370 p.)
bardzo dziękuje, teraz działa :)
komentarz 28 czerwca 2021 przez Comandeer Guru (600,810 p.)

Chociaż warto tu też zauważyć, że is_numeric zwróci true także dla liczb z przecinkiem.

Inną możliwością jest skorzystanie tutaj z wyrażeń regularnych, np.

if ( preg_match( '/^\d+$/', $ile_paczkow ) )

 

komentarz 28 czerwca 2021 przez Doge Gaduła (3,370 p.)

a co oznacza tutaj

'/^\d+$/'

?

2
komentarz 28 czerwca 2021 przez Comandeer Guru (600,810 p.)

To jest wyrażenie regularne:

  • / to znaki ograniczające; wskazują początek i koniec wyrażenia,
  • ^ oznacza początek tekstu,
  • \d+ oznacza co najmniej jedną cyfrę,
  • $ oznacza koniec tekstu.

Czyli to wyrażenie można przetłumaczyć jako "tekst, który składa się z co najmniej jednej cyfry".

Podobne pytania

0 głosów
5 odpowiedzi 162 wizyt
pytanie zadane 31 stycznia w PHP przez Iei Obywatel (1,950 p.)
0 głosów
1 odpowiedź 460 wizyt
0 głosów
3 odpowiedzi 661 wizyt
pytanie zadane 28 lipca 2020 w PHP przez x_000 Obywatel (1,460 p.)

92,555 zapytań

141,403 odpowiedzi

319,556 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...