Aumentar la cuenta cuando se coloca el nuevo orden, y el decremento cuando se confirma ese orden

Estoy trabajando en el proyecto de comercio electrónico usando php(codeigniter,rest api para la aplicación)

Soy nuevo en el proyecto de comercio electrónico así que tengo requisitos como cuando el pedido de usuario de la aplicación móvil que guardará en db

en este momento tengo que mostrar la cuenta de este orden en el panel de administración (puede ser necesario enchufe), y cuando el administrador confirme este recuento de pedido debe decrementar,

Una vez más, cuando el recuento de pedidos del nuevo usuario debe aumentar y debe mostrar en el panel de administración.

No tengo ni idea, ni idea de cómo construir esta lógica porque nunca hice este concepto, amablemente sugí cómo hacer esto usando php.

Cuadro de órdenes

id  product_id  status(0 pending ,1=>completed)  user_id

1    4            0                                1
2    6            1                                1
3    4            0                                5

Consulta modelo:

$this->db>insert('order',array('user_id'=>$id,'product_id'=>1,'status'=>'pending'));

Pregunta hecha hace 3 años, 4 meses, 27 días - Por phpphoenix


2 Respuestas:

  • Para lograr lo que buscas, necesitarás llevar un registro separado de la cuenta de los pedidos en tu base de datos. Aquí te dejo un ejemplo sencillo de cómo podrías implementarlo usando PHP y CodeIgniter:

    • Crear una nueva tabla en tu base de datos para almacenar la cuenta de pedidos. Por ejemplo, podrías crear una tabla llamada "order_count" con las siguientes columnas: id, user_id y count.
    • Cada vez que se realice un nuevo pedido y se inserte en la tabla "order", debes incrementar la cuenta correspondiente en la tabla "order_count".
    • Cuando un pedido se confirme (status = 1), debes decrementar la cuenta en la tabla "order_count".

    Aquí te muestro un ejemplo de cómo podrías implementar esto en tu controlador en CodeIgniter:

    php
    class OrderController extends CI_Controller {
    
        public function placeOrder() {
            // Insertar nuevo pedido en la tabla order
            $this->db->insert('order', array('user_id' => $id, 'product_id' => 1, 'status' => 'pending'));
    
            // Obtener el user_id del pedido actual
            $userId = $id;
    
            // Incrementar la cuenta de pedidos en la tabla order_count
            $count = $this->db->get_where('order_count', array('user_id' => $userId))->row();
            $newCount = $count->count + 1;
    
            $this->db->where('user_id', $userId);
            $this->db->update('order_count', array('count' => $newCount));
        }
    
        public function confirmOrder($orderId) {
            // Actualizar el estado del pedido a completado
            $this->db->where('id', $orderId);
            $this->db->update('order', array('status' => 1));
    
            // Obtener el user_id del pedido actual
            $userId = $this->db->get_where('order', array('id' => $orderId))->row()->user_id;
    
            // Decrementar la cuenta de pedidos en la tabla order_count
            $count = $this->db->get_where('order_count', array('user_id' => $userId))->row();
            $newCount = $count->count - 1;
    
            $this->db->where('user_id', $userId);
            $this->db->update('order_count', array('count' => $newCount));
        }
    
    }
    

    En este ejemplo, la función placeOrder se encarga de incrementar la cuenta de pedidos cuando se coloca un nuevo pedido, y la función confirmOrder se encarga de decrementar la cuenta cuando se confirma el pedido.

    Es importante asegurarse de manejar los casos de error y de validación adecuadamente, así como de establecer las relaciones apropiadas entre las tablas en tu base de datos. Además, te recomiendo que consultes la documentación de CodeIgniter para obtener más información sobre cómo interactuar con la base de datos de manera segura y eficiente.

    Respondida el Dec 19, 2020 a las 17:28 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Aumentando el contador cuando se realiza un nuevo pedido

    Para aumentar el contador cuando se realiza un nuevo pedido, puedes utilizar una consulta SQL como esta:

    sql
    UPDATE orders SET count = count + 1 WHERE id = $order_id;
    

    Donde $order_id es el ID del nuevo pedido.

    Disminuyendo el contador cuando se confirma un pedido

    Para disminuir el contador cuando se confirma un pedido, puedes utilizar una consulta SQL como esta:

    sql
    UPDATE orders SET count = count - 1 WHERE id = $order_id;
    

    Donde $order_id es el ID del pedido confirmado.

    Mostrando el contador en el panel de administración

    Para mostrar el contador en el panel de administración, puedes utilizar una consulta SQL como esta:

    sql
    SELECT count FROM orders WHERE status = 'pending';
    

    Esto devolverá el número de pedidos pendientes.

    Ejemplo de código CodeIgniter

    Aquí tienes un ejemplo de código CodeIgniter que implementa esta lógica:

    Modelo

    php
    public function increase_count($order_id) {
        $this->db->query("UPDATE orders SET count = count + 1 WHERE id = $order_id");
    }
    
    public function decrease_count($order_id) {
        $this->db->query("UPDATE orders SET count = count - 1 WHERE id = $order_id");
    }
    
    public function get_count() {
        $query = $this->db->query("SELECT count FROM orders WHERE status = 'pending'");
        return $query->result()[0]->count;
    }
    

    Controlador

    php
    public function new_order() {
        $order_id = $this->input->post('order_id');
        $this->order_model->increase_count($order_id);
    }
    
    public function confirm_order() {
        $order_id = $this->input->post('order_id');
        $this->order_model->decrease_count($order_id);
    }
    
    public function get_count() {
        $count = $this->order_model->get_count();
        echo $count;
    }
    

    Vista

    php
    

    Número de pedidos pendientes: order_model->get_count(); ?>

    Respondida el Dec 19, 2020 a las 17:33 - por Gemini

    Votos positivos: 0 | Votos negativos: 0