Foros del Web » Programando para Internet » PHP »

enlaces

Estas en el tema de enlaces en el foro de PHP en Foros del Web. hola, quería hacer... un sistema así del tipo de enlaces, que cuente las visitas al enlace, y luego lo redireccione a la web q debe, ...
  #1 (permalink)  
Antiguo 08/10/2003, 15:07
BLACK RIVER
Invitado
 
Mensajes: n/a
Puntos:
enlaces

hola, quería hacer... un sistema así del tipo de enlaces, que cuente las visitas al enlace, y luego lo redireccione a la web q debe, que el enlace principal sea algo así:

http://www.miweb.net/link.php?id=nombreweb y que luego haga una redirección llevandola a www.nombreweb.net o .com o lo q sea. y luego en una pagina aparte o en link.php mismo. bueno es igual, por ejemplo: admin.link.php y en esa salga algo así:

nombreweb: 10 visitas
nombreweb2: 22 visitas...

no sé si se me entiende :s

venga, plis ayudenme


  #2 (permalink)  
Antiguo 08/10/2003, 20:33
 
Fecha de Ingreso: septiembre-2003
Mensajes: 248
Antigüedad: 14 años, 3 meses
Puntos: 2
No se si he entendido bien, pero me parece que lo que se debe hacer es tener una tabla con el listado de todos los sites que debas referenciar,
nombre cantidad
www.nombre1.com 0
www.nombre2.com 0
así en tu página link.php le incrementes en uno al campo cantidad del site correspondiente.
Suerte!
__________________
Jose A
  #3 (permalink)  
Antiguo 08/10/2003, 21:57
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
El script "link.php" deberá hacer el conteo de ese "click" .. que será igual a las veces que se ejecuta dicho script. Para identificar que página ha de redireccionar y a su vez usarlo como identificador único de esa web .. usas esa variable que le pasas como parámetro (por GET) al script en cuestión ..

Usando Msyql el script resulta fácil de implementar. Personalmente me gusta usar "ID" numéricos .. podrías adaptarlo a tus necesidades.

Las llamadas a tu link externo serían:

link.php?id_web=nº

Código PHP:
<?
$id_web
=$_GET['id_web'];

// Actualizas el contador ..

// conectas a tu BD .. seleccionas la BD
$sql_update="UPDATE webs SET link_contador=link_contador+1 WHERE id_web='$id_web'";
mysql_query($sql_update) or die(mysql_error());

// Obtienes el link de ese ID ...
$sql_web="SELECT link FROM webs WHERE id_web='$id_web'";
mysql_query($sql_web) or die(mysql_error());
// uso mysql_result .. se supone que al ser único ese ID sólo voy a  obtener un único registro.
$web=mysql_result($sql_web,0,"link");

// Y redireccionas automáticamente via PHP y cabeceras HTTP.
header ("location: ".$web);
exit;
?>
Tu tabla SQL debe contener al menos tres campos ..

webs
id_web (unico y autoincremental)
link (varchar 255 .. sobraría)
link_contador (tipo numérico: INT .. smallint .. etc ..)

Y tu "admin.php" .. tan sólo sería hacer una consulta a tu BD .. a esa tabla "webs" tipo:

SELECT * FROM webs ...

Usando Mysql (o cualquier otro motor de BD) resulta sencillo por ejemplo hacer totales .. o cualquier otro tipo de estadísticas.

Podrías guardarte por ejemplo entre otros datos .. la fecha del último acceso a esa web (creando un campo extra tipo DATETIME y actualizandolo en el UPDATE con NOW() de Mysql que dá la fecha/hora actual del servidor ..) .. En fin .. las posibilidades son infinitas.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 08/10/2003 a las 22:09
  #4 (permalink)  
Antiguo 09/10/2003, 07:48
BLACK RIVER
Invitado
 
Mensajes: n/a
Puntos:
bueno
ya he subido todo y he hecho un registro en la base de datos, pero me da errores, mira, el código:
Código PHP:
<? include('conex.php');
$id_web=$_GET['id_web'];

// Actualizas el contador ..

// conectas a tu BD .. seleccionas la BD
$sql_update="UPDATE link SET link_contador=link_contador+1 WHERE id_web='$id_web'";
mysql_query($sql_update) or die(mysql_error());

// Obtienes el link de ese ID ...
$sql_web="SELECT link FROM link WHERE id_web='$id_web'";
mysql_query($sql_web) or die(mysql_error());
// uso mysql_result .. se supone que al ser único ese ID sólo voy a  obtener un único registro.
$web=mysql_result($sql_web,0,"link");

// Y redireccionas automáticamente via PHP y cabeceras HTTP.
header ("location: ".$web);
exit;
?>
y al entrar en la pagina link.php?id_web=1 me sale esto:

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /home/cm4br/public_html/link.php on line 14

Warning: Cannot modify header information - headers already sent by (output started at /home/cm4br/public_html/link.php:14) in /home/cm4br/public_html/link.php on line 17

ami el header nunca me ha funcionado

Última edición por BLACK RIVER; 09/10/2003 a las 07:50
  #5 (permalink)  
Antiguo 10/10/2003, 08:27
BLACK RIVER
Invitado
 
Mensajes: n/a
Puntos:
por favor, no dejeis de lado este post, q no consigo q me salga, llevo 2 horas cambiando todo el código y me sale siempre el mismo error, por favor ayudarme :(
  #6 (permalink)  
Antiguo 10/10/2003, 08:36
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

El primer parametro de mysql_result() debe ser un id de resultado, es decir, lo que devuelve mysql_query(). Y tu le estas pasando la cadena con la consulta SQL.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #7 (permalink)  
Antiguo 10/10/2003, 09:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Ops!. pues el fallo fué mio xD

Código PHP:
$consulta=mysql_query($sql_web) or die(mysql_error());
// uso mysql_result .. se supone que al ser único ese ID sólo voy a  obtener un único registro.
$web=mysql_result($consulta,0,"link"); 
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 10/10/2003, 10:39
BLACK RIVER
Invitado
 
Mensajes: n/a
Puntos:
hola, total q el mensaje me llego tarde, conseguí arreglarlo al final con mis propios medios, pero no sé en q se pueden diferenciar tu código y el mio, quiero decir q si los dos funcionan de la misma manera. míralo:

Código PHP:
<? include('conex.php');
$id_web=$_GET['id_web'];

// Actualizas el contador ..

// conectas a tu BD .. seleccionas la BD
$sql_update="UPDATE link SET link_contador=link_contador+1 WHERE id_web='$id_web'";
mysql_query($sql_update) or die(mysql_error());

// Obtienes el link de ese ID ...
$sql "SELECT * FROM link WHERE id_web='$id_web'";
$consulta mysql_db_query($dbname,$sql) or die (mysql_error()); 
while(
$row mysql_fetch_array($consulta)) {
$web $row['link'];
}
header('location: '.$web); 
  
?>
  #9 (permalink)  
Antiguo 10/10/2003, 11:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues la diferencia es simplemente que tu via:

while($row = mysql_fetch_array($consulta)) {
$web = $row['link'];
}


estás obteniendo en un array todas los posibles registros que coincidan con tu WHERE .. del SQL empleado ..

Como ya expliqué en dicho código (en los comentarios) ..Sabemos que bajo esa condicion (consulta con WHERE y al ser único ese ID) .... sólo obtendrémos un resultado .. Por eso uso mysql_result() que es para eso mismo, para acceder directamente (y sin bucles . .aunque sólo daría una "pasada" al ser 1 resultado sólo el encontrado) ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 03:40.