Foros del Web » Programando para Internet » Javascript »

Formulario en php + javascript no me funciona =(

Estas en el tema de Formulario en php + javascript no me funciona =( en el foro de Javascript en Foros del Web. Saludos! Después de muchos intentos decido comentar esta duda, esperando que alguien me saque de este 'circulo vicioso' en el que me encuentro. Resulta que ...
  #1 (permalink)  
Antiguo 25/06/2008, 10:46
 
Fecha de Ingreso: junio-2008
Mensajes: 15
Antigüedad: 15 años, 10 meses
Puntos: 0
Exclamación Formulario en php + javascript no me funciona =(

Saludos!

Después de muchos intentos decido comentar esta duda, esperando que alguien me saque de este 'circulo vicioso' en el que me encuentro.

Resulta que tengo un formulario html, generado algunas de sus partes con php. Este formulario se valida con un script en javascript y posteriormente se envia a otra pagina.

El problema es que este formulario funciona cuando le da la gana; es decir, a veces hay que darle en refrescar para que funcione, otras veces funciona quitando alguna parte del codigo javascript, otras veces con el codigo que quité, otras veces de ninguna manera!!!

Mas abajo incluyo todo el codigo de la pagina, sin incluir el codigo css que no es necesario. No puse los pedazos del problema porque es mejor que lo vean, quienes deseen ayudarme, como un todo y puedan descubrir en que la estoy embarrando.

Agradezco de antemano a quienes puedan ayudarme, llevo semanas tratando de resolver esto y nada que lo logro.

---------------
Primera parte del codigo:
Código:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Crear nuevo producto</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script language = "javascript">
//la funcion "IsInteger(YourNumber)" chequea si "YourNumber" es un número entero con o sin signo valido
//La variable "YourNumber" es una cadena de caracteres
function IsInteger(YourNumber){
	var Template = /^[+|-]?d+$/ //Formato de número entero
	return (Template.test(YourNumber)) ? 1 : 0 //Compara "YourNumber" con el formato "Template" y si coincidevuelve verdadero si no devuelve falso
}
//la funcion "IsReal(YourNumber)" chequea si "YourNumber" es un número real con o sin signo valido
//La variable "YourNumber" es una cadena de caracteres
function IsReal(YourNumber){
	var Template = /^(([+|-]?d+(.d*)?)|([+|-]?(d*.)?d+))$/ //Formato de número real con signo
	return (Template.test(YourNumber)) ? 1 : 0 //Compara "YourNumber" con el formato "Template" y si coincidevuelve verdadero si no devuelve falso
}

function arreglo(cadena){
	//Crea arreglo con piezas.
	i=0;
	aux=0;
	for(i=0; i<cadena.length; i++){
		if(cadena.charAt(i)=="/")
			aux+=1;
	}
	piezas = new Array(aux);
	aux ="";
	cont=0;
	for(i=0; i<cadena.length; i++){
		if(cadena.charAt(i)!="/"){
			aux+=cadena.charAt(i);
		}
		else{
			piezas[cont]=aux;
			aux="";
			cont+=1;
		}		
	}
	return piezas;
}
function seleccionMat(nombre){

	material = document.fCrear["mat_"+nombre].value;
	arreglo= material.split("/");
	unidad= arreglo[2];
	'alert(unidad);
	if(unidad!=" CMS " && unidad!=" LAM "){
		document.fCrear["ancho_"+nombre].disabled = true;
		document.fCrear["ancho_"+nombre].value = 0;
		document.fCrear["largo_"+nombre].disabled = true;
		document.fCrear["largo_"+nombre].value= 0;
	}else{
		document.fCrear["ancho_"+nombre].disabled = false;
		document.fCrear["largo_"+nombre].disabled = false;
	}
}
function validacion(){
	
	//Devuelve el arreglo de acuerdo a la cantidad de piezas que se hayan creado. 
	piezas = arreglo(document.fCrear.piezas.value);
	estaBien = true;
	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;
		if(!document.fCrear["ancho_"+nombre].disabled){
			ancho = document.fCrear["ancho_"+nombre].value;
			largo = document.fCrear["largo_"+nombre].value;
			cantidad = document.fCrear["cant_"+nombre].value;
			//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();
			}
			//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();
			}
		}
	}
	
	//Valido la mano de obra.  Si esta seleccionada, debe aparecer una cantidad adjunta. 
	//mo1= Costura, mo2= Corte, mo3= PegarBroche, mo4= Sellado, mo5= Corte sesgo, mo6= Empaque y revisión.
	if(document.fCrear.checkMo1.checked && document.fCrear.cantMo1.value=="" && estaBien){
		estaBien=false;
		alert("Debe digitar la cantidad para la mano de obra Costura!");
		document.fCrear.cantMo1.focus();
	}
	if(!document.fCrear.checkMo1.checked){
		document.fCrear.cantMo1.value = 0;
	}
	if(document.fCrear.checkMo2.checked && document.fCrear.cantMo2.value=="" && estaBien){
		estaBien=false;
		alert("Debe digitar la cantidad para la mano de obra Corte!");
		document.fCrear.cantMo2.focus();
	}
	if(!document.fCrear.checkMo2.checked){
		document.fCrear.cantMo2.value = 0;
	}
	if(document.fCrear.checkMo3.checked && document.fCrear.cantMo3.value=="" && estaBien){
		estaBien=false;
		alert("Debe digitar la cantidad para la mano de obra Pegar broche!");
		document.fCrear.cantMo3.focus();
	}
	if(!document.fCrear.checkMo3.checked){
		document.fCrear.cantMo3.value = 0;
	}
	if(document.fCrear.checkMo4.checked && document.fCrear.cantMo4.value=="" && estaBien){
		estaBien=false;
		alert("Debe digitar la cantidad para la mano de obra Sellado!");
		document.fCrear.cantMo4.focus();
	}
	if(!document.fCrear.checkMo4.checked){
		document.fCrear.cantMo4.value = 0;
	}
	if(document.fCrear.checkMo5.checked && document.fCrear.cantMo5.value=="" && estaBien){
		estaBien=false;
		alert("Debe digitar la cantidad para la mano de obra Corte sesgo!");
		document.fCrear.cantMo5.focus();
	}
	if(!document.fCrear.checkMo5.checked){
		document.fCrear.cantMo5.value = 0;
	}
	if(document.fCrear.checkMo6.checked && document.fCrear.cantMo6.value=="" && estaBien){
		estaBien=false;
		alert("Debe digitar la cantidad para la mano de obra Empaque y revisión!");
		document.fCrear.cantMo6.focus();
	}
	if(!document.fCrear.checkMo6.checked){
		document.fCrear.cantMo6.value = 0;
	}
	/*Nota: El campo de observaciones no se valida pues no es obligatorio.  Si el usuario no digita nada, se rellena con ...
	Si todo esta bien, envia el formulario a la aplicación php que ingresa el producto a la BD. */
	if(estaBien && confirm("A continuación se va a crear un nuevo producto.\nDesea continuar?")){
		document.fCrear.submit();
	}
}
</script>


