Foros del Web » Programando para Internet » PHP »

Agregar favorito a BD

Estas en el tema de Agregar favorito a BD en el foro de PHP en Foros del Web. Hola, tengo un sistema de noticias y quiero crear un sistema de favoritos, quisiera saber como poner un boton de AGREGAR FAVORITO y que guarde, ...
  #1 (permalink)  
Antiguo 22/06/2014, 20:39
 
Fecha de Ingreso: junio-2012
Mensajes: 53
Antigüedad: 11 años, 9 meses
Puntos: 1
Agregar favorito a BD

Hola, tengo un sistema de noticias y quiero crear un sistema de favoritos, quisiera saber como poner un boton de AGREGAR FAVORITO y que guarde, ID de la noticia, ID del usuario, dentro de esto quisiera poner el boton:

Código:
  // Muestra el artículo seleccionado
	if(isset($_GET['articulo'])) {
	if(!empty($_GET['articulo'])) {
	  $id_articulo = (int) mysql_real_escape_string($_GET['articulo']);
	  $query_articulos = mysql_query("SELECT * FROM ".$db_articulos." WHERE id_articulo = '".$id_articulo."' LIMIT 1");
	  if(mysql_num_rows($query_articulos) > 0) {
	  while($Article = mysql_fetch_assoc($query_articulos)) {	  
	  echo''.$Article['titulo'].'';
	  }
	 }
	}
   }

Última edición por pablos_cent; 22/06/2014 a las 20:39 Razón: código
  #2 (permalink)  
Antiguo 22/06/2014, 21:41
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Agregar favorito a BD

Podrías hacerlo con Ajax, enviando el dato a guardar mediante una petición asíncrona a otro archivo que se encargue de guardarlo en la BD, así evitas que se recargue la ventana. Añádele un pseudo-atributo al botón en el cual asignarás el dato a enviar, en JS lo recibes como elemento.getAttribute("data-atributo") y lo envías a través de Ajax.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 23/06/2014, 19:04
 
Fecha de Ingreso: junio-2012
Mensajes: 53
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: Agregar favorito a BD

Hola Alexis, el problema real es que no se me ocurre como hacer que guarde los datos en la DB
  #4 (permalink)  
Antiguo 23/06/2014, 19:19
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Agregar favorito a BD

Es tan fácil como guardar un dato en la BD. Cada noticia debe tener un código identificador y debe haber una sesión cuyo identificador sería el código del usuario que previamente se ha identificado. Luego, en cada noticia, podrías colocar un elemento <span>, <label> o <button> y al pulsarlo, envías a través de Ajax el código de la noticia y el código del usuario, estos datos llegarán a un archivo del lado del servidor que se encargará de almacenarlos en una tabla "favoritos". Cuando en un futuro el usuario vuelva a ingresar a la página, harás una consulta a dicha tabla junto con la de las noticias y por cada coincidencia de noticia con favorito, colocas alguna imagen que indique que dicho usuario ya marcó a esa noticia como favorito.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 23/06/2014, 19:44
 
Fecha de Ingreso: junio-2012
Mensajes: 53
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: Agregar favorito a BD

lo hze todo con php, funciona, pero ahora quiero que identifique si ya esta guardado no lo guarde o que no aparezca el boton, lo tengo asi:

Código:
		';
				session_start();
				if(isset($_SESSION['id_usuario'])) {
				
if($_POST['addbook']) {
	$act = mysql_query("INSERT INTO favoritos (id_autor, id_articulo, fecha) values ('".$_SESSION["id_usuario"]."', '".$id_articulo."', NOW())") or die('Fallo en: ' . mysql_error());
	  echo'GUARDADO';
  }
				
				echo'
		<tr>
		<td>
		<form action="#" method="post">
		<input type="submit" name="addbook" value="Guardar">
		</form>
		</td>
		</tr>';
		}
		echo'

Última edición por pablos_cent; 23/06/2014 a las 19:45 Razón: code
  #6 (permalink)  
Antiguo 23/06/2014, 20:01
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Agregar favorito a BD

¿De casualidad el formulario que aparece abajo es el del botón para añadir la noticia a 'favoritos'? Si es así, debes de añadir a la condición un else para que cuando no se haya marcado la noticia, aparezca el botón. Ahí estás imprimiendo el mensaje de éxito y también el botón.

Corrige eso y prueba.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 23/06/2014, 20:05
 
Fecha de Ingreso: junio-2012
Mensajes: 53
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: Agregar favorito a BD

