Problema con botón borrar pedidos en PHP - MYSQL

  • Autor Autor Geg1
  • Fecha de inicio Fecha de inicio
Geg1

Geg1

Kappa
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Verificado por Binance
Tengo un pequeño problema con este codigo que muestra una lista de pedidos tomados por msyql:

Insertar CODE, HTML o PHP:
<?php
mysql_pconnect("localhost", "root", "");
mysql_select_db("gestorpedidos");
$query_cpedidos = "SELECT * FROM pedidos INNER JOIN clientes ON pedidos.cliente_id = clientes.id_cliente INNER JOIN productos ON pedidos.producto_id = productos.id_producto";
$cpedidos = mysql_query($query_cpedidos) or die(mysql_error());
$row_cpedidos = mysql_fetch_assoc($cpedidos);
$totalRows_cpedidos = mysql_num_rows($cpedidos);
$accion = $_POST["accion"];

if ($accion == "borrar")
{
	$query_cpedidos = "DELETE FROM pedidos WHERE id_pedido = $id_pedido";
  $resultado = mysql_query($query_cpedidos, "gestorpedidos");
}

?>

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<link rel="stylesheet" type="text/css" href="estilos.css">
	<link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet">
	<title>Lista de Pedidos</title>
</head>
<body>
<table width="950" border="0">
	<tr><td class="lista2">Nº</td class="lista2"><td class="lista2">Fecha</td><td class="lista2">Cliente</td><td class="lista2">Producto</td><td class="lista2">Descripcion</td><td class="lista2">Precio</td></tr>
    <tr>
  <?php do { ?>
      <form action=listadepedido.php method=POST>	
      <td align="center" class="lista" width="30"><?php echo $row_cpedidos['id_pedido']; ?></td>
      <td class="lista" width="100"><?php echo $row_cpedidos['fecha']; ?></td>
      <td class="lista" width="120"><?php echo $row_cpedidos['nombre']; ?></td>
      <td class="lista" width="180"><?php echo $row_cpedidos['producto']; ?></td>
      <td class="lista" width="600"><?php echo $row_cpedidos['descripcion_p']; ?></td>
      <td class="lista" width="80"><?php echo $row_cpedidos['precio']; ?></td>
      <td width="100"><?php echo "<a href=listadepedido.php?accion=borrar&id_pedido=".$row_cpedidos["id_pedido"]."><input class=botonlista type=submit value=Cancelar></a>" ?> </td>
      </form>
    </tr>
    <?php } while ($row_cpedidos = mysql_fetch_assoc($cpedidos)); ?>
</table>

</body>
</html>
<?php

mysql_free_result($cpedidos);

?>


$accion = $_POST["accion"];


Ese código me tira el siguiente error:


Notice: Undefined index: accion in C:\xampp\htdocs\FinalGaitan\listadepedido.php on line 8


Lo que intente hacer es un botón para borrar pedidos segun su ID. Pero no entiendo el porque de este error! Pido disculpas ya que soy novato y recien comienzo en el tema de PHP - MYSQL.
 
Puedes revisar si la variable está definida o no con la función isset()

PHP:
if(isset($_POST["accion"])){

    $accion = $_POST["accion"];

    if ($accion == "borrar")
    {
	    $query_cpedidos = "DELETE FROM pedidos WHERE id_pedido = $id_pedido";
            $resultado = mysql_query($query_cpedidos, "gestorpedidos");
     }
}


Pero estás utilizando el método GET para borrar, así que debes de utilizar $_GET["accion"] en vez de $_POST["accion"].

** Lo recomendable es utilizar POST
 
Puedes revisar si la variable está definida o no con la función isset()

PHP:
if(isset($_POST["accion"])){

    $accion = $_POST["accion"];

    if ($accion == "borrar")
    {
	    $query_cpedidos = "DELETE FROM pedidos WHERE id_pedido = $id_pedido";
            $resultado = mysql_query($query_cpedidos, "gestorpedidos");
     }
}


Pero estás utilizando el método GET para borrar, así que debes de utilizar $_GET["accion"] en vez de $_POST["accion"].

** Lo recomendable es utilizar POST

Gracias hugo, ya no sale el error, pero sigue sin funcionar este boton:

<td width="100"><?php echo "<a href=listadepedido.php?accion=borrar&id_pedido=".$row_cpedidos["id_pedido"]."><input class=botonlista type=submit value=Cancelar></a>" ?> </td>


Que puede ser?
 
Quita el botón y deja sólo el link <a href=listadepedido.php?accion=borrar&id_pedido=".$ row_cpedidos["id_pedido"].">Cancelar</a>
 
Quita el botón y deja sólo el link <a href=listadepedido.php?accion=borrar&id_pedido=".$ row_cpedidos["id_pedido"].">Cancelar</a>

tampoco, sigue actualizando pero no borra el registro
 
También tienes que obtener lo que te mande en id_pedido con $id_pedido = $_GET["id_pedido"]
 
También tienes que obtener lo que te mande en id_pedido con $id_pedido = $_GET["id_pedido"]

Y eso donde lo ubico hugo??

Asi esta bien planteado?

Insertar CODE, HTML o PHP:
if(isset($_POST["accion"])){

    $accion = $_POST["accion"];
    $id_pedido = $_POST["id_pedido"];

    if ($accion == "borrar")
    {
        $query_cpedidos = "DELETE FROM pedidos WHERE id_pedido = $id_pedido";
            $resultado = mysql_query($query_cpedidos, "gestorpedidos");
     }
}
 
Está bien pero ahora tendría que ser con el método GET:

PHP:
if(isset($_GET["accion"])){

    $accion = $_GET["accion"];
    $id_pedido = $_GET["id_pedido"];

    if ($accion == "borrar")
    {
        $query_cpedidos = "DELETE FROM pedidos WHERE id_pedido = $id_pedido";
            $resultado = mysql_query($query_cpedidos, "gestorpedidos");
     }
}
 
Está bien pero ahora tendría que ser con el método GET:

PHP:
if(isset($_GET["accion"])){

    $accion = $_GET["accion"];
    $id_pedido = $_GET["id_pedido"];

    if ($accion == "borrar")
    {
        $query_cpedidos = "DELETE FROM pedidos WHERE id_pedido = $id_pedido";
            $resultado = mysql_query($query_cpedidos, "gestorpedidos");
     }
}
Ahora me da ese error jajaja

Warning: mysql_query() expects parameter 2 to be resource, string given in

Insertar CODE, HTML o PHP:
            $resultado = mysql_query($query_cpedidos, "gestorpedidos");

lo que me va a costar entender MySQL...
 
Sólo le tienes que pasar el primer parámetro

PHP:
$resultado = mysql_query($query_cpedidos);
 
Sólo le tienes que pasar el primer parámetro

PHP:
$resultado = mysql_query($query_cpedidos);

Funciono!! Muchas gracias Hugo, otra vez!!

Solo que, hay alguna forma de que actualice la pagina cada vez que se borra un registro? :encouragement: porque debo apretar 2 veces el boton para que "refresque" y no muestre ese registro!

Gracias por tu gran ayuda!
 
Primero que nada las funciones que comienzan con mysql son obsoletas a partir de PHP 5.5.x en su lugar utiliza PDO o mysqli

En repuesta a tu tema debes especificar el tipo de método que enviara AJAX o el formulario ya sea POST o GET.
 
Primero que nada las funciones que comienzan con mysql son obsoletas a partir de PHP 5.5.x en su lugar utiliza PDO o mysqli

En repuesta a tu tema debes especificar el tipo de método que enviara AJAX o el formulario ya sea POST o GET.

Ahora se usan las mysqli verdad?

igualmente estoy usando un servidor XAMPP viejo y codificando asi, ya que, es para un final.. el cual se nos dieron estas herramientas y bueno, me adecuo a eso.

gracias!
 
Funciono!! Muchas gracias Hugo, otra vez!!

Solo que, hay alguna forma de que actualice la pagina cada vez que se borra un registro? :encouragement: porque debo apretar 2 veces el boton para que "refresque" y no muestre ese registro!

Gracias por tu gran ayuda!

No se de la forma en cual envías a borrar el pedido pero si usas AJAX puedes borrar el elemento de la pagina sin necesidad de refrescar la pagina, pero si quieres saltarte eso puedes hacer un re-load en php
Insertar CODE, HTML o PHP:
<?php header('Location: index.php'); ?>
 
No se de la forma en cual envías a borrar el pedido pero si usas AJAX puedes borrar el elemento de la pagina sin necesidad de refrescar la pagina, pero si quieres saltarte eso puedes hacer un re-load en php
Insertar CODE, HTML o PHP:
<?php header('Location: index.php'); ?>

Nono, solo uso PHP - MYSQL... no me enseñaron AJAX aun. Gracias!!
 
Complementando la respuesta anterior poder lograr lo del borrar con el método POST, deberías utilizar AJAX... con JQuery es más sencillo... y solamente escribirias el método que hace la llamada al AJAX para registrar y puedes hacer cosas mas interesantes como borrarlo de la interfaz (de nuevo utilizando Jquery solo borrar el elemento del DOM).

Exito!
 
Puedes intentarlo cerrando las comillas del atributo href y con el atributo target="_self"

PHP:
<?php echo '<a href="listadepedido.php?accion=borrar&id_pedido='.$row_cpedidos['id_pedido'].'"  target="_self">Cancelar</a>'?>


Como dicen en los comentarios anteriores, también te recomiendo aprender a hacer AJAX para que sean más dinámicos tus sitios 🙂

jQuery AJAX Introduction
 
Atrás
Arriba