Author Topic: Eliminar filas de una lista.  (Read 3977 times)

satjaen

  • Jr. Member
  • **
  • Posts: 99
  • Karma: 0
    • View Profile
Eliminar filas de una lista.
« on: Noviembre 21, 2013, 05:07:14 pm »
Buenos dias, por favor tengo una lista en le cual borro las filas que necesito. Pero el problema es que no me borra la que yo quiero si no la primera fila de la lista.

Esta es la lista:

Quote

  <div id="tiac_factura" data-role="collapsible" data-collapsed="true" data-theme="e" data-content-theme="c" style="display:none">
   
   
     
                          <h3>(<?php echo $num ?>) Acumulado de tiempo FACTURA </h3>
                           
                         
                                    <br />
                                   
                                   
                                   
              <?php do { ?>

           <form action="<?php echo $editFormAction; ?>" method="post" name="form7" id="form7">
             
                                      <ul data-role="listview" data-theme="b">                                   
                           
               
                                       
                                        <li data-theme="d">
                                   
                                         

                                           
                                          <h2><?php echo $row_Recordset2['ID_TIEMPO']; ?></h2>
                                           
                                          <span style="font-size:15px"><strong>AVERÍA:&nbsp;</strong><?php echo $row_Recordset2['edAveria']; ?></span><br />  <hr />
                                           
                                            <p class="ui-li-aside"><strong>MOBILE</strong></p>
                                           
                                           
                                           
                                          <span style="font-size:11px"><strong>Fecha de Inicio: </strong><?php echo $row_Recordset2['edfecha']; ?></span><br />
                                           
                                          <span style="font-size:11px"><strong>Fecha de final: </strong><?php echo $row_Recordset2['edfechaFin']; ?></span><br />
                                           
                                            <hr />
                                           
                                          <span style="font-size:11px"><strong>Hora de inicio: </strong><?php echo $row_Recordset2['edHoraInicio']; ?></span><br />
                                           
                                          <span style="font-size:11px"><strong>Hora de final: </strong><?php echo $row_Recordset2['edHoraFin']; ?></span><br />
                                           
                                           
                                           
                                            <hr />
                                           
                                          <span style="font-size:11px"><strong>Tiempo en minutos: </strong><?php echo $row_Recordset2['edTiempoIntervencion']; ?></span><br />
 
                             
       
 <input name="id_aviso" id="id_aviso" type="hidden" value="<?php echo $row_Recordset1['id_aviso']; ?>" />
 <input type="hidden" name="ID_TIEMPO" value="<?php echo $row_Recordset2['ID_TIEMPO']; ?>">
<input type="hidden" name="MM_delete" value="form7" />


 <button type="submit" onClick="borrar();"  data-theme="e"  data-icon="delete" data-iconpos="right" >Eliminar</button>   


</form> 
 
 
 
     

             

                                        </li>
                                       
                               
                                      </ul>
 
                                    <?php } while ($row_Recordset2 = mysql_fetch_assoc($Recordset2)); ?>                           
                             
        <div style="text-align:right">
                             
                                <hr />
                                Tiempo total: <strong><? echo $totcampo1 ?></strong> <!-- Mostramos el total --> 
                                   
                            </div>
                             
                        </div>     


Asi llamo a la funcion borrar:

Quote
<script>
function borrar(){

 
         
             
                if (confirm("¿Desea eliminarlo?"))
                {
               document.forms['form7'].submit();
               
            }
                else
                {
              alert("¡Error!");    
                }
       
}
</script>



Y así lo borro la fila:

Quote
if ((isset($_POST["ID_TIEMPO"])) && (isset($_POST["id_aviso"])) &&  ($_POST["MM_delete"] == "form7")) {
      
  $deleteSQL = sprintf("DELETE FROM detalle_tiempo_factura WHERE id_aviso='".$_POST['id_aviso']."' AND ID_TIEMPO='".$_POST['ID_TIEMPO']."'",
 
                       GetSQLValueString($_GET['id_aviso'], "int"),
                       GetSQLValueString($_GET['ID_TIEMPO'], "int"));

  mysql_select_db($database_conexion, $conexion);
  $Result1 = mysql_query($deleteSQL, $conexion) or die(mysql_error());
    
  }


