Foros del Web » Programando para Internet » PHP »

no consigo funcionar codigo php

Estas en el tema de no consigo funcionar codigo php en el foro de PHP en Foros del Web. realize este codigo para contar las visitas de las publicaciones que mandan los usuarios a traves de un formulario a traves de $_POST codigo contador ...

  #1 (permalink)  
Antiguo 22/05/2011, 07:28
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
no consigo funcionar codigo php

realize este codigo para contar las visitas de las publicaciones que mandan los usuarios a traves de un formulario a traves de $_POST

codigo contador visitas:
Código PHP:
Ver original
  1. $archivo = "contador.txt";
  2. $abre = fopen($archivo, "r");
  3. $total = fread($abre, filesize($archivo));
  4. fclose($abre);
  5. $abre = fopen($archivo, "w");
  6. $total = $total + 1;
  7. $grabar = fwrite($abre, $total);
  8. fclose($abre);
  9.  
  10. echo $total;

lo que no funciona bien ya que me cuenta todos las vistitas de la web y yo solo quiero que me cuente las visitas de las publicacion individuales que publicaron cada cliente

esta es la linea que quiero que me cuente cada vez que clickean
Código PHP:
Ver original
  1. <a href='resultado.php?id=".$row['id_publicacion']."'>".$row['titulo']."</a>

en el codigo que postee arriba me cuenta todas las veces que clickean en cualquiera de los enlaces publicados y yo solo quiero que me cuenten las veces que entran en los enlaces individuales osea un contador para cada publicacion.

No se si se me entendio si algun experto me puede orientar un poco o pasarme algun tutorial se lo agradeceria.

saludos
  #2 (permalink)  
Antiguo 22/05/2011, 08:50
Avatar de asinox  
Fecha de Ingreso: enero-2002
Ubicación: Santo Domingo
Mensajes: 2.712
Antigüedad: 22 años, 3 meses
Puntos: 6
Respuesta: no consigo funcionar codigo php

Pues rusticamente:

Código PHP:
$archivo "contador.txt"
$abre fopen($archivo"r+");
$total fread($abrefilesize($archivo));
//fclose($abre);
$abre2 fopen($archivo"w+");
//$total = $total+1;
$grabar fwrite($abre2$total+1);

echo 
$total;
fclose($abre);
fclose($abre2); 
__________________
www.dataautos.com
  #3 (permalink)  
Antiguo 22/05/2011, 08:56
 
Fecha de Ingreso: noviembre-2010
Mensajes: 1.242
Antigüedad: 13 años, 5 meses
Puntos: 73
Respuesta: no consigo funcionar codigo php

Date una vuelta por: http://www.desenredate.com/articulos...or-visitas.php
__________________
:)
  #4 (permalink)  
Antiguo 22/05/2011, 09:00
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: no consigo funcionar codigo php

asinox gracias por el intento pero esto lo unico que hace es incrementando en 2 la visitas pero no me cambia nada
  #5 (permalink)  
Antiguo 22/05/2011, 09:01
Avatar de asinox  
Fecha de Ingreso: enero-2002
Ubicación: Santo Domingo
Mensajes: 2.712
Antigüedad: 22 años, 3 meses
Puntos: 6
Respuesta: no consigo funcionar codigo php

Pues mria azaz a mi me funciona a la perfeccion
__________________
www.dataautos.com
  #6 (permalink)  
Antiguo 22/05/2011, 09:01
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: no consigo funcionar codigo php

AplicaWeb gracias por contestar me mirarel el enlace y hos comenta saludos
  #7 (permalink)  
Antiguo 22/05/2011, 09:02
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: no consigo funcionar codigo php

asinox si no lo dudo pero no es lo que necesito yo necesito contar visitas de publicaciones que publican los usuarios
  #8 (permalink)  
Antiguo 22/05/2011, 09:16
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: no consigo funcionar codigo php

