I have this problem: Warning: count (): Parameter must be an array or an object that implements Countable in ... any solution?

-1
<?php

        $datos = array("idUsuario"=>"",
                       "idProducto"=>$infoproducto["id"]);

        $comentarios = ControladorUsuarios::ctrMostrarComentariosPerfil($datos);
        $cantidad = 0;

        foreach ($comentarios as $key => $value){

            if($value["comentario"] != ""){

                $cantidad += count($value["id"]);

            }
        }

        ?>

Some alternative, I tried other versions of php.

static public function ctrMostrarComentariosPerfil($datos){

    $tabla = "comentarios";

    $respuesta = ModeloUsuarios::mdlMostrarComentariosPerfil($tabla, $datos);

    return $respuesta;

}
static public function mdlMostrarComentariosPerfil($tabla, $datos){

    if($datos["idUsuario"] != ""){

        $stmt = Conexion::conectar()->prepare("SELECT * FROM $tabla WHERE id_usuario = :id_usuario AND id_producto = :id_producto");

        $stmt -> bindParam(":id_usuario", $datos["idUsuario"], PDO::PARAM_INT);
        $stmt -> bindParam(":id_producto", $datos["idProducto"], PDO::PARAM_INT);

        $stmt -> execute();

        return $stmt -> fetch();

    }else{

        $stmt = Conexion::conectar()->prepare("SELECT * FROM $tabla WHERE id_producto = :id_producto ORDER BY Rand()");

        $stmt -> bindParam(":id_producto", $datos["idProducto"], PDO::PARAM_INT);

        $stmt -> execute();

        return $stmt -> fetchAll();

    }

    $stmt-> close();

    $stmt = null;

}
    
asked by Miguel Clavijo 09.05.2018 в 18:00
source

1 answer

1

I think what you want is to count the comments not empty, the php count returns the number of items in an array, try this:

<?php
    function tieneComentario($value)
    {
        return $value["comentario"] != "";
    }

    $datos = array("idUsuario"=>"",
                   "idProducto"=>$infoproducto["id"]);

    $comentarios = ControladorUsuarios::ctrMostrarComentariosPerfil($datos);
    $cantidad = count(array_filter($comentarios, "tieneComentario"));



    ?>
    
answered by 10.05.2018 в 13:03