Nueva pregunta

Pregunta:

Fecha: 18-03-2020 20:11:26 (En Español)

Intento actualizar un registro en la base de datos, pero no hace nada y no se cual es el error[Resuelta]

Hola amigos de la comunidad, estoy intentado hacer un contador de visitas, pero no me esta actualizando los registro y no se cual es el motivo se he revisado muy la consulta sql y creo que esta bien.

No me esta actualizando nada y las variables tienen los datos correctamente
[url=https://ibb.co/1ZYB8DJ][/url]
[url=https://ibb.co/1zJpbvL][/url]

NOTA: aun no le he puesto el $view+1 para que me sume uno cada vez que haya una visita, no lo hago porque quiero esperar a resorber el problema que les comento.

Código:
// La visita del usuario
$view = 1;
$postInt = (int)$post;

// actualizar, registrar la visita del producto
if(isset($postInt)){
    $statement = $conexion->prepare("UPDATE view SET views = '$view', id_view_product = '$postInt', create_at_view = NOW()"
    );
    $statement->execute(array(
        ':view' => $view,
        ':postInt' => $postInt
    ));

    var_dump($postInt);
    var_dump($view);
    die();
}


Un cordial saludo
Etiquetas: PHP - SQL Votos: -1 - Respuestas: 3 - Vistas: 3 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 19-03-2020 11:44:41 Hola Braylin,
    Tu consulta está mal por varios motivos:
    1. Usas la palabra reservada `view` como nombre de una tabla. De preferencia cambia el nombre a una palabra no reservada.
    2. Tu sentencia de UPDATE no tiene un WHERE
    3. No estás ligando los parámetros de tu consulta correctamente
    4. Si no tienes registros el UPDATE se ejecuta exitosamente sin actualizar nada. Si lo que quieres es insertar o actualizar puedes cambiar la sentencia UPDATE por un REPLACE INTO.

    Espero te sirva

    Saludos
      Votos: 1 - Link respuesta
     
  • Fecha: 19-03-2020 18:33:10 Hola Ernesto, efectivamente tendré que actualizar mi pregunta ya que he solucionado unos cuentos errores que había en ella.

    Ya he logrado resolver casi todo pero aun me falta algo que no se si me puedas ayudar. Mira todo funciona muy bien ahora, es solo que según mi lógica cuando un producto es recién subido se necesita crear un registro en la tabla view y yo intentaba actualizar un registro que no existe porque esta vació porque no hay nada.

    Lo que en verdad necesito es una condición que sea lo siguiente. Si no hay ese producto no tiene un registro en en la tabla view, entonces me creas uno, pero si ya existe un registro solo actualizarme la el campo views en la tabla view sumándole una a esa visita.

    No se si me di a entender, pero aquí te dejo mi código
    <?php
    
    $initView = 1;
    
    //if(!isset($id_view_product)){
        // $statement = $conexion->prepare('INSERT INTO view (id_view, id_view_product, views, create_at_view) VALUES(
        //     null, :post, :initView, NOW())'
        // );
        // $statement->execute(array(
        //     ':post' => $post,
        //     ':initView' => $initView
        // ));
    //}
    
    // Selecionamos la cantidad de visitas que tiene el producto para sumarle una cuando visiten el producto
    $stmt = $conexion->query("SELECT views FROM view WHERE id_view_product = $post");
    $stmt->execute();
    while ($row = $stmt->fetch()) {
    
    $visitas = $row['views'];
    
    }
    
    
    // La visita del usuario
    $view = $visitas + 1;
    $postInt = (int)$post;
    
    // actualizar, registrar la visita del producto
    if(isset($view)){
        $statement = $conexion->prepare("UPDATE view SET views = '$view'"
        );
        $statement->execute(array(
            ':view' => $view,
            ':postInt' => $postInt
        ));
    }
      Votos: 0 - Link respuesta
     
  • Fecha: 19-03-2020 18:57:16 Hola amigos, ya he resuelto este problema, la verdad es que tenia mucho errores en mi código y tuve que investigar bastante en Google para poder solucionarlo.

    Acá les dejo el código ya completo y funcionando, mi contador de visita ya esta funcionando amigos.

    <?php
    
    // Selecionamos la cantidad de visitas que tiene el producto para sumarle una cuando visiten el producto
    $stmt = $conexion->query("SELECT views FROM view WHERE id_view_product = $post");
    $stmt->execute();
    while ($row = $stmt->fetch()) {
    
    $visitas = $row['views'];
    
    }
    
    $initView = 1;
    
    if(empty($visitas)){
        $statement = $conexion->prepare('INSERT INTO view (id_view, id_view_product, views, create_at_view) VALUES(
            null, :post, :initView, NOW())'
        );
        $statement->execute(array(
            ':post' => $post,
            ':initView' => $initView
        ));
    }
    
    // La visita del usuario
    if(!empty($visitas)){
        $view = $visitas + 1;
        $postInt = (int)$post;
    }
    
    // actualizar, registrar la visita del producto
    if(isset($view)){
        $statement = $conexion->prepare("UPDATE view SET views = '$view' WHERE id_view_product = $post"
        );
        $statement->execute(array(
            ':view' => $view,
            ':postInt' => $postInt
        ));
    }
      Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com