El formulario que esta dentro de un while se guarda dos veces en la base de datos

publicado por: Anonymous

El formulario lo tengo dentro de un ciclo while dentro de un echo para poder resivir los datos de una consulta y luego con un formulario mandarlo a otra tabla en la base de datos pero se guarda dos veces como puedo hacer para que se guarden una sola ves?

    <?php
//Mostramos los registros
while ($row=mysql_fetch_array($result))
{
echo " <table width='100%' align='center' >
      <tr><!--<h2 align='center'>Registro de Empresas</h2>-->
      <td>
      <div class='containere'>
          <div class='row'>
            <div class='col-md-6 col-md-offset-3'>
      <form action='' id='formpost' class='formulario'   name='otro' onsubmit='return agregaRegistro();'  enctype='multipart/form-data'>
          <div class='form-group'>      
     <input type='text'  class='form-control' name='ide' id='ide' value='".$row['id_e']."' >
          </div>
          <div class='form-group'>  
     <input type='text'  class='form-control' name='idp' id='idp' value='".$row['id_p']."' >
          </div>      
           <div class='form-group'>      
     <input type='text'  class='form-control' name='ida' id='ida' value='".$_SESSION['id_a']."'  >
          </div>      
          <div class='form-group' align='right'>
    <input type='submit' name='submit' id='agregar' value='agregar' class='btn btn-primary' >
                </form>
                </div>
                </div>
                </div>
       <div id='cargando'> </div>            
        </td>
        </tr>
        </table>
}
mysql_free_result($result)
?>

lo recojo con esto

function agregaRegistro(){
    var url = 'postula.php';
    $.ajax({
        type:'POST',
        url:url,
        data:$('#formpost').serialize(),
        success: function(registro){
            $('#formulario')[0].reset();
        $("#cargando").html(data);
        }
    });
    return false;
}

y lo proceso con este PHP

<?php
//copy ($ruta,$destino);
    //conexión a la base de datos
            $con = mysqli_connect("localhost", "root", "", "bd");
            if (mysqli_connect_errno()){
                echo "No se pudo conectar a la base de datos" .mysqli_connect_error();
            }
$ide = mysqli_real_escape_string($con, $_POST["ide"]);          
$idp = mysqli_real_escape_string($con, $_POST["idp"]);          
$ida = mysqli_real_escape_string($con, $_POST["ida"]);
$sqli= mysqli_query($con,"select  COUNT(*) AS total from postulado where id_emp='$ide' AND id_pub='$idp' AND id_alu='$ida'");
$row=mysqli_fetch_object($sqli);
if($row->total == 0){
    // insert va aquí, y sólo se ejecuta si no hay ningún usuario con estos parametros 
$sql = "INSERT INTO postulado (id_pos,id_pub,id_emp,id_alu)
            VALUES ('', '$idp', '$ide', '$ida')";


            if (!mysqli_query($con,$sql)) {


                    die('Error: ' . mysqli_error($con));
                } 
                else{ 


echo " POSTULADO "; 

                    }



} else {
    echo " no ";
    }
                ?>

Esto es un ejemplo de lo que imprime en el boton postular ese es el boton que manda el formulario

introducir la descripción de la imagen aquí

introducir la descripción de la imagen aquí

solución

Talves no es la mejor manera pero ya lo solucione mando mi for a un modal y desde ay lo mando a guardar

function post(ide,idp,ida){
    $('#formpost')[0].reset();
        $.ajax({

        success: function(valores){
                $('#ide').hide();
                $('#idp').hide();
                $('#ida').hide();
                $('#formpost').show();
                $('#postular').show();
                $('#ide').val(ide);
                $('#idp').val(idp);
                $('#ida').val(ida);
                $('#postularm').modal({
                    show:true,
                    backdrop:'static'
                });
            return false;
        }
    });
    return false;
}

function postu(){
    console.log($('#formpost').serialize()  );
    var data = $('#formpost').serialize();
    var url = 'postula.php';
    $.ajax({
        type:'POST',
        url:url,
        data:data,

        success: function(data){
            //$('#formulario')[0].reset();
        $("#cargando").html(data);
        }
    });
    return false;
}
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *