Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Like por Departamentos

Estas en el tema de Like por Departamentos en el foro de PHP en Foros del Web. Buenos Dias gente, pues bien estoy realizando un pequeño proyecto el cual se trata sobre poner "likes" a una serie de departamentos y luego que ...
  #1 (permalink)  
Antiguo 01/03/2013, 10:13
Avatar de skardo  
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 68
Antigüedad: 11 años, 2 meses
Puntos: 1
Like por Departamentos

Buenos Dias gente, pues bien estoy realizando un pequeño proyecto el cual se trata sobre poner "likes" a una serie de departamentos y luego que me reporte un listado de cuantos departamentos gustan a la gente, pues hasta alli todo bien pero:

- como plantearia mi logica si solo tendre dos imagenes de like/dislike? lo declararia como un butom? o seria un imput en forma de imagen, realmente nose como plantearlo, aqui les dejo mi codigo para que chekees.


Código:
<table align=center border="0" width="40%">
		<?
		$resultado_1 = mysql_query("select * from prueba ;", $conexion);
		$i = 1; 
		while ($i <= ($row = mysql_fetch_array($resultado_1))) {
		?>
		<tr>
		<td><? echo $i++; ?> : <? print $row['like_name']; ?></td>
		<form action="like.php" name="like">
		<td width="264">&nbsp;¿Te gusta este Departamento ?
		<img border="0" src="like.png" width="32" height="26">
		<img border="0" src="dislike.png" width="32" height="26">
		</form>
		</td>
		</tr>
	<?}mysql_close($conexion); ?>
</table>
* como ven solo estoy listando los departamentos de mi base de datos pero en el form me quede con la idea de las dos imagenes y nose como declararlas, serian inputs? botones? , me tiene ke kedar algo asi:

http://taklab.com/pruebas/like/

Gracias por adelantado

Última edición por skardo; 01/03/2013 a las 10:30
  #2 (permalink)  
Antiguo 01/03/2013, 10:48
 
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 487
Antigüedad: 12 años, 8 meses
Puntos: 31
Respuesta: Like por Departamentos

Puede ser de diversas maneras, tanto botones, como links con imagenes.. etc.

Ya elegiras cual te conviene mas a ti..
__________________
El talento se educa en la KARMA y el carácter en la tempestad.
Gabriel De Los Santos
  #3 (permalink)  
Antiguo 01/03/2013, 10:52
Avatar de skardo  
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 68
Antigüedad: 11 años, 2 meses
Puntos: 1
Respuesta: Like por Departamentos

gracias x responder, si mas o menos me imaginaba que serian link, mira estoy haciendolo bien?

Cita:
<table align=center border="0" width="40%">
<?
$resultado_1 = mysql_query("select * from prueba ;", $conexion);
$i = 1;
while ($i <= ($row = mysql_fetch_array($resultado_1))) {
?>
<tr>
<td><? print $row['like_name']; ?></td>
<form action="like.php" name="like">
<td width="264">&nbsp;¿Te gusta este Departamento ?
<a href="like.php?idprueba=<? print $row['idprueba'];?>&like_si=<? echo $i; ?>"><img border="0" src="like.png" width="32" height="26"></a>
<a href="like.php?idprueba=<? print $row['idprueba'];?>&like_no=<? echo $i; ?>"><img border="0" src="dislike.png" width="32" height="26"></a>
</form>
</td>
</tr>
<?}mysql_close($conexion); ?>
</table>
*como ves estoy mandando en el link mi ID de mi tabla junto con mi campo al cual se almacenara el voto,
tengo una duda, ya estableci el numero a mi campo "like_si"/ "like_no", como recibiria esa variable en mi like.php y como lo insertaria :D?
  #4 (permalink)  
Antiguo 01/03/2013, 10:57
 
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 487
Antigüedad: 12 años, 8 meses
Puntos: 31
Respuesta: Like por Departamentos