Gracias

satjaen

  • Jr. Member
  • **
  • Posts: 99
  • Karma: 0
    • View Profile
Re: Eliminar filas de una lista.
« Reply #1 on: Noviembre 21, 2013, 07:46:20 pm »
Buenos dias, por favor tengo una lista en le cual borro las filas que necesito. Pero el problema es que no me borra la que yo quiero si no la primera fila de la lista.

Esta es la lista:

Quote

  <div id="tiac_factura" data-role="collapsible" data-collapsed="true" data-theme="e" data-content-theme="c" style="display:none">
   
   
     
                          <h3>(<?php echo $num ?>) Acumulado de tiempo FACTURA </h3>
                           
                         
                                    <br />
                                   
                                   
                                   
              <?php do { ?>

           <form action="<?php echo $editFormAction; ?>" method="post" name="form7" id="form7">
             
                                      <ul data-role="listview" data-theme="b">                                   
                           
               
                                       
                                        <li data-theme="d">
                                   
                                         

                                           
                                          <h2><?php echo $row_Recordset2['ID_TIEMPO']; ?></h2>
                                           
                                          <span style="font-size:15px"><strong>AVERÍA:&nbsp;</strong><?php echo $row_Recordset2['edAveria']; ?></span><br />  <hr />
                                           
                                            <p class="ui-li-aside"><strong>MOBILE</strong></p>
                                           
                                           
                                           
                                          <span style="font-size:11px"><strong>Fecha de Inicio: </strong><?php echo $row_Recordset2['edfecha']; ?></span><br />
                                           
                                          <span style="font-size:11px"><strong>Fecha de final: </strong><?php echo $row_Recordset2['edfechaFin']; ?></span><br />
                                           
                                            <hr />
                                           
                                          <span style="font-size:11px"><strong>Hora de inicio: </strong><?php echo $row_Recordset2['edHoraInicio']; ?></span><br />
                                           
                                          <span style="font-size:11px"><strong>Hora de final: </strong><?php echo $row_Recordset2['edHoraFin']; ?></span><br />
                                           
                                           
                                           
                                            <hr />
                                           
                                          <span style="font-size:11px"><strong>Tiempo en minutos: </strong><?php echo $row_Recordset2['edTiempoIntervencion']; ?></span><br />
 
                             
       
 <input name="id_aviso" id="id_aviso" type="hidden" value="<?php echo $row_Recordset1['id_aviso']; ?>" />
 <input type="hidden" name="ID_TIEMPO" value="<?php echo $row_Recordset2['ID_TIEMPO']; ?>">
<input type="hidden" name="MM_delete" value="form7" />


 <button type="submit" onClick="borrar();"  data-theme="e"  data-icon="delete" data-iconpos="right" >Eliminar</button>   


</form> 
 
 
 
     

             

                                        </li>
                                       
                               
                                      </ul>
 
                                    <?php } while ($row_Recordset2 = mysql_fetch_assoc($Recordset2)); ?>                           
                             
        <div style="text-align:right">
                             
                                <hr />
                                Tiempo total: <strong><? echo $totcampo1 ?></strong> <!-- Mostramos el total --> 
                                   
                            </div>
                             
                        </div>     

Asi hago el SELECT:
Quote
mysql_select_db($database_conexion, $conexion);
$query_Recordset2 = "SELECT * FROM detalle_tiempo_factura WHERE id_aviso = '$id_aviso' ORDER BY ID_TIEMPO DESC ";
$Recordset2 = mysql_query($query_Recordset2, $conexion) or die(mysql_error());
$row_Recordset2 = mysql_fetch_assoc($Recordset2);
$totalRows_Recordset2 = mysql_num_rows($Recordset2);
$result2=mysql_query($query_Recordset2);
$num=mysql_num_rows($result2);
Asi llamo a la funcion borrar:

Quote
<script>
function borrar(){

 
         
             
                if (confirm("¿Desea eliminarlo?"))
                {
               document.forms['form7'].submit();
               
            }
                else
                {
              alert("¡Error!");    
                }
       
}
</script>



