Estoy haciendo una lista de fotos con likes: primero necesito obtener todas las imagenes de una tabla, segundo comprobar (row count) si el usuario ya le dio like a la imagen sacando el id de la imagen y por ultimo otro row count para saber cuantos likes tiene la imagen, usando el mismo id de imagen.
Tengo algo así, me falta el count, no estoy seguro de como hacerlo y si usar INNER JOIN:
Código
SELECT user_uploads.* AS uu, members.*, COUNT(img_id, user_id) AS usr_liked, COUNT(img_id) AS total_likes FROM user_uploads INNER JOIN members AS m ON m.id = uu.user_id -- owner info INNER JOIN img_likes AS il ON il.img_id = uu.imgID AND il.user_id = ? -- check if logged in user already liked INNER JOIN img_likes AS ilt ON ilt.img_id = uu.imgID -- total likes GROUP BY img_id, user_id ORDER BY up_time DESC
Tengo un prepared statement y luego con un foreach imprimo todas las imagenes. Pero antes de empezar a imprimir la lista de fotos tengo que comprobar si el usuario ya le dio like a la imagen para cambiar el boton (like o unlike) y sacar el numero total de likes.
Tampoco se, en este caso de juntar tablas, como comprobar el row count, normalmente uso mysqli_num_rows($stmt); pero ahora no se si esto funciona asi.
Código
if ($stmt = $mysqli->prepare("SELECT user_uploads.* AS uu, members.*, COUNT(img_id, user_id) AS usr_liked, COUNT(img_id) AS total_likes FROM user_uploads INNER JOIN members AS m ON m.id = uu.user_id INNER JOIN img_likes AS il ON il.img_id = uu.imgID AND il.user_id = ? INNER JOIN img_likes AS ilt ON ilt.img_id = uu.imgID GROUP BY img_id, user_id ORDER BY up_time DESC")) { $stmt->bind_param('i', $id); $Items = $stmt->execute(); // get photos foreach ($Items as $ItemInfo) { $img_id = $aItemInfo['img_id']; if ($liked == 0) { $like = 'Me gusta'; } else if ($liked == 1) { $like = 'Ya no me gusta'; } $photo_list .= ' // lista de fotos // boton like <span class="total_likes" id="lik' . $status_id . '">' . $totallikes . '</span> <a id="' . $total_likes . '" class="likes">' . $like . '</a> '; } }
Si hay alguna forma mejor de hacer esto me gustaría saberla.
Gracias!