</head>
<body>
<table width="800" border="1" align="center" cellpadding="0" cellspacing="0" id="Table_01">
  <tr>
    <td colspan="3" rowspan="2" background="images/ft-57_03.jpg" width="100%">
		<table width="100%"  border="0" align="center" cellpadding="2" cellspacing="0">
	        <tr>
	          <td width="8%">&nbsp;</td>
	          <td width="94%" height="83"><span class="style5">Proimpo</span></td>
	        </tr>
      </table>
	</td>
  </tr>
  <tr></tr>
  <tr>
    <td sTYLE="table-layout:fixed" height="100%" background="images/ft-57_08.jpg" valign="top" width="30%">
	  <br/>
	  <br/>
	  &nbsp;&nbsp;&nbsp;<strong><a href="http://192.168.1.232/proyecto/index.html">Inicio</a></strong><br/>
	  <br/>
	  <br/>
	  &nbsp;&nbsp;&nbsp;<strong><a href="http://192.168.1.232/proyecto/crear.php">Crear nuevo producto</a></strong><br/>
	  <br/>
	  <br/>
	  &nbsp;&nbsp;&nbsp;<strong><a href="http://192.168.1.232/proyecto/cotizacion.html">Cotizar producto</a></strong><br/>
	  <br/>
	  <br/>
	  &nbsp;&nbsp;&nbsp;<strong><a href="http://192.168.1.232/proyecto/consultar.html">Consultar producto</a></strong><br/>
	  <br/>
	  <br/>
	  &nbsp;&nbsp;&nbsp;<strong><a href="http://192.168.1.232/proyecto/eliminar.html">Eliminar producto</a></strong><br/>
	  <br/>
	  <br/>
	  &nbsp;&nbsp;&nbsp;<strong><a href="http://192.168.1.232/proyecto/modPrecios.php">Actualizar precios</a></strong><br/>
	  
    </td>
    
    <td colspan="2" background="images/ft-57_10.jpg" valign="top" width="70%">
		<table width="100%"  border="0" cellspacing="0" cellpadding="4">
			<tr>
			 <td width="100%">
			  <?php 
			  //$aux= split("-",$_POST["cliente"]);
			  //echo "Referencia: <b>".$_POST["referencia"]."</b><p>Cliente: <b>".$aux[1];			  
			  echo "Referencia: <b>".$_POST["referencia"];
			  ?>
			  </td>
	        </tr>
			<tr>
			<td>
					<table  width="100%"  border="0" cellspacing="0" cellpadding="4">
					<tr><td colspan="6"><HR width="90%"></tr>
					<td width="100%" colspan="6"><b>Indique por favor el material, ancho, largo y cantidad de cada pieza a utilizar:</b>
  #2 (permalink)  