Y así lo borro la fila:

Quote
if ((isset($_POST["ID_TIEMPO"])) && (isset($_POST["id_aviso"])) &&  ($_POST["MM_delete"] == "form7")) {
      
  $deleteSQL = sprintf("DELETE FROM detalle_tiempo_factura WHERE id_aviso='".$_POST['id_aviso']."' AND ID_TIEMPO='".$_POST['ID_TIEMPO']."'",
 
                       GetSQLValueString($_GET['id_aviso'], "int"),
                       GetSQLValueString($_GET['ID_TIEMPO'], "int"));

  mysql_select_db($database_conexion, $conexion);
  $Result1 = mysql_query($deleteSQL, $conexion) or die(mysql_error());
    
  }


Gracias

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5466
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Eliminar filas de una lista.
« Reply #2 on: Noviembre 22, 2013, 01:28:19 am »
¿Has cambiado algo entre el segundo post y el primero? ¿Cual es el motivo del segundo post?

Se bueno.

satjaen

  • Jr. Member
  • **
  • Posts: 99
  • Karma: 0
    • View Profile
Re: Eliminar filas de una lista.
« Reply #3 on: Noviembre 22, 2013, 01:38:21 am »
He añadido como hago el SELECT por si te servia de algo.

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5466
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Eliminar filas de una lista.
« Reply #4 on: Noviembre 22, 2013, 02:38:43 pm »
Hola:

Cuando hay varios formularios (tienes un bucle para generar varios), a veces los navegadores (especialmente internet explorer) se lían con los parámetros que mandan al servidor. Intenta poner id distintos en los input hidden. Incluso también, poner los name distintos de los id, internet explorer también tiene (o tenía) problemas con eso.

<input name="id_aviso" id="id_aviso" type="hidden" value="<?php echo $row_Recordset1['id_aviso']; ?>" />

Se bueno.

satjaen

  • Jr. Member
  • **
  • Posts: 99
  • Karma: 0
    • View Profile
Re: Eliminar filas de una lista.
« Reply #5 on: Noviembre 22, 2013, 03:27:28 pm »
Gracias  chuidiang , pero estoy probando y me sigue borrando el primero de la lista.

 
Quote
<input type="hidden" name="id_aviso" id="aviso"  value="<?php echo $row_Recordset1['id_aviso']; ?>" />
 <input type="hidden" name="ID_TIEMPO" id="TIEMPO" value="<?php echo $row_Recordset2['ID_TIEMPO']; ?>">
<input type="hidden" name="MM_delete" value="form7" />


 <button type="submit" onClick="borrar();"  data-theme="e"  data-icon="delete" data-iconpos="right" >Eliminar</button>   




Y no entiendo porque si le doy a cancelar cuando me pregunta si deseo eliminar me salta el mensaje de  alert("¡Error!"); y también me borra una fila cuando no debería de borrar nada.


Quote
<script>
function borrar(){

         
             
                if (confirm("¿Desea eliminarlo?"))
                {
               document.forms['form7'].submit();
               
            }
                else
                {
              alert("¡Error!");    
                }
       
}
</script>
« Last Edit: Noviembre 22, 2013, 03:44:43 pm by satjaen »

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5466
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Eliminar filas de una lista.
« Reply #6 on: Noviembre 22, 2013, 04:09:40 pm »
Hola:

Te comenté dos cosas.
1. Que name e id sean distintos, ok, lo has hecho
2. que los ids sean distintos entre si. Eso no lo has hecho, estás en un bucle y todos los <input type="hidden" ... id="aviso"  value="<?php echo $row_Recordset1['id_aviso']; ?>" /> tienen id="aviso". Eso no lo has cambiado. En cualquier caso, no creo que sea eso.

Para que al cancelar no borre, la función borrar() debe devolver true o false (según quieras que borre o no) y debes llamarla como

onclick = "return borrar()"

y el problema es que todos tus form son "form7" y en tu borrar() estás llamando submit de form7, así que enviará el primer form de nombre form7 que encuentre. La forma correcta es que borrar() solo pida la confirmación y devuelve true o false, no debe hacer el submit, que ya lo hace el botón.