AplicaWeb gracias pero eso no es lo que busco no me habeis entendido esos codigos son como el que postee pero cuenta un enlace en concreto osea el enlace que va a la pagina que hace el recuento.
por ejemplo.
Código PHP:
Ver original
  1. $archivo = "contador.txt";
esto me contara todas las visitas pero yo quiero contar este enlace:
Código PHP:
Ver original
  1. <a href='resultado.php?id=".$row['id_publicacion']."'>".$row['titulo']."</a>

si hos fijais en la variable $row['titulo'] sale el titulo con el anuncio que es aqui donde esta el enlace y en $row['id_publicacion'] esta toda la publicacion de ese enlace(este $row['titulo'].)osea que te redireciona ahi o mejor dicho a 'resultado.php?id=".$row['id_publicacion'].

y claro yo lo que quiero es contar las visitas que hacen en 'resultado.php?id=".$row['id_publicacion']. que cada vez que publiquen los usuarios sera un nuevo tema.

no se si me explique pero estoy saturado en este tema
  #9 (permalink)  
Antiguo 22/05/2011, 09:51
Avatar de asinox  
Fecha de Ingreso: enero-2002
Ubicación: Santo Domingo
Mensajes: 2.712
Antigüedad: 22 años, 3 meses
Puntos: 6
Respuesta: no consigo funcionar codigo php

Si, perfectamente, pero entonces, no uses un archivo fisico para almancenar las visitas, se te va a complicar...

Lo que te recomiendo es que hagas una tabla (mysql) para las lecturas, la cual tenga los campos (id, id_publicacion, contador) y ya lo tienes resuelto, en contador solo incrementas a +1 donde el id que viene via GET sea igual al id_publicacion de la tabla... es todo.... ya los datos de esa publicacion como el titulo y demas cosas estan almanecenados en la tabla de publicaciones y para mostrarlos solo tienes que llamarlos desde esa tabla

Saludos
__________________
www.dataautos.com
  #10 (permalink)  
Antiguo 22/05/2011, 10:04
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: no consigo funcionar codigo php

asinox gracias por contestar aunque realmente no entiendo bien el mecanismo que me dices yo ya tengo una tabla con el id_publicacion donde esta el el titulo para redirecionar a los demas campos.

pero lo que te refieres es que haga otra tabla con los contadores perdoname pero no te entendi bien
  #11 (permalink)  
Antiguo 22/05/2011, 10:10
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: no consigo funcionar codigo php

se parece a este tema

ahi pusé una explicacion que quizas te sirva.

http://www.forosdelweb.com/f18/duda-...go-php-914686/
  #12 (permalink)  
Antiguo 22/05/2011, 10:16
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: no consigo funcionar codigo php

porque memoadian si en la tabla donde tengo los campos id_publicacion y los demas campos donde redirecionan ahi es donde tendria que hacer otro campo para el contador?
  #13 (permalink)  
Antiguo 22/05/2011, 10:19
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: no consigo funcionar codigo php

pues es lo que planteo, por que cada publicación tendria su propio numero de visitas o sea una relación 1:1 y asi podrías saber exactamente cuantos clicks tiene cada artículo o noticia.
  #14 (permalink)  
Antiguo 22/05/2011, 10:21
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: no consigo funcionar codigo php

me lo miro y si tengo dudas vuelvo saludos
  #15 (permalink)  
Antiguo 22/05/2011, 10:46
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: no consigo funcionar codigo php

