Foros del Web » Programando para Internet » PHP »

Checkbox multiples procesados con ajax

Estas en el tema de Checkbox multiples procesados con ajax en el foro de PHP en Foros del Web. Hola amig@s, necesito obtener el ID de unos registros almacenados en una base de datos, para ello, al momento seleccionar los registros, le coloque un ...
  #1 (permalink)  
Antiguo 14/01/2015, 22:49
 
Fecha de Ingreso: enero-2015
Mensajes: 1
Antigüedad: 9 años, 3 meses
Puntos: 0
Checkbox multiples procesados con ajax

Hola amig@s, necesito obtener el ID de unos registros almacenados en una base de datos, para ello, al momento seleccionar los registros, le coloque un checkbox a cada uno con el valor del ID. Sin embargo el problema lo tengo al momento de procesar el formulario mediante AJAX, sencillamente no funciona, me muestra los ID de todos los registros seleccionados y los duplica, sin embargo, cuando no uso AJAX funciona perfectamente. A continuación les muestro el código.

Archivo que contiene el HTML y PHP que procesa.
Código:
<?php

include 'lib/db.php';
include 'lib/conf.php';
include 'lib/funciones.php';
include 'lib/session.php';

	$enlace = conectar();

	$cod_c		= $_GET['cod_c'];
	$forma 		= $_POST['forma'];
	$monto		= $_POST['monto'];
	$nro_r		= $_POST['referencia'];
	$cuenta		= $_POST['cuenta'];
	$fpago  	= traduceFecha($_POST['date']);
	
	if(strlen($monto) > 0) {
	
		foreach ($_POST['factura'] as $nro_f){
		
			echo $nro_f;
		
		}
	}
	
	$rs2 	= $enlace->query("SELECT factura.cod_factura, producto.nombre, producto.categoria, fcreacion, factura.fvence, monto FROM venta, factura,producto WHERE producto.cod_producto = venta.cod_producto AND venta.cod_venta = factura.cod_venta AND venta.cod_cliente = '$cod_c' AND factura.status = '0'");
	$count  = $rs2->num_rows;

