Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/09/2010, 19:24
miguelangel23
 
Fecha de Ingreso: diciembre-2009
Mensajes: 82
Antigüedad: 14 años, 4 meses
Puntos: 0
Error_Formulario_PHP

Hola de nuevo amigos de Foros del Web,paso a explicarles el problema que tengo: Tengo un Formulario que esta formado por 5 campos:Tipo,Subtipo,Detalle,Monto,Observacion. Los tres primeros son combo box. De ellos les voy a hablar

Cuando yo selecciono una opcion de mi primer combo box(Tipo) deberia mostrarme(dependiendo de la opcion que escoga en el primer combo) una serie de opciones en mi combo Subtipo.. Pero me sale el sgte error:

Código:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 4
Ahora, lo que he hecho es imprimir la variable que almacena la consulta para saber con mas detalle en que parte me sale el error,y cuando hago eso me arroja lo sgte:
Código:
select d2.movimientoClase_id,d2.movimientoClase_nombre from movimientoclase d1 INNER JOIN movimientoclase d2 ON d1.movimientoClase_id=d2.movimientoClase_filiacion where d2.movimientoClase_tipo = 'OUT' and d2.movimientoClase_filiacion = You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 4
A continuacion les coloco el codigo:

Formulario:

Código:
<tr cellspacing="0" class="ewTable">
				<form action="#" method="post" onsubmit="return buscarcliente()">
				<td width="130" class="ewTableHeader">Tipo : </td>
				<td colspan="3"><select  id="movimientotipo" onchange='listarSubtipoEgresos()'>				
					<?php foreach($listaTipoEgreso as $egresoTipo) :?><option  value="<?php echo $egresoTipo->getMovimientoClase_id() ?>"><?php echo $egresoTipo->getMovimientoClase_nombre()?></option><?php endforeach; ?>
					</select>
				
				<!--<a href="clientelistop.php?width=400&height=200" rel="sexylightbox">ss</a>-->
				
				
				</td>
				</form>
			</tr>
			
			<!--<tr>
				<td class="ewTableHeader">Campo 1 : </td>
				<td colspan="3"><select  id="area" onchange='mostrar_conceptos()' name="concepto">				
					<?php foreach($array_categoria as $a) :?><option  value="<?php echo $a['id']?>"><?php echo $a['nombre'] ?></option><?php endforeach;?>
					</select>
				</td>
			</tr>-->
			<tr>
				<td class="ewTableHeader">Sub-Tipo : </td>
				<td colspan="3"><select  id="movimientosubtipo" onchange='listarDetalleEgresos()'>				
					<?php foreach($listarSubtipoEgresos as $egresoSubtipo) :?><option  value="<?php echo $egresoSubtipo->getMovimientoClase_id() ?>"><?php echo $egresoSubtipo->getMovimientoClase_nombre()?></option><?php endforeach; ?>
					</select>
				</td>
			</tr>
			<tr>
				<td class="ewTableHeader">Detalle : </td>
				<td colspan="3"><select  id="movimientodetalle" name="movimientodetalle">
					<?php foreach($listarDetalleEgresos as $egresoDetalle) :?><option  value="<?php echo $egresoDetalle->getMovimientoClase_id() ?>"><?php echo $egresoDetalle->getMovimientoClase_nombre()?></option><?php endforeach; ?>
					</select>
				</td>
			</tr>
Funcion listarSubtipoEgresos() (javascript)
Código:
function listarSubtipoEgresos()
{
	movimientotipo=$("#movimientotipo").attr("value");
	$.ajax({ type: "GET", url: "Controlador/MovimientoClase/listarSubtipoEgresos.php?movimientotipo="+movimientotipo,
	data: null,	  success: function(data){ 
	document.getElementById("movimientosubtipo").parentNode.innerHTML=data;
	}	});
}
listarSubtipoEgresos.php

Código:
<?php	
session_start();
require_once("../../ewcfg7.php");
include_once DIR_APLICACION."Logic/MovimientoClaseLogic.php";

$listarSubtipoEgresos=MovimientoClaseLogic::listarSubtipoEgresosTipo($_GET["tipoegresoid"]);
?>

<select  id="movimientosubtipo" onchange='listarDetalleEgresos()'>
<?php if(count($listarSubtipoEgresos)>0) { ?>
<?php foreach($listarSubtipoEgresos as $egresoSubtipo) :?><option  value="<?php echo $egresoSubtipo->getMovimientoClase_id() ?>"><?php echo $egresoSubtipo->getMovimientoClase_nombre()?></option><?php endforeach; ?>
<?php } else { ?> <option value="0">No Existen Subtipos</option> <?php } ?>
</select>
Funcion listarDetalleEgresos() (javascript)