Bueno esto hice, porque no tenía nada que hacer
Código PHP:
Ver original
  1. <?php
  2. /**
  3.  * Nombre del archivo
  4.  */
  5. $file = 'a.txt';
  6.  
  7. /**
  8.  * Verifica si existe un id, si no crea uno genérico, por defecto 0
  9.  */
  10. $currentId = array_key_exists('id', $_GET) ? $_GET['id'] : 0;
  11.  
  12. /**
  13.  * Verifica si existe el archivo, si no, lo crea
  14.  */
  15. if(!file_exists($file)){
  16.     file_put_contents($file, "$currentId,0");
  17. }
  18.  
  19. /**
  20.  * Crea array conforme a las líneas que exista
  21.  */
  22. $rows = file($file);
  23.  
  24. /**
  25.  * Valor booleano para ver si existe el id en el array
  26.  * por defecto true, si existe, en el foreach se
  27.  * modificará.
  28.  */
  29. $notInArray = true;
  30.  
  31.  
  32. /**
  33.  * Modificamos la variable $rows a través de referencía &$v
  34.  */
  35. foreach($rows as &$v){
  36.     /**
  37.      * Tomamos los valores que necesitamos
  38.      */
  39.     list($txtId, $counter) = explode(',', $v);
  40.     if($txtId == $currentId){
  41.         /**
  42.          * Necesitamos indicar que el valor es un entero para que
  43.          * funcione el autoincrementable
  44.          */
  45.         $counter = (int)$counter;
  46.         $v = $txtId . ',' . ++$counter;
  47.         $notInArray = false;
  48.     }
  49. }
  50.  
  51. /**
  52.  * Importante el quitar la referencia, por si se usa
  53.  * nuevamente la variable $v, así no hay modificación en el array
  54.  */
  55. unset($v);
  56.  
  57. /**
  58.  * Esto es cuando no existe el id en el archivo
  59.  */
  60. if($notInArray){
  61.     $rows[] = "$currentId,1";
  62. }
  63.  
  64. /**
  65.  * Implode crea "returns" de más, necesitamos uno entre cada valor
  66.  */
  67. $data = str_replace(PHP_EOL . PHP_EOL, PHP_EOL, implode(PHP_EOL, $rows));
  68.  
  69. /**
  70.  * Añadimos el valor en el archivo de nuevo
  71.  */
  72. file_put_contents($file, $data);
  73. print_r(file($file));
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #16 (permalink)  
Antiguo 22/05/2011, 10:58
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: no consigo funcionar codigo php

memoadian pero te refieres que cree otra tabla con un campo contador que se relacione con la otra tabla que tiene el id_publicacion?si es esto no se hacerlo ya que no tengo ni idea de de fk ni de relacionar tablas osea que si hay que utilizar la relacion de tablas voy mal
  #17 (permalink)  
Antiguo 22/05/2011, 11:07
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: no consigo funcionar codigo php

Y lo que te di, no te funciona
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #18 (permalink)  
Antiguo 22/05/2011, 11:08
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: no consigo funcionar codigo php

abimaelrc gracias por tu colaboracion pero lo probe y no se si hice algo mal pero me hace lo mismo que mi codigo basico eso no quiero o hice algo mal ?
no se
  #19 (permalink)  
Antiguo 22/05/2011, 11:11
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: no consigo funcionar codigo php

nop, no hay que usar relacion de tablas

solo añadir un campo como cualquier otro. como si fuera nombre o link, o texto, o id...

ese campo deberias incrementarlo con un update, es super simple.
  #20 (permalink)  
Antiguo 22/05/2011, 11:15
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: no consigo funcionar codigo php

Para que veas el resultado debes indicar por ejemplo
http://localhost/index.php?id=1
http://localhost/index.php?id=2
http://localhost/index.php?id=3
http://localhost/index.php?id=1
http://localhost/index.php?id=2
http://localhost/index.php?id=3
y así sucesivamente para que veas como se modifica cada valor correspondiente.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #21 (permalink)  
Antiguo 22/05/2011, 11:18
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: no consigo funcionar codigo php

memoadian la dinamica del contador la entiendo pero no se aplicarla ya que no entiendo como el campo contador me va a dar las visitas de todos los campos titulos
perdona mi ignorancia pero no me podrias poner un ejemplo
  #22 (permalink)  
Antiguo 22/05/2011, 11:23
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: no consigo funcionar codigo php

