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

PHP is_int()

VPS Starter Arubacloud
+1 głos
337 wizyt
pytanie zadane 28 czerwca 2021 w PHP przez Doge Gaduła (3,320 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 (599,730 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,320 p.)
bardzo dziękuje, teraz działa :)
komentarz 28 czerwca 2021 przez Comandeer Guru (599,730 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,320 p.)

a co oznacza tutaj

'/^\d+$/'

?

2
komentarz 28 czerwca 2021 przez Comandeer Guru (599,730 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 158 wizyt
pytanie zadane 31 stycznia w PHP przez Iei Obywatel (1,850 p.)
0 głosów
1 odpowiedź 427 wizyt
0 głosów
3 odpowiedzi 631 wizyt
pytanie zadane 28 lipca 2020 w PHP przez x_000 Obywatel (1,460 p.)

92,455 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...