Cita:
Iniciado por skardo Ver Mensaje
gracias x responder, si mas o menos me imaginaba que serian link, mira estoy haciendolo bien?


*como ves estoy mandando en el link mi ID de mi tabla junto con mi campo al cual se almacenara el voto,
tengo una duda, ya estableci el numero a mi campo "like_si"/ "like_no", como recibiria esa variable en mi like.php y como lo insertaria :D?
Esta bien, aunque te recomiendo usar <?php y no <?
__________________
El talento se educa en la KARMA y el carácter en la tempestad.
Gabriel De Los Santos
  #5 (permalink)  
Antiguo 01/03/2013, 11:01
Avatar de skardo  
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 68
Antigüedad: 11 años, 2 meses
Puntos: 1
Respuesta: Like por Departamentos

Cita:
Iniciado por gldelossantos Ver Mensaje
Esta bien, aunque te recomiendo usar <?php y no <?
gracias x el dato, ayudame con lo otro porfa, como envio y recibo las variables a mi like.php me preocupa el contador $i ke estoy mandando

<?php

$like_si=$_POST['like_si'];
$like_no=$_POST['like_no'];
$newlike_si=$_GET['like_si'];
$newlike_no=$_GET['like_no'];
$si=$like_si+$newlike_si;
$no=$like_no+$newlike_no;

if ($newlike_si==1){
$voto= "update prueba set like_si='$si' where idprueba = $idprueba";
} else {
$voto= "update prueba set like_no='$no' where idprueba = $idprueba";
}
$result = mysql_query($voto);

?>

NO ME ESTA CONTANDO LOS VOTOS, QUE TENGO QUE HACER? me aparece asi http://taklab.com/pruebas/like/voto.php

que me falta?

Última edición por skardo; 01/03/2013 a las 12:00
  #6 (permalink)  
Antiguo 01/03/2013, 12:00
Avatar de skardo  
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 68
Antigüedad: 11 años, 2 meses
Puntos: 1
Respuesta: Like por Departamentos