abimaelrc tu intencion es buena pero no te entendi lo siento sera que incluyo el codigo en mal sitio pero claro yo lo incluir donde quiero que salgan las visitas osea inclui el codigo php y el texto que tu pusistes a.txt pero no se a que te refieres con eso que posteastes arriba, aunque creo que tu estructura de contador es buena pero me gustaria realizar un contador con mysql en vez de un archivo de texto no se lo veo mas correcto no crees?auque yo arriba postee un archivo de texto no se estoy hecho un lio ya no se ni si mejor archivo o db

por cierto mi intencion es que los visitantes vean las visitas que hay en dicha publicacion
  #23 (permalink)  
Antiguo 22/05/2011, 11:37
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: no consigo funcionar codigo php

Estas copiando y pegando sin analizar el código. Lo que hice fue un ejemplo, lo mejor es usar base de datos, pero te estoy dando una idea de lo que puedes hacer con texto. La idea es mostrar lo que hay en esa publicación. Si tu en la barra de direcciones de tu navegador favorito escribes por ejemplo localhost/index.php?id=2 esto representa tu dominio y una variable llamada id que contiene el número del artículo.

Cuando lo hagas vas a ver que se modifica solamente ese artículo en específico. Ahora si lo que quieres es visualizar el número que se autoincrementó podrías hacer algo así
Código PHP:
Ver original
  1. <?php
  2. function counter($currentId){
  3.     $file = 'a.txt';
  4.     $currentId = (int)$currentId;
  5.     $getCounter = 1;
  6.  
  7.     if(!file_exists($file)){
  8.         file_put_contents($file, "$currentId,0");
  9.     }
  10.     $rows = file($file);
  11.     $notInArray = true;
  12.  
  13.     foreach($rows as &$v){
  14.         list($txtId, $counter) = explode(',', $v);
  15.         if($txtId == $currentId){
  16.             $getCounter = (int)$counter;
  17.             $v = $txtId . ',' . ++$getCounter;
  18.             $notInArray = false;
  19.         }
  20.     }
  21.     unset($v);
  22.     if($notInArray){
  23.         $rows[] = "$currentId,1";
  24.     }
  25.     $data = str_replace(PHP_EOL . PHP_EOL, PHP_EOL, implode(PHP_EOL, $rows));
  26.     file_put_contents($file, $data);
  27.  
  28.     return $getCounter;
  29. }
  30.  
  31. $id = array_key_exists('id', $_GET) ? $_GET['id'] : 0;
  32. echo counter($id);

Si escribes en la dirección http://localhost/index.php?id=1 y refrescas la página vas a ver como se autoincrementa, luego si escribes http://localhost/index.php?id=2 veras que te sale otro valor, pero si vuelves a ingresar http://localhost/index.php?id=1 vas a ver que incrementa donde se quedó.

Bueno solo lo pongo como ejemplo.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #24 (permalink)  
Antiguo 22/05/2011, 11:43
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: no consigo funcionar codigo php

abimaelrc me parece un buen ejemplo me gustaria que me funcionara aunque intentare utilizar la db.
pero entonces tengo que incluir esos dos codigos en donde van las publicaciones?
  #25 (permalink)  
Antiguo 22/05/2011, 11:48
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: no consigo funcionar codigo php

Creas un archivo y con requiere_once o include_once lo llamas. Solo es cuestión de usar el nombre de la función en donde desees.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #26 (permalink)  
Antiguo 22/05/2011, 11:53
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: no consigo funcionar codigo php

abimaelrc lo analizare para comprenderlo pero ahora no me podrias echar una mano para hacerlo con la db
  #27 (permalink)  
Antiguo 22/05/2011, 12:02
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: no consigo funcionar codigo php

COMO QUE COMO????

pues ya te lo explique, en la forma que lo explique en el otro post, ese campo va a tener un valor cero por defecto cuando alguien clicke la url compruebas si existe el parametro click y si existe crea un update a la base de datos ¬¬