Se bueno.
« Last Edit: Noviembre 22, 2013, 04:14:14 pm by chuidiang »

satjaen

  • Jr. Member
  • **
  • Posts: 99
  • Karma: 0
    • View Profile
Re: Eliminar filas de una lista.
« Reply #7 on: Noviembre 22, 2013, 04:25:56 pm »
Gracias, pero esto no lo entiendo:

Code: [Select]
2. que los ids sean distintos entre si. Eso no lo has hecho, estás en un bucle y todos los <input type="hidden" ... id="aviso"  value="<?php echo $row_Recordset1['id_aviso']; ?>" /> tienen id="aviso". Eso no lo has cambiado.


Sólo tengo un ese input en el formulario:

 <input type="hidden" name="id_aviso" id="aviso"  value="<?php echo $row_Recordset1['id_aviso']; ?>" />




Quote
   <form action="<?php echo $editFormAction; ?>" method="post" name="form7" id="form7">
             
                                      <ul data-role="listview" data-theme="b">                                   
                           
               
                                       
                                        <li data-theme="d">
                                   
                                         

                                           
                                          <h2><?php echo $row_Recordset2['ID_TIEMPO']; ?></h2>
                                           
                                          <span style="font-size:15px"><strong>AVERÍA:&nbsp;</strong><?php echo $row_Recordset2['edAveria']; ?></span><br />  <hr />
                                           
                                            <p class="ui-li-aside"><strong>MOBILE</strong></p>
                                           
                                           
                                           
                                          <span style="font-size:11px"><strong>Fecha de Inicio: </strong><?php echo $row_Recordset2['edfecha']; ?></span><br />
                                           
                                          <span style="font-size:11px"><strong>Fecha de final: </strong><?php echo $row_Recordset2['edfechaFin']; ?></span><br />
                                           
                                            <hr />
                                           
                                          <span style="font-size:11px"><strong>Hora de inicio: </strong><?php echo $row_Recordset2['edHoraInicio']; ?></span><br />
                                           
                                          <span style="font-size:11px"><strong>Hora de final: </strong><?php echo $row_Recordset2['edHoraFin']; ?></span><br />
                                           
                                           
                                           
                                            <hr />
                                           
                                          <span style="font-size:11px"><strong>Tiempo en minutos: </strong><?php echo $row_Recordset2['edTiempoIntervencion']; ?></span><br />
 
                                   
 <input type="hidden" name="id_aviso" id="aviso"  value="<?php echo $row_Recordset1['id_aviso']; ?>" />
 <input type="hidden" name="ID_TIEMPO" id="TIEMPO" value="<?php echo $row_Recordset2['ID_TIEMPO']; ?>">
<input type="hidden" name="MM_delete" value="form7" />


 <button type="submit" onClick="return borrar()"  data-theme="e"  data-icon="delete" data-iconpos="right" >Eliminar</button>   


</form> 
 
 

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5466
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Eliminar filas de una lista.
« Reply #8 on: Noviembre 22, 2013, 05:32:15 pm »
Sí, sólo tienes un input en el formulario, pero tienes n formularios en un bucle

Code: [Select]
<?php do { ?>
           <form action="<?php echo $editFormAction?>" method="post" name="form7" id="form7">
           ....
           </form>
  <?php } while ($row_Recordset2 mysql_fetch_assoc($Recordset2)); ?>                 

por lo que el final en html será parecido a esto

Code: [Select]
<form action="una url" method="post" name="form7" id="form7">
...
 <input type="hidden" name="id_aviso" id="aviso"  value="1" />
</form>
<form action="una url" method="post" name="form7" id="form7">
...
 <input type="hidden" name="id_aviso" id="aviso"  value="2" />
</form>
<form action="una url" method="post" name="form7" id="form7">
...
 <input type="hidden" name="id_aviso" id="aviso"  value="3" />
</form>
...

así que tienes varios form todos con el mismo nombre (form7) e id (form7) y todos con un input dentro con el mismo id="aviso"

Tu metodo borrar() se lía con el form a enviar porque todos se llaman igual.

Se bueno.

 

ey