Foros del Web » Programando para Internet » PHP »

Solo elimina el último registro

Estas en el tema de Solo elimina el último registro en el foro de PHP en Foros del Web. Hola gente! Tengo en una tabla ciertos registros que se generan a partir de una búsqueda, por cada registro agregué un botón de " Eliminar ...
  #1 (permalink)  
Antiguo 08/12/2009, 16:10
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Solo elimina el último registro

Hola gente!

Tengo en una tabla ciertos registros que se generan a partir de una búsqueda, por cada registro agregué un botón de "Eliminar" y de "modificar", pero independientemente del registro que haga click siempre elimina el último registro, evidentemente hay un problema en el id_prod de la consulta que elimina pero no me doy cuenta que es.

Me podrían ayudar? gracias de antemano!!!

Tabla con registros
Código HTML:
....
while($row = mysql_fetch_array($result))
{			
				
?>
   <tr>						
<td width="10%" height="25">
<font face="verdana" size="1" color="black">
    <?php echo $row["codigo_producto"]; ?>
</font>
</td>
 <td width="10%" height="25">
<font face="verdana" size="1" color="black">
	<?php echo $row["cantprod_pedido"]; ?>
</font>
</td>                      
 <td width="25%" height="25">
<font face="verdana" size="1" color="black">
	<?php echo $row["detalle_producto"]; ?>
</font>
</td>                       
                       
						
<td width="10%" height="25"><label>
           <input type="submit" name="action" id="modificar" value="Modificar">
                    </label>
</td>	             
                    
 <td width="10%" height="25"><label>
                      <input type="submit" name="action" id="eliminar" value="Eliminar">
                    </label></td>
					</tr>
                    <input type="hidden" name="id_producto" value="<?php echo $row["id_producto"]; ?>" size="5">     
                    <input type="hidden" name="id_prod" value="<?php echo $row["id_prod"]; ?>" size="5"> 

Función que realiza la eliminación del registro
Código PHP:
<?php
    
function RemoveItem($id_prod)
    {
        
$Host "localhost";
        
$User "root";
        
$Password "";
        
$Base "pedidos";

        
//conecta la base
        
$Link mysql_connect ($Host$User$Password) or die("Error vp conexion ".mysql_error());
        
mysql_select_db($Base$Link) or die("Error select db ".mysql_error());
                
        
$Query="DELETE FROM pedido WHERE id_prod='".$_POST['id_prod']."'";
        
$borrado mysql_query($Query$Link) or die("error query $Query "mysql_error());
        
?>
        <input type="text" name="id_prod" value="<?php echo $_POST["id_prod"]; ?>" size="5"> 
        <?php
    
}
?>
__________________
Saludos!!!
Maru.-
  #2 (permalink)  
Antiguo 08/12/2009, 16:30
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 2 meses
Puntos: 25
Respuesta: Solo elimina el último registro

cambia:
<input type="hidden" name="id_prod" value="<?php echo $row["id_prod"]; ?>" size="5">

por:

<input type="text" name="id_prod" value="<?php echo $row["id_prod"]; ?>" size="5" style="display:none">
__________________
Hospedaje Web al mejor costo!
  #3 (permalink)  
Antiguo 08/12/2009, 16:32
Avatar de armandoweb  
Fecha de Ingreso: enero-2003
Ubicación: San Cristobal, Santa Fe, Argentina
Mensajes: 544
Antigüedad: 21 años, 3 meses
Puntos: 7
Respuesta: Solo elimina el último registro

Hola:

Cuando seleccionas que registro modificar o borrar debes pasar el id del producto a la funcion, o sea que por cada registro tienes un boton de modificar y borrar, no??

Saludos.
__________________
www.awdesarrollos.com.ar - [twitter: @armandoweb] - [Skype: awdesarrollos"]
  #4 (permalink)  
Antiguo 08/12/2009, 16:45
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: Solo elimina el último registro

Si, tengo un botón modificar y uno eliminar por cada registro.

Entiendo que hay que pasar el id_prod a la función, si mirás el código que puse teóricamente lo recibe.
__________________
Saludos!!!
Maru.-
  #5 (permalink)  
Antiguo 08/12/2009, 16:51
Avatar de armandoweb  
Fecha de Ingreso: enero-2003
Ubicación: San Cristobal, Santa Fe, Argentina
Mensajes: 544
Antigüedad: 21 años, 3 meses
Puntos: 7
Respuesta: Solo elimina el último registro

Maru:

Haz un echo de $_POST["id_prod"] antes de la query a ver si te está llegando bien el id.

Saludos.
__________________
www.awdesarrollos.com.ar - [twitter: @armandoweb] - [Skype: awdesarrollos"]
  #6 (permalink)  
Antiguo 08/12/2009, 16:57
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: Solo elimina el último registro

Si, llegar llega el id_prod, pero siempre elimina el último

Gracias x responder ArmandoWeb!
__________________
Saludos!!!
Maru.-
  #7 (permalink)  
Antiguo 08/12/2009, 16:58
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 2 meses
Puntos: 25
Respuesta: Solo elimina el último registro

q pasa con lo que te puse? :P
__________________
Hospedaje Web al mejor costo!
  #8 (permalink)  
Antiguo 08/12/2009, 17:08
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Solo elimina el último registro

el problema es que tu boton eliminar es submit y al hacer click, desde cualquier registro...... siempre enviara el ultimo !!

tu solucion es hacer algo asi:
cambiar el input eliminar por: <a href="elimina.php?id_prod=<?php echo $row['id_prod']; ?>">eliminar</a>

y claro, en vez de recogerlo con $_POST, ahora con $_REQUEST.
$Query="DELETE FROM pedido WHERE id_prod='".$_REQUEST['id_prod']."'";


suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #9 (permalink)  
Antiguo 08/12/2009, 17:12
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: Solo elimina el último registro

Lo probé Urgido, pero no me resolvió nada.

Recién estaba probando el post antes del query y ahí no me trae el id_post

Puse así

Código PHP:
$Link = mysql_connect ($Host, $User, $Password) or die("Error vp conexion ".mysql_error());
mysql_select_db($Base, $Link) or die("Error select db ".mysql_error());
      
?>

       
<input type="text" name="id_prod" value="<?php echo $row["id_prod"]; ?>" size="5">     
 
<?php
// esta es la consulta que genera la tabla donde luego agrego los botones de eliminar y modificar

    
$result mysql_query("select producto.id_producto, producto.codigo_producto, producto.tipo_producto, producto.detalle_producto, producto.capacidad_producto, producto.precio_producto, pedido.id_pedido, pedido.id_sessionpedido, pedido.id_userpedido, pedido.id_prod, pedido.cantprod_pedido from producto inner join pedido on producto.id_producto = pedido.id_prod where id_sessionpedido='".$_SESSION['Sid']."'");?>
__________________
Saludos!!!
Maru.-
  #10 (permalink)  
Antiguo 08/12/2009, 17:14
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Solo elimina el último registro

epa y mi post??? que estas ciego o es que no aparace en tu pc?? hahaha
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #11 (permalink)  
Antiguo 08/12/2009, 17:14
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 2 meses
Puntos: 25
Respuesta: Solo elimina el último registro

tu campo se llama id_prod o id_producto? por que veo que tienes dos inputs :/
__________________
Hospedaje Web al mejor costo!
  #12 (permalink)  
Antiguo 08/12/2009, 17:16
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 2 meses
Puntos: 25
Respuesta: Solo elimina el último registro

intenta poner estos dos campos:

<input type="hidden" name="id_producto" value="<?php echo $row["id_producto"]; ?>" size="5">
<input type="hidden" name="id_prod" value="<?php echo $row["id_prod"]; ?>" size="5">

antes del de boton del submit y dime que pasa. Saludos
__________________
Hospedaje Web al mejor costo!
  #13 (permalink)  
Antiguo 08/12/2009, 17:21
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Solo elimina el último registro

urgido no lo desvies ya que no sale por que no pueden haber varios botones de tipo submit.........
a menos de que sea un programador avanzado y con javascript valide el boton pulsado, y cambie los action dinamicamente y mas cosas.

mira cambia tus codigos por estos:

Código html:
Ver original
  1. ....
  2. while($row = mysql_fetch_array($result)){
  3. ?>
  4. <tr>                       
  5.     <td width="10%" height="25"><font face="verdana" size="1" color="black">
  6.     <?php echo $row["codigo_producto"]; ?></font></td>
  7.     <td width="10%" height="25"><font face="verdana" size="1" color="black">
  8.     <?php echo $row["cantprod_pedido"]; ?></font></td>
  9.     <td width="25%" height="25"><font face="verdana" size="1" color="black">
  10.     <?php echo $row["detalle_producto"]; ?></font></td>
  11.     <td width="10%" height="25"><a href="modifica.php?id_prod=<?php echo $row['id_prod']; ?>">Modifica</a></td>
  12.     <td width="10%" height="25"><a href="elimina.php?id_prod=<?php echo $row['id_prod']; ?>">Eliminar</a></td>
  13. </tr>
  14. <?php
  15. }
  16. ......


Código php:
Ver original
  1. <?php
  2. $Host = "localhost";
  3. $User = "root";
  4. $Password = "";
  5. $Base = "pedidos";
  6.  
  7. //conecta la base
  8. $Link = mysql_connect ($Host, $User, $Password) or die("Error en la conexion: ".mysql_error());
  9. mysql_select_db($Base, $Link) or die("Error select db: ".mysql_error());
  10. $query="DELETE FROM pedido WHERE id_prod='".$_REQUEST['id_prod'].'"";
  11. mysql_query($Query, $Link) or die("error query: ". mysql_error());
  12. ?>


Claro, eso podrias mejorarlo si llamas a los archivos con ajax.

Gracias por el karma :P

Suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #14 (permalink)  
Antiguo 08/12/2009, 17:47
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: Solo elimina el último registro

Mil gracias a todos por los aportes!!!
Estuve intentando lo de cambiar el botón por el enlace pero me da error cuando llega a la estructura switch.

Código PHP:
<?php
switch($_POST["action"])
        {        
           case 
"Agregar":
           {
                   
AddItem($_POST["id_prod"]);
                
ShowCart();    
                break;
           }
           case 
"Eliminar":
           {
                
RemoveItem ($_REQUEST["id_prod"]);
                
ShowCart();
                break;
            }
            case 
"Modificar":
           {
                
UpdateItem ($_POST["id_prod"]);
                
ShowCart();
                break;
            }
            default:
            {
                
ShowCart();
            }        
        }
?>
El enlace lo puse así:
<a href="cart.php?action=Eliminar&id_prod=<?php echo $row['id_prod']; ?>">eliminar</a>
__________________
Saludos!!!
Maru.-
  #15 (permalink)  
Antiguo 08/12/2009, 17:50
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 2 meses
Puntos: 25
Respuesta: Solo elimina el último registro

case no lleva {} en los case www.php.net/switch
__________________
Hospedaje Web al mejor costo!
  #16 (permalink)  
Antiguo 08/12/2009, 18:08
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Solo elimina el último registro

los "case" no llevan llaves.......
los parametros de las funciones no llevan espacio

Código php:
Ver original
  1. <?php
  2. switch($_POST["action"]){        
  3.     case "Agregar": AddItem($_POST["id_prod"]); ShowCart(); break;
  4.     case "Eliminar": RemoveItem($_REQUEST["id_prod"]); ShowCart(); break;
  5.     case "Modificar": UpdateItem($_POST["id_prod"]); ShowCart(); break;
  6.     default: ShowCart();
  7. }
  8. ?>

espero ese karma amigui ^^

suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
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 12:03.