Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Javascript (http://www.forosdelweb.com/f13/)
-   -   Problema con formulario generado en php y script de validacion en js (http://www.forosdelweb.com/f13/problema-con-formulario-generado-php-script-validacion-js-609364/)

rodaeche 25/07/2008 15:01

Problema con formulario generado en php y script de validacion en js
 
Saludos!!!!

Una vez mas, me dirijo ante ustedes en busca de una luz en medio de la oscuridad =(

No estoy muy seguro donde se deba poner este tema, por lo que deben tenerme un poco de paciencia mientras le cojo bien el tiro a estos asuntos...

Ok, esta es la situación: En una pagina html + php, con sesion abierta, tengo un formulario con un boton que llama a una funcion en js que valida los datos del mismo. El script verifica los datos del formulario y envia mensaje de error en los datos, en caso de haberlo o envia el formulario a otra página. El caso es que cuando se detecta un error, se notifica y el boton queda inservible; de hecho todos los botones quedan sin funcionamiento. La verdad no se a que se deba esto, creo que puede ser por las sesiones pues antes de implementar esto el formulario funcionaba bien y no se bloqueaba nada.

Un_Tico 25/07/2008 15:18

Respuesta: Problema con formulario generado en php y script de validacion en js
 
Mmmmm...

Porque no pones el código, asi solo imaginandolo esta algo dificil ayudarte..

Saludos... :adios:

rodaeche 25/07/2008 16:47

Respuesta: Problema con formulario generado en php y script de validacion en js
 
Esta es la funcion js que valida
Código:

function validacion(){

estaBien = true;
//Devuelve el arreglo de acuerdo a la cantidad de piezas que se hayan creado.
piezas = arreglo(document.fCrear.piezas.value);
aux="";
//Con el nombre de la pieza, verifico que todos los campos esten llenos.
for(i=0;i<piezas.length && estaBien;i++){
        nombre = piezas[i];
        material = document.fCrear["mat_"+nombre].value;
        arreglo= material.split("/");
        unidad= arreglo[2];
        //Validamos que se haya seleccionado un material
        if(material=="Seleccione un material..." && estaBien){
                estaBien = false;
                alert("Debe seleccionar un material para la pieza "+ nombre);
                document.fCrear["mat_"+nombre].focus();
        }else{
                if(unidad==" CMS " || unidad==" LAM "){
                        ancho = document.fCrear["ancho_"+nombre].value;
                        largo = document.fCrear["largo_"+nombre].value;
                        cantidad = document.fCrear["cant_"+nombre].value;
                       
                        //Validamos el ancho
                        if((ancho=="" || ancho==0) && estaBien) {
                                estaBien = false;
                                alert("Debe digitar el ancho de la pieza " + nombre);
                                document.fCrear["ancho_"+nombre].focus();
                        }
                        //Validamos el largo
                        if((largo==0 || largo=="") && estaBien){
                                estaBien = false;
                                alert("Debe digitar el largo de la pieza " + nombre);
                                document.fCrear["largo_"+nombre].focus();
                        }
                        //Validamos la cantidad
                        if((cantidad==0 || cantidad=="") && estaBien){
                                estaBien = false;
                                alert("Debe digitar la cantidad para la pieza " + nombre);
                                document.fCrear["cant_"+nombre].focus();
                        }
                }else{
                        document.fCrear["ancho_"+nombre].value = 0;
                        document.fCrear["largo_"+nombre].value= 0;
                }
        }
}

Y las listas se generan dinamicamente asi:

Código PHP:

<FORM NAME="fCrear" METHOD="POST" ACTION="funcion.php">
<?php
$piezas 
split("/",$_POST['piezas']); // <-- Contiene el arreglo de los NOMBRES de las piezas que el usuario digitó. 
//Con este ciclo volvemos las piezas Pieza Uno Dos a la forma Pieza_Uno_Dos. 
for($i=0$i<count($piezas)-1$i++){
    
$auxsplit(" ",$piezas[$i]);
    if(
count($aux)>1){
        
$piezas[$i]= $aux[0];
        
$j=1;
        for(; 
$j<count($aux)-1$j++){
            
$piezas[$i].= "_".$aux[$j];                            
        }
        
$piezas[$i].="_".$aux[$j];
    }
}
$menu"";
$ancho="";
$largo="";  
$cant="";
echo 
"<tr><td colspan= \"2\"></td><td><center><b>Ancho</td><td><center><b>Largo</td><td><center><b>Cantidad</td>";
//Me conecto a la BD para seleccionar la lista de los materiales.
if($c=mysql_connect("localhost","root","")){
    
//Conexión exitosa con la BD.  Se procede con el 'query' para los clientes.
    
mysql_select_db ("bd_productos_fabrica"$c);
    
$sql 'SELECT * FROM `materiales` ORDER BY `nombre` ASC';
    
//No se incluye la ultima posición de $piezas por ser una cadena vacía.
    
$i=0;
    echo 
"<ul>";
    
//echo "<script>alert('".$piezas[6]."');</script>";
    
for($i=0;$i<(count($piezas)-1);$i++){
        
//Tomo los materiales de la BD.
        
$res mysql_query($sql,$c);
        
$materiales "<option>Seleccione un material...</option>";
        
//Este ciclo me devuelve lista de materiales a escoger para cada pieza
        
while($row mysql_fetch_array($res)) {
            
$materiales.="<option size=\"20\">".$row["nombre"]." / ".$row["id_prov"]." / ".$row["unid_medida"]." / $".$row["costo_unid"]." / ".$row["id_mat"]."</option>";
        }
        
//Esto se hace para cada material en el arreglo de piezas.
                            
        
$menu="<td width=\"70%\"><center><SELECT style=\"width:300px\" size=\"1\" name=\"mat_".$piezas[$i]."\">".$materiales."</SELECT></td>";
        
$ancho="<td width=\"10%\"><center><input type=\"text\" name=\"ancho_".$piezas[$i]."\" size=\"2\"></td>";
        
$largo="<td width=\"10%\"><center><input type=\"text\" name=\"largo_".$piezas[$i]."\" size=\"2\"></td>";
        
$cant="<td width=\"10%\"><center><input type=\"text\" name=\"cant_".$piezas[$i]."\" size=\"2\"></td>";
        
//Crea la fila con el nombre de la pieza, lista de materiales, campo para el ancho, largo y cantidad. 
        
echo "<tr><td>-<font size=\"1\">",$piezas[$i],"</font></td>",$menu,$ancho,$largo,$cant,"</tr>";
    }
    echo 
"</ul>";
    
//Creo variable hidden que envia la cadena con los nombres de las piezas.
    
echo "<input type=\"hidden\" name=\"piezas\" value=\"".$_POST["piezas"]."\">";
    
//Libero recursos y cierro la conexión
    
mysql_free_result($res);
    if(!
mysql_close($c)){    
        
//Entra aquí si ha ocurrido algún error cerrando la conexión con la BD.
        
echo "<script>alert(\"Error cerrando la conexión.\")</script>";
    }
}else{
    echo 
"<script>alert(\"Ha ocurrido un error en la conexión.\")</script>";
}
?>

//...

<input type="button" value="Crear producto!" name="crearProd" onclick="validacion()">

</form>

Entonces como iba diciendo, si ocurre algun tipo de error, este es notificado al usuario y el formulario queda invalido... Ah y pues algunos comments son obvios, pero me sirven para guiarme en medio de todo ese reguero de codigo :-D


La zona horaria es GMT -6. Ahora son las 05:56.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.