Comunidad de diseño web y desarrollo en internet online

problema validando radiobuttons en PHP

Citar            
MensajeEscrito el 21 Oct 2011 04:06 pm
Buenas.
tengo un buscador en PHP en el que un usuario puede escoger si busca un equipo ya sea por su numero de serie o por un código propio de la empresa.
lo que hice fue añadir este formulario con las opciones especificadas:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" bgcolor="white" align="right" style="text-align:right; font-size: large;">
<span class="letras"># Serial</span>
<input name= "tipo" type="radio" value="serial" />
<span class="letras">Código UCA</span>
<input name= "tipo" type="radio" value="codigo" />
<input type="text" name="termino" id="textfield" />
<input type="submit" name="busqueda" id="busqueda" value="Busqueda" />
</form>

por especificaciones ambas opciones en un principio están vacías y se me pidió validar que al dar submit se verifique el que debe haber seleccionado una opción, yo lo pensé así:

if(isset($_POST['busqueda'])){
if (($_POST['tipo']) != "") {
$msg="Debe introducir codigo de busqueda";
}else{
$msg="";
}

pero me aparece el error:
Notice: Undefined index: tipo in C:\wamp\www\DEI\buscador_equipo.php on line 12
la cual señala a: if (($_POST['tipo']) != "") {

alguien puede ayudarme por favor, como hago para validar el que las selecciones no estén vacías?

Por pabletoreto

11 de clabLevel



Genero:Masculino  

Software Developer

chrome
Citar            
MensajeEscrito el 21 Oct 2011 04:25 pm
seguro aparece cuando envias el form sin tiquear ningun radio button
y la comprobacion no la haces como debe hacerse
conoce las funciones isset y empty seran tus compañeras en la programacion para php

Código PHP :

//para hacer un debug sobre la variable _POST
var_dump($_POST);
if(isset($_POST['busqueda']))
{
    if (empty($_POST['tipo'])) {
        $msg="Debe introducir codigo de busqueda";
    }
    else
    {
        $msg="";
    }
}

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 21 Oct 2011 04:27 pm
Siempre guiándome por el código que has puesto, ninguno de los radiobuttons está seleccionado por omisión, por lo tanto si el visitante hace clic en "Busqueda", nunca se creará una variable POST que se llame "tipo" y por tanto no existirá una variable $_POST['tipo'] en PHP, que es lo que el mensaje de error está diciendo.

Puedes hacer dos cosas.

Si es obligatorio que una de de las dos opciones esté seleccionada, pues pon el atributo "checked" a uno de los dos radiobuttons.

Si no es obligatorio entonces verifica que $_POST['tipo'] existe antes de evaluar su valor:

Código PHP :

if (isset($_POST['tipo']) and (!empty($_POST['tipo'])) { // sarasa sarasa...

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 21 Oct 2011 04:35 pm
gracias a ambos, en efecto me ayudaron, solo que el var_dump($_POST); me daba me escribía un array en la página y por eso no lo use, los molesto un poco más si es que pueden ayudarme pues ahora me da este error

if((isset($_POST['busqueda'])) && trim($_POST['tipo']) == "serial"){
arriba valido que se haya oprimido el boton para realizar la busqueda, el boton tipo submit se llama busqueda y las opciones tal como antes son dos: serial y codigo, por lo que según milógica lo que hago es validar que se haya pedido una busqueda y que el radio seleccionado sea serial, pero me da este error:

Notice: Undefined index: tipo in C:\wamp\www\DEI\buscador_equipo.php on line 37

gracias de antemano.

Por pabletoreto

11 de clabLevel



Genero:Masculino  

Software Developer

chrome
Citar            
MensajeEscrito el 21 Oct 2011 04:40 pm
antes de usar variables volatiles como POST y GET en funciones tienes que comprobar su existencia siempre tienes que comprobar la existencia

Código :

if((isset($_POST['busqueda'])) && trim($_POST['tipo']) == "serial"){ 


Código :

if((isset($_POST['busqueda'])) && isset($_POST['tipo']) && trim($_POST['tipo']) == "serial"){ 

el AND funciona de izquierda a derecha en caso de no ser verdadera algun miembro, se detiene las demas comprobaciones osea:
en caso de no existir ($_POST['tipo']) el trim nunca se ejecutara, asi se ahorra procesos inecesarios

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 21 Oct 2011 05:01 pm
muchas gracias, solucionado !!!

Por pabletoreto

11 de clabLevel



Genero:Masculino  

Software Developer

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.