Antiguo 25/06/2008, 10:49
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Formulario en php + javascript no me funciona =(

Tema trasladado a Javascript.
  #3 (permalink)  
Antiguo 25/06/2008, 10:51
 
Fecha de Ingreso: junio-2008
Mensajes: 15
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Formulario en php + javascript no me funciona =(

Segunda parte del codigo:

Código:
					
<FORM NAME="fCrear" METHOD="POST" ACTION="funcion.php">
<?php
//Extraigo el codigo del campo cliente.
$arreglo = split("-",$_POST["cliente"]);
$codCliente = $arreglo[0];
//Incluyo en el formulario como ocultos, los campos referencia, codigo cliente y crm.
echo "<input type=\"hidden\" name=\"referencia\" value=\"".$_POST["referencia"]."\"><input type=\"hidden\" name=\"codCliente\" value=\"".$codCliente."\"><input type=\"hidden\" name=\"crm\" value=\"".$_POST["crm"]."\"><input type=\"hidden\" name=\"descripcion\" value=\"".$_POST["descripcion"]."\"><input type=\"hidden\" name=\"articulo\" value=\"".$_POST["articulo"]."\"><input type=\"hidden\" name=\"troqueles\" value=\"".$_POST["troqueles"]."\">";
$piezas = split("/",$_POST["piezas"]);
$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>";
		}//1\''
		//$materiales.="</SELECT>";
		//Esto se hace para cada material en el arreglo de piezas.
		
		$menu="<td width=\"70%\"><center><SELECT style=\"width:300px\" onChange=\"seleccionMat('".$piezas[$i]."')\" 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>";
}
?>				
		<td colspan="5">
		<center>------------------------------------------------------------------------------------------------------------
		</tr>
		<tr><td colspan="5"><b>Mano de obra: &nbsp;</td></tr>
		<tr><td colspan="5">
		<table width="100%"  border="0" cellspacing="0" cellpadding="4">
		<tr>
		<!--MANO DE OBRA:
		mo1= Costura, mo2= Corte, mo3= PegarBroche, mo4= Sellado, mo5= Corte sesgo, mo6= Empaque y revisión.
		-->
		<td><input type="checkbox" name="checkMo1" value="ON">Costura</td><td><input type="text" name="cantMo1" size="2"></td>
		<td><input type="checkbox" name="checkMo2" value="ON">Corte</td><td><input type="text" name="cantMo2" size="2"></td>
		<td><input type="checkbox" name="checkMo3" value="ON">Pegar broche</td><td><input type="text" name="cantMo3" size="2"></td>
		</tr>
		<tr>
		<td><input type="checkbox" name="checkMo4" value="ON">Sellado</td><td><input type="text" name="cantMo4" size="2"></td>
		<td><input type="checkbox" name="checkMo5" value="ON">Corte sesgo</td><td><input type="text" name="cantMo5" size="2"></td>
		<td><input type="checkbox" name="checkMo6" value="ON">Empaque y revisión</td><td><input type="text" name="cantMo6" size="2"></td>
		</tr>
		</table>
		</td>
		</tr>
		<tr><td align="left" colspan="5">
		<b>Observaciones: </b>&nbsp; <input type="text" name="obs" size="80"> (opcional)
		</td></tr>
		<input type="hidden" name="tarea" value= "agregar">
		<tr><td colspan="5"><HR width="90%"></tr>
		<tr><td colspan="5"><center>
		<input type="button" value="Crear producto!" name="crearProd" onclick="validacion()">
		<input type="reset" value="Limpiar campos" name="limpiarCampos">
		</td></tr>
		</FORM>
		</table>
		</td>
		</tr>
      </table>
	</td>
  </tr>  
</table>
<div style="font-size: 0.5em; text-align: center; margin-top: 1.0em; margin-bottom: 1.0em;">
Design downloaded from <a href="http://www.freewebtemplates.com/">Free Templates</a> - your source for free web templates
</div>
</body>
</html>
  #4 (permalink)  
Antiguo 25/06/2008, 10:51
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: Formulario en php + javascript no me funciona =(

hermano tienes es un problema de js... te recomiendo vallas a ese foro... ya lei tu declaracion php y esta perfecta... ese tipo de problemas suele suceder con el js...


saludos y suerte!!!
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #5 (permalink)  
Antiguo 25/06/2008, 10:54
 
Fecha de Ingreso: junio-2008
Mensajes: 15
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Formulario en php + javascript no me funciona =(

Podrias ser un poco mas especifico con el js? La verdad le he votliado mucho y nada que doy con el problema =( =( =(
  #6 (permalink)  
Antiguo 31/07/2008, 12:06
 
Fecha de Ingreso: mayo-2006
Mensajes: 58
Antigüedad: 18 años
Puntos: 0
Respuesta: Formulario en php + javascript no me funciona =(

el único que error que me marcó fue un apóstrofo que tenías antes de un alert:
Código HTML:
 'alert(unidad)
Esto está en la función seleccionMat(nombre), por lo demás no sé, ya que no se pude probar exactamente lo que hace, tal vez ya encontraste la solución.

Salu2
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:34.