?>			
			<script type="text/javascript">		
			   $(document).ready(function() {
					$('#mensaje').delay(2000).fadeOut(5000);
			   
				$('#date').datepicker({
					format: "dd-mm-yyyy",
					weekStart: 1,
					multidate: false,
					autoclose: true,
					todayHighlight: true
				});
			});
			</script>

			<div class="panel panel-default">
			<div class="panel-heading">
				<i class="fa fa-shopping-cart fa-fw"></i> Insertar Pago
				<div class="pull-right">
					<i class="fa fa-caret-left"></i> 
					<a href="javascript:void(0)" onclick="javascript:updateView('clientes.php')" style="margin-right:20px"> Volver </a>
					<i class="fa fa-plus"></i> 
					<a href="javascript:void(0)" onclick="javascript:updateView('blank.php')"> Principal</a>
				</div>
			</div>
			<div class="panel-body">
				<div class="panel-heading">				
					<form id="formulario" name="formulario" action="javascript:updateView('pagos_ins.php?cod_c=<?=$cod_c?></form>','formulario')" method="POST" onsubmit="javascript:return validar(this)" autocomplete="off">
						<div style="margin-top:10px;" class="input-group">
							<span  class="input-group-addon"><i style="width:10px" class="fa fa-calculator"></i></span> 
							<select name="forma" id="forma" class="form-control">
								<option value="_defa_">Método de Pago</option>
								<option value="Efectivo">Efectivo</option>
								<option value="Cheque">Cheque</option>
								<option value="Deposito">Depósito</option>
								<option value="Transferencia">Transferencia</option>
							</select>
						</div>
						
						<div style="margin-top:10px;" class="input-group">
							<span  class="input-group-addon"><i style="width:10px" class="fa fa-university"></i></span> 
							<select name="cuenta" id="cuenta" class="form-control">
								<option value="_defa_">Cuenta Bancaria</option>
								<?
									$con = $enlace->query("SELECT * FROM cuenta_bancaria") or die ("Error en la Consulta");
										  while($fila = $con->fetch_array(MYSQLI_ASSOC))
											{
												$cod_c  = $fila['cod_cuenta'];
												$banco  = $fila['banco'];
												
												echo "<option value='$cod_c'>"."$banco";
												echo "</option>";	
											}
								?>
							</select>
						</div>

						<div style="margin-top:10px;" class="input-group">
							<span  class="input-group-addon"><i style="width:10px"  class="fa fa-money"></i></span> 
							<input required type="text" name="monto" id="monto" maxlength="5" class="form-control" placeholder="Monto" onKeyPress="return(formatoCampo(this,event,1))">
						</div>

						<div style="margin-top:10px;" class="input-group">
							<span  class="input-group-addon"><i style="width:10px"  class="fa fa-keyboard-o"></i></span> 
							<input required type="text" name="referencia" id="referencia" maxlength="5" class="form-control" placeholder="Nro de Referencia" onKeyPress="return(formatoCampo(this,event,1))">
						</div>
									
						<div style="margin-top:10px;" class="input-group" id="dateRangePicker">
							<span  class="input-group-addon"><i style="width:10px" class="fa fa-calendar"></i></span> 
							<input required readonly value="<?=date('d-m-Y')?>" type="text" name="date" id="date" class="form-control">
						</div>

						<div class="table-responsive" style="margin-top:20px">
							<table class="table table-striped table-bordered table-hover">
								<thead>
									<tr>
										<th></th>
										<th>Producto</th>
										<th>Período</th>
										<th>Monto (Bs.)</th>
										<th>Estado</th>
									</tr>
								</thead>
								
								<?php 
									while ($row = $rs2->fetch_array(MYSQLI_ASSOC)) 
										{ 
											
											$cod_f        = $row["cod_factura"];
											$producto 	  = $row["nombre"];
											$categoria 	  = $row["categoria"];
											$monto	 	  = $row["monto"];
											$fcreacion 	  = traduceFecha($row["fcreacion"]);
											$fvence	  	  = traduceFecha($row["fvence"]);
											
											$alert_s = "<div class='alert-danger' style='text-align:center;padding:3px'>Por Cobrar</div>";
								?>

								<tbody>
									<tr>
										<td><input type="checkbox" name="factura[]" value="<?=$cod_f?>"/></td>
										<td><?=$categoria.": ".$producto?></td>
										<td style="text-align:center"><?=$fcreacion?><br><?=$fvence?></td>
										<td style="text-align:center"><?=$monto?></td>
										<td><?=$alert_s?></td>
									</tr>

								<? }
									if ($count == 0 ) {
										echo " <tr> ";
										echo "   <td colspan=\"7\" class=\"error\">";
										echo "   ¡No hay ventas registrados!";
										echo "   </td>";
										echo " </tr>";
									}
								?>
								</tbody>
							</table>
						</div>
						  
						<div style="text-align:center" class="panel-footer">
							<button type="submit" class="btn btn-success btn-small">Insertar</button>
							<button type="reset" class="btn btn-success btn-small">Borrar</button>
						</div>
					</form>
				</div>
			</div>

Archivo que contiene la función que procesa el formulario:

Código:
// Declaraciones

var prevHref = '';
var prevAux  = 0;



// Cargador Principal

function updateView(urlHref, form) {

    var loader  = '<div id="loader" style=\"margin-left:40px;margin-top:-25px\">'+
                     '<i class=\"fa fa-spinner fa-spin fa-4x\"></i>'+
                  '</div>';

    form        = typeof(form) != 'undefined' ? form : '';

    var tipo    = 'get';
    var datos   = '';
    var dataVal = '';


    if (form != '' ) {

        $('#'+form+' :input').each(

            function() {

                value = '';

                value   = encodeURI(this.value);
                dataVal = this.name+'='+value+'&';
                datos   = datos + dataVal;


                dataVal = this.name+'='+value+'&'
                datos   = datos + dataVal;

            }
        );

        tipo = form == 'buscador' ? 'get' : 'post';

    } else {

        var str = urlHref.split('?');
        urlHref = str[0];
        datos   = str[1];

    }

    $.ajax({
        type       : tipo,
        url        : urlHref,
        data       : datos,
        dataType   : 'html',
        cache      : false,
        beforeSend : function () {
            $("#menu").append(loader);
        },
        success    : function (html) {

            if ($("#loader").fadeOut('slow'))
                $("#loader").remove();

            $("#center").html(html);

        }
    });
}
Espero puedan ayudarme.

Gracias.

Última edición por 4lb3rt0; 14/01/2015 a las 22:51 Razón: Aclaratoria...
  #2 (permalink)  
Antiguo 15/01/2015, 00:44
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Checkbox multiples procesados con ajax

Hola:

Es evidente entonces que el problema no es de php (donde empezaste el tema), sino de tu implementación de Ajax... (no nativo, sino desde una librería; supuestamente jquery)...

Debido a que no manejo librerías, no puedo estar seguro del error, pero intentando entender tu código, parece que no discriminas los checkboxes... sólo deberías seleccionar los chequeados.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo

Etiquetas: ajax, javascript
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 17:11.