Código PHP:
Ver original
  1. if(isset($_GET['click'])){
  2.     $sql = "SELECT contador FROM tabla WHERE noticia_id = ".$id.";";
  3.     $res = mysql_query($sql, $conexion);
  4.     $reg = mysql_fetch_array($res);
  5.    
  6.     $nuevo_click = $reg['contador']+1;
  7.  
  8.     $query="UPDATE base de datos.tabla SET contador = ".$nuevo_click." WHERE noticia_id =".$id.";";
  9.  
  10.     mysql_query($query) or die ("Error");
  11. }
  #28 (permalink)  
Antiguo 22/05/2011, 12:21
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: no consigo funcionar codigo php

probe el codigo pero no funciono el campo contador siemple marca cero no se que hice mal?

Última edición por azaz; 22/05/2011 a las 13:22
  #29 (permalink)  
Antiguo 22/05/2011, 16:31
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: no consigo funcionar codigo php

lo probé y funciona perfecto, se me ocurren dos cosas

1 es que no adecues bien a tu sistema
2 que tu url debe ser algo asi:

http://localhost/noticias.php?id=3&click=true

el click = true es necesario para correr el script, de este modo te aseguras que solo se sume 1 click cuando le den a ese enlace largo.

Edito: XD esto era para el tema anterior, me confundí de threads

solo quitale esto:

Código PHP:
Ver original
  1. if(isset($_GET['click'])){
  2.        
  3.     }

o sea deja esto:
Código PHP:
Ver original
  1. $con = mysql_connect("localhost","root","pass");
  2.     $bd = mysql_select_db("BD") or die ("Verifique la Base de Datos");
  3.     $sql = "SELECT contador FROM noticias WHERE id = 1";
  4.     $res = mysql_query($sql, $con);
  5.     $reg = mysql_fetch_array($res);
  6.    
  7.     $nuevo_click = $reg['contador']+1;
  8.  
  9.     $query="UPDATE noticias SET contador = ".$nuevo_click." WHERE id = 1";
  10.  
  11.     mysql_query($query) or die ("Error");;

y debe aumentar :d
  #30 (permalink)  
Antiguo 23/05/2011, 04:05
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: no consigo funcionar codigo php

no me aumenta te pongo codigo para que me puedas corregir porfavor

codigo contador.php
Código PHP:
Ver original
  1. /*
  2.  
  3.  y en mi db tengo estos campos:
  4.  id_publicacion: clave primaria para identificar el titulo.
  5.  id_contador:para las visitas
  6.  titulo:para el titulo de la publicacion
  7.  publicacion:para las publicaciones
  8.  y la linea del enlace es esta:
  9.  <a href='resultado.php?id=".$row['id_publicacion']."'>".$row['titulo']."</a>
  10.  que este enlace me lleva al campo publicaciones
  11. */
  12. //lo monte como me dijistes
  13.  
  14. $conexion=mysql_connect("localhost","root","");
  15. $bd = mysql_select_db("db") or die ("Verifique la Base de Datos");
  16.   if(isset($_GET['click'])){
  17.     $sql = "SELECT contador FROM table WHERE id_publicacion id = ".$id.";";
  18.     $res = mysql_query($sql, $conexion);
  19.     $reg = mysql_fetch_array($res);
  20.     $nuevo_click = $reg['contador']+1;
  21.     $query="UPDATE db.tabla SET contador = ".$nuevo_click." WHERE id_publicacion =".$id.";";
  22.     mysql_query($query) or die ("Error");

codigo publicaciones.php
Código PHP:
Ver original
  1. /*
  2.   y luego yo coloque el codigo con include en el archivo donde muestro todos los titulos
  3.   con el enlace
  4. */
  5. //aqui inclui el archivo para el contador
  6. include("contador.php");
  7. while($row = mysql_fetch_array($resultados)){
  8.     echo "<p class='titulo'><a href='resultado.php?id=".$row['id_publicacion']."'>".$row['titulo']."</a></p>"
  9. echo $nuevo_click;
  10. }

la verdad que no me funciona y le estoy dando vueltas y nada
y claro lo puse como me dijistes al principio que me cuente las veces que clickeo el enlace

Última edición por azaz; 23/05/2011 a las 05:15

Etiquetas: Ninguno
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 09:41.