Código:
		';
				session_start();
				if(isset($_SESSION['id_usuario'])) {
				
if($_POST['addbook']) {
	$act = mysql_query("INSERT INTO favoritos (id_autor, id_articulo, fecha) values ('".$_SESSION["id_usuario"]."', '".$id_articulo."', NOW())") or die('Fallo en: ' . mysql_error());
	  echo'GUARDADO';
  } else {
				
				echo'
		<tr>
		<td>
		<form action="#" method="post">
		<input type="submit" name="addbook" value="Guardar">
		</form>
		</td>
		</tr>';
		}
		}
		echo'
Si te refieres a eso, funciona que no muestra el boton despues de guardar igual es un punto a favor, gracias.
Pero lo que yo quiero es que por ejemplo, si yo guardo en la DB la ID del articulo 4 y luego el boton vuelve a aprecer el boton y lo presiono diga un mensaje como: Ya existen los datos en la DB
  #8 (permalink)  
Antiguo 23/06/2014, 20:10
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Agregar favorito a BD

Ahí debes de hacer una de dos cosas, o bien no muestras el botón pues la noticia ya fue guardada o lo muestras pero con otro texto, como en Facebook cuando le das un 'Me Gusta' a una publicación y el enlace cambia a 'Ya no me gusta'. Ese cambio se realizará si es que el código de esa noticia está guardada en la BD y asignada al usuario actual. Para cuando el botón sea para desmarcar la noticia (quitarla de los favoritos), te tocaría enviar un dato extra para que según sea este, elimines la noticia de los favoritos, o bien, envías el código de la noticia y del usuario y antes de intentar eliminarla, haces una búsqueda en la BD; si existe, la eliminas, sino, la insertas.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #9 (permalink)  
Antiguo 23/06/2014, 20:12
 
Fecha de Ingreso: junio-2012
Mensajes: 53
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: Agregar favorito a BD

Me gusta eso de que el boton cambie a ELIMINAR FAVORITO pero no se como hacerlo, si puedes echarme una manito con ese código por favor que hay me pilla
  #10 (permalink)  
Antiguo 23/06/2014, 20:19
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Agregar favorito a BD

Pues tendrías que usar Ajax, a menos que desees recargar la ventana y hacer el cambio ahí mismo y si no dominas Ajax, te resultará más fácil. Suponiendo que lo hagas sin Ajax, una vez que marques la noticia, insertas el código de la misma y del usuario en la BD y haces una redirección a la página de la noticia, en ella, realizas una búsqueda en la tabla de favoritos con el código de la noticia que se está mostrando y el del usuario; si está presente, le asignas el texto 'Quitar de favoritos' al botón, caso contrario, el texto 'Agregar a favoritos'. Eso ya sería una simple condición. Y si quieres que esto también suceda cuando listes a todas las noticias, tendrías que hacer una consulta tanto a la tabla de noticias como a la de favoritos para obtener los datos necesarios.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #11 (permalink)  
Antiguo 23/06/2014, 20:22
 
Fecha de Ingreso: junio-2012
Mensajes: 53
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: Agregar favorito a BD

Si entiendo mas o menos, pero ajax no lo domino nada y en verdad preferiría hacer todo con php, pero no se me curre nada para hacer eso, es por eso que te pido ayuda si es que tu sabes como hacer esa acción, te lo agradezco
  #12 (permalink)  
Antiguo 23/06/2014, 20:28
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Agregar favorito a BD

La explicación que te di es sin usar Ajax.

Analízala con calma e intenta aplicarla a lo que necesitas.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #13 (permalink)  
Antiguo 23/06/2014, 20:41
 
Fecha de Ingreso: junio-2012
Mensajes: 53
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: Agregar favorito a BD

Gracias Alexis, analice tu respuesta y logre hacer esto, mira:

Código:
		';
				session_start();
				if(isset($_SESSION['id_usuario'])) {

	$sql = mysql_query("SELECT id_articulo FROM favoritos WHERE id_articulo='".$id_articulo."'");
	if(mysql_num_rows($sql) > 0) {
	  echo'YA INGRESADO';
	} else {
				
if($_POST['addbook']) {
	$act = mysql_query("INSERT INTO favoritos (id_autor, id_articulo, fecha) values ('".$_SESSION["id_usuario"]."', '".$id_articulo."', NOW())") or die('Fallo en: ' . mysql_error());
	  echo'GUARDADO';
  } else {
				
				echo'
		<tr>
		<td>
		<form action="#" method="post">
		<input type="submit" name="addbook" value="Guardar">
		</form>
		</td>
		</tr>';
		}
		}
		}
		echo'
Gracias alexis

Última edición por pablos_cent; 23/06/2014 a las 20:51 Razón: code
  #14 (permalink)  
