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.

1 Respuesta

Respuesta
1
Lo primero es ver si recibes bien los valores. Por lo que me dices creo (o supongo que si los recibe bien), si no estas seguro usa un echo para ver que valor tienen las variables numAdults y numchildren.
despues te recomiendo que quites el== false y lo pongas asi:
if ( !is_numeric($_POST['numAdults']) and !is_numeric($_POST['numChildren'])) {
y quitar la primera linea de:
<?php echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?".">"; ?>
pq en caso de que no sean numerico al ejecutar el header te va amarcar error, pq para usar el header, no se debe de mandar nada antes.
Excelente, Gracias por tu respuesta, ahora estoy en ella, y tenias razón, ¿quite la primera linea de <?php echo y ahora ya funciona, ¿lo añadí de más no?
Ok, bye.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas