Validar campos numéricos en formulario php
Estoy empezando a aprender esto de php, estoy haciendo una calculadora de viaje, necesito hacer que php verifique que dos campos hayan sido escritos con números y si no regresar a la misma página mostrando un texto oculto., este sería el código del formulario en la página precio.php:
<p>Todos los campos son requeridos (entre 0 si es necesario).</p>
<?
//valor oculto
if ($_GET['error'] == "notnumeric")
{
echo "<p>*** Error! Uno o mas campos estan en blanco o no contienen numeros.</p>";
}
?>
<form name="frm_precio" id="frm_precio" method="post" action="precio_procesar.php">
<table width="60%" border="0" cellspacing="0" cellpadding="3">
<tr>
<td>Numero de adultos</td>
<td><input name="numAdults" type="text" id="numAdults" /></td>
</tr>
<tr>
<td>Numero de niños</td>
<td><input name="numChildren" type="text" id="numChildren" /></td>
</tr>
<tr>
<td>Tour name</td>
<td><select name="tourName" id="tourName">
<option value="500">Argentina</option>
<option value="700">Canada</option>
<option value="900">Egypto</option>
</select></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="Submit" value="Enviar" /></td>
</tr>
</table>
</form>
y este seria el de la pagina precio_procesar.php.
<?php echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?".">"; ?>
<?php
if ( is_numeric($_POST['numAdults'])==false or is_numeric($_POST['numChildren'])==false) {
header("Location: tourprice.php?error=notnumeric");
exit;
}
?>
<?php
$numAdult = $_POST['numAdults'];
$numChild = $_POST['numChildren'];
$basePrice = $_POST['tourName'];
$tourPrice = ($numAdult * $basePrice) + ($numChild * $basePrice);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
en la parte del body esta escrito esto:
<p>el costo estimado del tour es: <strong>$ <?php echo number_format ($tourPrice,2,'.',','); ?></strong>.</p>
¿Qué estoy haciendo mal?, por favor espero que me puedas ayudar, he buscado en manuales y cambio la palabra "or" por &&, pero no me lo valida, sino que calcula sin importar si se escribió números o no.
<p>Todos los campos son requeridos (entre 0 si es necesario).</p>
<?
//valor oculto
if ($_GET['error'] == "notnumeric")
{
echo "<p>*** Error! Uno o mas campos estan en blanco o no contienen numeros.</p>";
}
?>
<form name="frm_precio" id="frm_precio" method="post" action="precio_procesar.php">
<table width="60%" border="0" cellspacing="0" cellpadding="3">
<tr>
<td>Numero de adultos</td>
<td><input name="numAdults" type="text" id="numAdults" /></td>
</tr>
<tr>
<td>Numero de niños</td>
<td><input name="numChildren" type="text" id="numChildren" /></td>
</tr>
<tr>
<td>Tour name</td>
<td><select name="tourName" id="tourName">
<option value="500">Argentina</option>
<option value="700">Canada</option>
<option value="900">Egypto</option>
</select></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="Submit" value="Enviar" /></td>
</tr>
</table>
</form>
y este seria el de la pagina precio_procesar.php.
<?php echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?".">"; ?>
<?php
if ( is_numeric($_POST['numAdults'])==false or is_numeric($_POST['numChildren'])==false) {
header("Location: tourprice.php?error=notnumeric");
exit;
}
?>
<?php
$numAdult = $_POST['numAdults'];
$numChild = $_POST['numChildren'];
$basePrice = $_POST['tourName'];
$tourPrice = ($numAdult * $basePrice) + ($numChild * $basePrice);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
en la parte del body esta escrito esto:
<p>el costo estimado del tour es: <strong>$ <?php echo number_format ($tourPrice,2,'.',','); ?></strong>.</p>
¿Qué estoy haciendo mal?, por favor espero que me puedas ayudar, he buscado en manuales y cambio la palabra "or" por &&, pero no me lo valida, sino que calcula sin importar si se escribió números o no.
1 Respuesta
Respuesta de edysoftware
1