Código:
function listarDetalleEgresos()
{
	movimientosubtipo=$("#movimientosubtipo").attr("value");
	$.ajax({ type: "GET", url: "Controlador/MovimientoClase/listarDetalleEgresos.php?movimientosubtipo="+movimientosubtipo,
	data: null,	  success: function(data){ 
	document.getElementById("movimientodetalle").parentNode.innerHTML=data;
	}	});
}
listarDetalleEgresos.php

Código:
<?php	
session_start();
require_once("../../ewcfg7.php");
include_once DIR_APLICACION."Logic/MovimientoClaseLogic.php";

$listarDetalleEgresos=MovimientoClaseLogic::listarDetalleEgresosSubtipoTipo($_GET["tipoegresoid"]);
?>

<select  id="movimientodetalle" name="movimientodetalle">
<?php if(count($listarDetalleEgresos)>0) { ?>
<?php foreach($listarDetalleEgresos as $egresoDetalle) :?><option  value="<?php echo $egresoDetalle->getMovimientoClase_id() ?>"><?php echo $egresoDetalle->getMovimientoClase_nombre()?></option><?php endforeach; ?>
<?php } else { ?> <option value="0">No Existen Detalles</option> <?php } ?>
</select>
MovimientoClaseLogic.php: archivo donde realizo las consultas. La consulta donde me indica el error es aquella que se encuentra en el metodo public static function listarSubtipoEgresosTipo($tipoegresoid).Aqui les pongo los metodos que contienen las tres consultas que me van a permitir mostrar los datos en los combos que he mencionado anteriormente. (Les pusiera todo el codigo pero me sale el error "el texto que has ingresado es muy largo"(este es error de la pagina foros del web,ya que no permite muchos caracteres ok)

Código:
<?php
//namespace Logic;
require_once(DIR_APLICACION."bdconexion.php");
require_once(DIR_APLICACION."Entidad/MovimientoClase.php");

//use Entidad\MovimientoClase;

class MovimientoClaseLogic
{

public static function listarTipoEgresos(){
		$sql="select movimientoClase_id,movimientoClase_nombre from movimientoclase
			  where movimientoClase_tipo = 'OUT' and movimientoClase_filiacion IS NULL";
		//conexion::getInstance()->consulta("select id,nombre from movimiento_tipo where nombre = 'Servicios' or nombre = 'Administrativos' or nombre = 'Gastos de Representacion' or nombre = 'Bancos' or nombre = 'Planilla' or nombre = 'Impuestos'");
		$res = bdconexion::getInstance()->consulta($sql);
		$listarTipoEgresos = array();
			if(count($res >0)){
                            foreach($res as $item):
                                    $movimientoClase = new MovimientoClase();
                                    $movimientoClase->setMovimientoClase_id($item[0]);
                                    $movimientoClase->setMovimientoClase_nombre($item[1]);
                                    $listarTipoEgresos[]=$movimientoClase;
                            endforeach;
            }
            return $listarTipoEgresos;
	}
	
	
	public static function listarSubtipoEgresosTipo($tipoegresoid)
	{
		$sql="select d2.movimientoClase_id,d2.movimientoClase_nombre 
			 from movimientoclase d1 INNER JOIN 
			 movimientoclase d2 ON d1.movimientoClase_id=d2.movimientoClase_filiacion 
			 where d2.movimientoClase_tipo = 'OUT' and d2.movimientoClase_filiacion = $tipoegresoid";
		echo "$sql";//aqui hago la impresion de mi consulta
		$res = bdconexion::getInstance()->consulta($sql);
		
		$listarSubtipoEgresos = array();
		if(count($res > 0)) 
		{
			foreach($res as $item):
				$movimientoClase = new MovimientoClase();
				$movimientoClase->setMovimientoClase_id($item[0]);
				$movimientoClase->setMovimientoClase_nombre($item[1]);
				$listarSubtipoEgresos[]=$movimientoClase;
			endforeach;	
		}
		return $listarSubtipoEgresos;
		
	}
	
	public function listarDetalleEgresosSubtipoTipo($tipoegresoid)
	{
		$sql="select d2.movimientoClase_id,d2.movimientoClase_nombre 
			 from movimientoclase d1 INNER JOIN 
			 movimientoclase d2 ON d1.movimientoClase_id=d2.movimientoClase_filiacion 
			 where d2.movimientoClase_tipo = 'OUT' and d2.movimientoClase_filiacion = $tipoegresoid";
		$res = bdconexion::getInstance()->consulta($sql);
		
		$listarDetalleEgresos = array();
		if(count($res > 0)) 
		{
			foreach($res as $item):
				$movimientoClase = new MovimientoClase();
				$movimientoClase->setMovimientoClase_id($item[0]);
				$movimientoClase->setMovimientoClase_nombre($item[1]);
				$listarDetalleEgresos[]=$movimientoClase;
			endforeach;	
		}
		return $listarDetalleEgresos;
	}

}
?>
}
Espero que me puedan ayudar. Por favor