Antiguo 23/06/2014, 21:16
 
Fecha de Ingreso: junio-2012
Mensajes: 53
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: Agregar favorito a BD

Alexis una ultima pregunta, si puedes ver algo con que ayudarme, mira, si ya esta la ID del articulo guardado no vuelve a guardar, pero aplica para todos, no solo para el usuario que guardo el favorito:

Código:
// Boton para usuarios
				session_start();
				if(isset($_SESSION['id_usuario'])) {

// Buscamos que la ID del articulo no este guardado
	$sql = mysql_query("SELECT id_articulo FROM favoritos WHERE id_articulo='".$id_articulo."'");
	if(mysql_num_rows($sql) > 0) {
	  echo'YA INGRESADO';
	} else {
				
// Buscamos y guardamos los datos necesarios para el favorito
if($_POST['addbook']) {
	$act = mysql_query("INSERT INTO favoritos (id_autor, id_articulo, fecha) values ('".$_SESSION["id_usuario"]."', '".$id_articulo."', NOW())") or die('Fallo en: ' . mysql_error());
	  echo'GUARDADO';
  } else {
				
// Creamos el boton de favorito
				echo'
		<tr>
		<td>
		<form action="#" method="post">
		<input type="submit" name="addbook" value="Guardar">
		</form>
		</td>
		</tr>';
		}
		}
		}
		echo'
  #15 (permalink)  
Antiguo 23/06/2014, 21:18
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Agregar favorito a BD

En la consulta a la tabla 'favoritos', también debes hacer el filtrado por el código del usuario, pues la noticia pudo haber sido marcada por otro usuario y por lo tanto sí estará en la tabla. Si deseas cambiar el texto del botón, deberás hacerlo en su atributo value y recuerda que antes de guardar la noticia como favorita, debes de verificar si ya existe en la tabla de favoritos para el usuario actual, si está, la eliminas, caso contrario, la insertas.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #16 (permalink)  
Antiguo 23/06/2014, 21:23
 
Fecha de Ingreso: junio-2012
Mensajes: 53
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: Agregar favorito a BD

mira hize esto:

Código:
$sql = mysql_query("SELECT id_articulo, id_autor FROM favoritos WHERE id_articulo='".$id_articulo."' AND id_autor ='".$id_autor ."'");
Pero no me funciono, puedes darme el código si es que puedes por favor
  #17 (permalink)  
Antiguo 23/06/2014, 21:29
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Agregar favorito a BD

¿Y el resto? Porque la consulta está bien, pero no explicas qué no funciona. Por favor, usa el highlight de PHP para ver mejor el código.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #18 (permalink)  
Antiguo 23/06/2014, 21:35
 
Fecha de Ingreso: junio-2012
Mensajes: 53
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: Agregar favorito a BD

Código PHP:
// Boton para usuarios
                
session_start();
                if(isset(
$_SESSION['id_usuario'])) {

// Buscamos que la ID del articulo no este guardado
    
$sql mysql_query("SELECT id_articulo FROM favoritos WHERE id_articulo='".$id_articulo."'");
    if(
mysql_num_rows($sql) > 0) {
      echo
'YA INGRESADO';
    } else {
                
// Buscamos y guardamos los datos necesarios para el favorito
if($_POST['addbook']) {
    
$act mysql_query("INSERT INTO favoritos (id_autor, id_articulo, fecha) values ('".$_SESSION["id_usuario"]."', '".$id_articulo."', NOW())") or die('Fallo en: ' mysql_error());
      echo
'GUARDADO';
  } else {
                
// Creamos el boton de favorito
                
echo'
        <tr>
        <td>
        <form action="#" method="post">
        <input type="submit" name="addbook" value="Guardar">
        </form>
        </td>
        </tr>'
;
        }
        }
        }
        echo 
Hay está el código, pero solo revisa que la ID del articulo para que no se vuelva a guardar, por ende no verifica a que usuario pertenece y ningún otro usuario puede guardar como favorito la misma noticia
  #19 (permalink)  
Antiguo 23/06/2014, 22:15
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.551
Antigüedad: 12 años, 4 meses
Puntos: 977
Respuesta: Agregar favorito a BD

Por esa razón fue que te dije que ese filtrado lo hagas con el código del usuario. Modifica esa consulta y nos dices cómo te fue.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #20 (permalink)  
Antiguo 24/06/2014, 20:38
 
Fecha de Ingreso: junio-2012
Mensajes: 53
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: Agregar favorito a BD

sigue sin funcionar, el id_autor es el que no sirve, no se que puede pasar

Etiquetas: articulos, favoritos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:21.