Ayudenme porfavor nose como puedo hacer para que en mi variable de base de datos se sume el numero k estoy mandando :( solo lo actualiza
  #7 (permalink)  
Antiguo 05/03/2013, 17:21
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Like por Departamentos

Cita:
como puedo hacer para que en mi variable de base de datos se sume el numero k estoy mandando :( solo lo actualiza
Por lo pronto, en una tabla de una base de datos no existen "variables", sino columnas. Trata de hablar con propiedad. Estamos en un ambiente técnico.
Por otro lado, tienes la respuesta delante de tus ojos: SI está actualizando y no sumando, es porque no lo has escrito como acumulador...
¿Lo puedes ver ahora?

Finalmente, un consejo básico: En el área de menajes hay un selector que dice "Highlight".
USALO.
Sirve para poner los códigos de una forma comprensible y clara:
Código PHP:
Ver original
  1. <?php
  2.  
  3. $like_si=$_POST['like_si'];
  4. $like_no=$_POST['like_no'];
  5. $newlike_si=$_GET['like_si'];
  6. $newlike_no=$_GET['like_no'];
  7. $si=$like_si+$newlike_si;
  8. $no=$like_no+$newlike_no;
  9.  
  10. if ($newlike_si==1){
  11. $voto= "update prueba set like_si='$si' where idprueba = $idprueba";
  12. } else {
  13. $voto= "update prueba set like_no='$no' where idprueba = $idprueba";
  14. }
  15. $result = mysql_query($voto);
  16.  
  17. ?>

Tu error está en esta parte (no importa en cual de las dos):
Código SQL:
Ver original
  1. UPDATE prueba SET like_si='$si' WHERE idprueba = $idprueba
Como puedes ver, no estás sumando nada.

¿Sabes usar una variable como acumulador?
Algo como:
Código PHP:
Ver original
  1. $a = $a + $b;

Es el ABC de cualquier lenguaje de programación...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 05/03/2013, 17:39
Avatar de skardo  
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 68
Antigüedad: 11 años, 2 meses
Puntos: 1
Respuesta: Like por Departamentos

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Por lo pronto, en una tabla de una base de datos no existen "variables", sino columnas. Trata de hablar con propiedad. Estamos en un ambiente técnico.
Por otro lado, tienes la respuesta delante de tus ojos: SI está actualizando y no sumando, es porque no lo has escrito como acumulador...
¿Lo puedes ver ahora?

Finalmente, un consejo básico: En el área de menajes hay un selector que dice "Highlight".
USALO.
Sirve para poner los códigos de una forma comprensible y clara:
Código PHP:
Ver original
  1. <?php
  2.  
  3. $like_si=$_POST['like_si'];
  4. $like_no=$_POST['like_no'];
  5. $newlike_si=$_GET['like_si'];
  6. $newlike_no=$_GET['like_no'];
  7. $si=$like_si+$newlike_si;
  8. $no=$like_no+$newlike_no;
  9.  
  10. if ($newlike_si==1){
  11. $voto= "update prueba set like_si='$si' where idprueba = $idprueba";
  12. } else {
  13. $voto= "update prueba set like_no='$no' where idprueba = $idprueba";
  14. }
  15. $result = mysql_query($voto);
  16.  
  17. ?>

Tu error está en esta parte (no importa en cual de las dos):
Código SQL:
Ver original
  1. UPDATE prueba SET like_si='$si' WHERE idprueba = $idprueba
Como puedes ver, no estás sumando nada.

¿Sabes usar una variable como acumulador?
Algo como:
Código PHP:
Ver original
  1. $a = $a + $b;

Es el ABC de cualquier lenguaje de programación...
gracias por responder, soy nuevo en este foro asi que nose muy bien delas funciones,

con respecto la columna "$si", estoy sumando estos dos
Código PHP:
Ver original
  1. $si=$like_si+$newlike_si+$i;
por eso lo declaro asi

Código PHP:
Ver original
  1. like_si='$si'

porque pienso que el $si esta lo que se acumulo y lo guardarà en la columna like_si, o como podria hacerlo?

Código PHP:
Ver original
  1. like_si='$like_si'+$'i'

no seas cruel conmigo, aunque paresca sencillo no se mucho de acumuladores
  #9 (permalink)  
Antiguo 05/03/2013, 18:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Like por Departamentos

Estás mezclando conceptos...
Que acumules en PHP no significa que acumules en SQL, ni en la base.
Ten en cuenta que SQL es un lenguaje de consultas independiente, con sus propias reglas y opera sobre un ambiente que también es independiente: El motor de base de datos (DBMS o SGBD), que no lee ni interpreta PHP.

Para que tu UPDATE fuese funcional primero deberías realizar una consulta a la base que recupere los valores que en ese momento existe en esa tabla y para ese ID (cosa que no se ve que estés haciendo en ninguna parte).
Luego de eso realizas la sumatoria, sumas el valor obtenido en PHP al obtenido en la base y recién entonces envías a realizar el UPDATE.

Es decir: Debes interactuar con ambas cosas.

La otra solución, mucho más práctica sencilla, es mandar a realizar el UPDATE haciendo que la operación de acumulación se haga en el SQL...

Para mi, el tema pasaría por hacer la sumatoria y luego enviar a realizar la suma al UPDATE:
Código PHP:
Ver original
  1. <?php
  2.  
  3. $like_si=$_POST['like_si'];
  4. $like_no=$_POST['like_no'];
  5. $newlike_si=$_GET['like_si'];
  6. $newlike_no=$_GET['like_no'];
  7. $si=$like_si+$newlike_si;
  8. $no=$like_no+$newlike_no;
  9.  
  10. if ($newlike_si==1){
  11. $voto= "UPDATE prueba SET like_si= like_si + $si WHERE idprueba = $idprueba";
  12. } else {
  13. $voto= "UPDATE prueba SET like_no = like_no + $no WHERE idprueba = $idprueba";
  14. }
  15. $result = mysql_query($voto);
  16.  
  17. ?>
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 06/03/2013, 11:06
Avatar de skardo  
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 68
Antigüedad: 11 años, 2 meses
Puntos: 1
Respuesta: Like por Departamentos

eh intendo con lo que me has dado y quede maravillado pero siempre me suma dos en ves de uno,

intente hacer de la otra forma k me planteaste y nose si estarà bien

Código PHP:
Ver original
  1. <?php
  2.         $puerto = "localhost";  
  3.         $usuario = "taklabco_cesar";  
  4.         $clave = "opciones";  
  5.         $conexion = mysql_connect($puerto,$usuario,$clave);
  6.         mysql_select_db ("taklabco_bd", $conexion );
  7.    
  8.         $idprueba=$_GET['idprueba'];
  9.     $like_name=$_POST['like_name'];
  10.     $like_si=$_POST['like_si'];
  11.     $like_no=$_POST['like_no'];
  12.     $result = mysql_query("select * from prueba where idprueba=idprueba;");
  13.     if ($result==1){
  14.     $voto= "UPDATE prueba SET like_si=like_si+1";
  15.         } else {
  16.         $voto= "UPDATE prueba SET like_no=like_no+1";
  17.         }
  18.         $result = mysql_query($voto);
  19.          
  20.         if (mysql_query ($voto))
  21.         echo "¡Muchas Gracias! sus datos fueron registrados";
  22.         else
  23.         echo "Lo Sentimos, sus datos no fueron registrados";
  24.         ?>

quiero que me sume 1 no dos, estoy recuperando el ID en
Código PHP:
Ver original
  1. $idprueba=$_GET['idprueba'];
que me manda de mi index.php

Código PHP:
Ver original
  1. <?php
  2.         $resultado_1 = mysql_query("select * from prueba ;", $conexion);
  3.         $i = 1;
  4.         while ($i <= ($row = mysql_fetch_array($resultado_1))) {
  5.         ?>
  6.         <tr>
  7.         <td><?php print $row['like_name']; ?></td>
  8.         <td width="264">&nbsp;¿Te gusta este Departamento ?
  9.         <a  href="like.php?idprueba=<?php print $row['idprueba'];?>&like_si=<?php echo $i; ?>"><img border="0" src="like.png" width="32" height="26"></a>
  10.         <a  href="like.php?idprueba=<?php print $row['idprueba'];?>&like_no=<?php echo $i; ?>"><img border="0" src="dislike.png" width="32" height="26"></a>
  11.         </td>
  12.         </tr>
  13.     <?php }mysql_close($conexion); ?>

AYUDAME PORFAVOR
  #11 (permalink)  
Antiguo 06/03/2013, 14:52
Avatar de skardo  
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 68
Antigüedad: 11 años, 2 meses
Puntos: 1
Respuesta: Like por Departamentos

Chicos ya lo resolvi estaba ejecutando 2 veces mysql_query ($voto) por eso se registra 2 veces , osea en la parte del codigo hacia esto:

Código PHP:
Ver original
  1. if (mysql_query ($voto))
  2.         echo "¡Muchas Gracias! sus datos fueron registrados";
  3.         else
  4.         echo "Lo Sentimos, sus datos no fueron registrados";

y no me daba cuenta ya al comento de poner if (mysql_query ($voto)) se estaba ejecutando asi que lo declare asi:

Código PHP:
Ver original
  1. if ($result)
  2.         echo "¡Muchas Gracias! sus datos fueron registrados";
  3.         else
  4.         echo "Lo Sentimos, sus datos no fueron registrados";

Etiquetas: mysql, select
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 20:28.