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.