Espero me puedan echar una mano con el siguiente problema.
Cuento con un formulario para una tienda mismo que tiene diferentes campos segun la categoria, dependiendo la categoria, jquery me arma un formulario con determinados campos u otro.
Ahora bien, como la validación con javascript es menos segura que la validacion del lado del servidor, he decidido realizarla unicamente del lado del servidor, intentando que esta sea lo menos perceptible para el usuario (es decir, todo sobre la misma pagina, dando la apariencia que no se sale de la misma).
He desarrollado un codigo php que si bien no esta terminado, pues por ahora solo comprueba que los campos no se encontraran vacios, no funciona del todo bien. Resulta que en primera instancia, si las condiciones no se cumplen muestra el mensaje "los datos no pasan", este mensaje solo lo he puesto de modo que pueda verificar el flujo de datos. En caso de que las condiones si se cumplan se muestra el mensaje "rutina para insertar en db", en este punto es donde crearia el codigo necesario para introducir los datos en mi tabla mysql.
El codigo que utilizo es el siguiente:
Código PHP:
<?
$categoria=$_POST["categoria"]; //definimos la caregoria.
//Si la categoria no se ha seleccionado entonces imprimimos el formulario.
if(isset($_POST["Publicar"]) && ($categoria=="cat")or($categoria=="")){
echo "$principal";break;
}
else{
//comprobamos categoria Accesorios y refacciones
if(($categoria=="Accesorios y refacciones")){
}
//Comprobamos que los campos no se encuentren vacios
if(($_POST["ar1"]!="")&&($_POST["ar2"]!="")&&($_POST["ar3"]!="0")&&($_POST["ar4"]!="")&&($_POST["ar5"]!="")&&($_POST["ar6"]!="")&&($_POST["ar7"]!="")&&($_POST["ar8"]!="0")&&($_POST["ar9"]!="0")&&($_POST["ar10"]!="")&&($_POST["ar11"]!="")&&($_POST["ar12"]!="")){
echo"rutina para insertar en db";
}
else{
//comprobamos categoria Computadoras y accesorios
if(($categoria=="Computadoras y accesorios")){
}
//Comprobamos que los campos no se encuentren vacios
if(($_POST["ca1"]!="")&&($_POST["ca2"]!="")&&($_POST["ca3"]!="0")&&($_POST["ca4"]!="0")&&($_POST["ca5"]!="")&&($_POST["ca6"]!="")&&($_POST["ca7"]!="")&&($_POST["ca8"]!="0")&&($_POST["ca9"]!="0")&&($_POST["ca10"]!="")&&($_POST["ca11"]!="")&&($_POST["ca12"]!="")){
echo"rutina para insertar en db";
}
else{
//comprobamos categoria Celulares y teléfonos
if(($categoria=="Celulares y teléfonos")){
}
if(($_POST["ct1"]!="")&&($_POST["ct2"]!="")&&($_POST["ct3"]!="0")&&($_POST["ct4"]!="")&&($_POST["ct5"]!="")&&($_POST["ct6"]!="0")&&($_POST["ct7"]!="0")&&($_POST["ct8"]!="")&&($_POST["ct9"]!="0")&&($_POST["ct10"]!="")&&($_POST["ct11"]!="")&&($_POST["ct12"]!="")&&($_POST["ct13"]!="0")&&($_POST["ct14"]!="0")&&($_POST["ct15"]!="")&&($_POST["ct16"]!="")&&($_POST["ct17"]!="")){
echo"rutina para insertar en db";
}
else{
//comprobamos categoria Consolas y videojuegos
if(($categoria=="Consolas y videojuegos")){
}
if(($_POST["cv1"]!="")&&($_POST["cv2"]!="")&&($_POST["cv3"]!="0")&&($_POST["cv4"]!="")&&($_POST["cv5"]!="0")&&($_POST["cv6"]!="")&&($_POST["cv7"]!="")&&($_POST["cv8"]!="")&&($_POST["cv9"]!="")&&($_POST["cv10"]!="")&&($_POST["cv11"]!="0")&&($_POST["cv12"]!="0")&&($_POST["cv13"]!="")&&($_POST["cv14"]!="")&&($_POST["cv15"]!="")){
echo"rutina para insertar en db";
}
else{
//comprobamos categoria Tv, video, audio y fotografía
if(($categoria=="Tv, video, audio y fotografía")){
}
if(($_POST["tvaf1"]!="")&&($_POST["tvaf2"]!="")&&($_POST["tvaf3"]!="0")&&($_POST["tvaf4"]!="")&&($_POST["tvaf5"]!="0")&&($_POST["tvaf6"]!="0")&&($_POST["tvaf7"]!="")&&($_POST["tvaf8"]!="0")&&($_POST["tvaf9"]!="")&&($_POST["tvaf10"]!="")&&($_POST["tvaf11"]!="")&&($_POST["tvaf12"]!="0")&&($_POST["tvaf13"]!="0")&&($_POST["tvaf14"]!="")&&($_POST["tvaf15"]!="")&&($_POST["tvaf16"]!="")){
echo"rutina para insertar en db";
}
else{
//comprobamos categoria Muebles
if(($categoria=="Muebles")){
}
if(($_POST["m1"]!="")&&($_POST["m2"]!="")&&($_POST["m3"]!="")&&($_POST["m4"]!="")&&($_POST["m5"]!="0")&&($_POST["m6"]!="0")&&($_POST["m7"]!="")&&($_POST["m8"]!="")&&($_POST["m9"]!="")&&($_POST["m10"]!="0")&&($_POST["m11"]!="0")&&($_POST["m12"]!="")&&($_POST["m13"]!="")&&($_POST["m14"]!="")){
echo"rutina para insertar en db";
}
else{
//comprobamos categoria ropa y calzado
if(($ctegoria=="Ropa y calzado")){
}
if(($_POST["rc1"]!="")&&($_POST["rc2"]!="")&&($_POST["rc3"]!="")&&($_POST["rc4"]!="")&&($_POST["rc5"]!="")&&($_POST["rc6"]!="0")&&($_POST["rc7"]!="0")&&($_POST["rc8"]!="")&&($_POST["rc9"]!="")&&($_POST["rc10"]!="")){
echo"rutina para insertar en db";
}
else{
echo"los datos no pasan";
}
}
}
}
}
}
}
}
echo $categoria;
<?
He probado haciendo echo de la categoria para comprobar si funciona correctamente y si, en efecto funciona, cambia si se cambia en el formulario, pero al cambiarla ya no realiza la validacion y eso seria un inconveniente pues haciendo eso, cualquiera podria darle atras en navegador y una vez realizada la validacion, rellenar los campos con los datos que se quiera y volver a enviar pues ya no realizaria la validacion en el segundo envio (es decir, si pasa la validacion en el primer submit y se da atras en el navegador y se cambia los datos o se borran, se puede hacer un segundo submit y sigue pasando la validacion, lo cual no seria correcto).
Espero cualquier comentario, observacion o sugerencia y de antemano agradezco la atencion prestada.
Saludos!!!