Foros del Web » Programando para Internet » PHP »

ayuda con parse_str()

Estas en el tema de ayuda con parse_str() en el foro de PHP en Foros del Web. hola amig@s, he conseguido capturar los referidos a mi web y ahora lo que quiero es que capturas las variables de google para conecer las ...
  #1 (permalink)  
Antiguo 17/05/2004, 07:16
Avatar de X3mdesign  
Fecha de Ingreso: octubre-2003
Ubicación: Madrid
Mensajes: 649
Antigüedad: 20 años, 6 meses
Puntos: 2
ayuda con parse_str()

hola amig@s,

he conseguido capturar los referidos a mi web y ahora lo que quiero es que capturas las variables de google para conecer las búsquedas que hacen..

he usado parse_str() pero no siempre lo hace bien, me repite de vez en cuando los resultados... este es el código

Código PHP:
parse_str ($datos[1]);
echo 
"<tr><td nowrap>$datos[0]</td><td nowrap><a href=\"$datos[1]\" target=\"_blank\">$q</a></td></tr>"
y aquí están los resultados http://www.nippon-tour.com/web/visit...ats=buscadores

y aunque las paabras clave me las repite, el enlace dado por $datos[1] aparece correctamente

gracias!!!
__________________
Nippon-Tour, tu portal sobre Japón
¿Te gusta el manga, haces tus propios dibujos? Visita FanArt de Nippon-Tour

Última edición por X3mdesign; 10/02/2005 a las 10:22
  #2 (permalink)  
Antiguo 17/05/2004, 07:34
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 5 meses
Puntos: 1
Podrías ??

Podrías poner parte de tu código haber que es lo que estás haciendo porque no veo el error.

Salu2
__________________
Ing. Reynier Pérez Mira
  #3 (permalink)  
Antiguo 17/05/2004, 07:41
Avatar de X3mdesign  
Fecha de Ingreso: octubre-2003
Ubicación: Madrid
Mensajes: 649
Antigüedad: 20 años, 6 meses
Puntos: 2
si, claro cómo nop :D

Código PHP:
<?php
$seleccion 
mysql_query ("SELECT `veces`,`URL` FROM `referers` WHERE `URL` LIKE '%google%' ORDER BY `veces` DESC LIMIT 0,25");
?>        
<p align="center">No encuentran así en los buscadores google :-D</p>
<div align="center">
<table width="200"  border="0">
<tr>
<td align="center" nowrap bgcolor="#0099CC"><span class="style3">#</span></td>
<td align="center" nowrap bgcolor="#0099CC"><span class="style3">Referidor</span></td>
</tr>
                
<?php 
while ($datos mysql_fetch_row ($seleccion)) {
parse_str ($datos[1]);
echo 
"<tr><td nowrap>$datos[0]</td><td nowrap><a href=\"$datos[1]\" target=\"_blank\">$q</a></td></tr>";
}
?>  
</table></div>
graicas!!!
__________________
Nippon-Tour, tu portal sobre Japón
¿Te gusta el manga, haces tus propios dibujos? Visita FanArt de Nippon-Tour

Última edición por X3mdesign; 17/05/2004 a las 07:42
  #4 (permalink)  
Antiguo 17/05/2004, 07:52
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 5 meses
Puntos: 1
Perdón

Perdón pero sigo sin entender quienes son $datos[0] y $datos[1]. Son variables que vienen por URL o por que lado?

Salu2
__________________
Ing. Reynier Pérez Mira
  #5 (permalink)  
Antiguo 17/05/2004, 07:58
Avatar de X3mdesign  
Fecha de Ingreso: octubre-2003
Ubicación: Madrid
Mensajes: 649
Antigüedad: 20 años, 6 meses
Puntos: 2
a ver, tengo un sistema de estadísticas que almacena las URL de mis referidores en la tabla `referers`y luego hago la query para meter en el array $datos todos los registros que tengan la palabra 'google' entonces $datos[0] es la cantidad de veces que han encontrado mi web con las palabras clave que aparecen en la URL de $datos[1]...

espero haberme explicado mejor esta vez ;)
__________________
Nippon-Tour, tu portal sobre Japón
¿Te gusta el manga, haces tus propios dibujos? Visita FanArt de Nippon-Tour
  #6 (permalink)  
Antiguo 17/05/2004, 08:05
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 5 meses
Puntos: 1
Y ...

Ya entendí esa parte pero ¿a que te refieres con capturar las variables de google?

Salu2
__________________
Ing. Reynier Pérez Mira
  #7 (permalink)  
Antiguo 17/05/2004, 08:10
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

El parametro de parse_str() no debe ser una URL, sino solo el query_string. Si le pasas la URL, no reconoce el primer parametro. Usa parse_url() para obtener el query_string de una URL.

Saludos.

PD: En lugar de crear las variables, usa el segundo parametro para meterlas en un array y vacias el array en cada iteracion. Ahorras memoria.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #8 (permalink)  
Antiguo 17/05/2004, 08:26
Avatar de X3mdesign  
Fecha de Ingreso: octubre-2003
Ubicación: Madrid
Mensajes: 649
Antigüedad: 20 años, 6 meses
Puntos: 2
Reynier, m erefiero a coger de $datos[1] las palabras clave que usaron para encontrar el enlace a mi web ;)

josemi, la verdad es que intenté usar parse_url() pero la verdad es que no me entero en la ayuda de cómo se usa y por eso seguí buscando otro método y encontra parse_str(), te importa explicarme cómo lo debería hacer??? pero para torpes, plis :)
__________________
Nippon-Tour, tu portal sobre Japón
¿Te gusta el manga, haces tus propios dibujos? Visita FanArt de Nippon-Tour
  #9 (permalink)  
Antiguo 17/05/2004, 08:38
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Bueno, en tu caso seria:
Código PHP:
$url=parse_url($datos[1]);
parse_str($url['query']); 
Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #10 (permalink)  
Antiguo 17/05/2004, 08:53
Avatar de X3mdesign  
Fecha de Ingreso: octubre-2003
Ubicación: Madrid
Mensajes: 649
Antigüedad: 20 años, 6 meses
Puntos: 2
gracias josemi.. pero ... esto e slo que he puesto


Código PHP:
$url=parse_url($datos[1]);
$q=parse_str($url['query']);
echo 
"<tr><td nowrap>$datos[0]</td><td nowrap><a href=\"$datos[1]\" target=\"_blank\">$q</a></td></tr>"
y ahora no sale texto se queda en blanco
__________________
Nippon-Tour, tu portal sobre Japón
¿Te gusta el manga, haces tus propios dibujos? Visita FanArt de Nippon-Tour
  #11 (permalink)  
Antiguo 17/05/2004, 09:02
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
¿Por que asignas a $q el valor devuelto por parse_str()? Antes no lo hacias, yo no lo he puesto, y el manual pone que devulve void (es decir, nada).

Si es por lo que comente del array, deberia ser algo como:
Código PHP:
$parametros=array();
$url=parse_url($datos[1]);
parse_str($url['query'],$parametros);
$q=$parametros['q'];
unset(
$parametros); 
Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #12 (permalink)  
Antiguo 17/05/2004, 09:06
Avatar de X3mdesign  
Fecha de Ingreso: octubre-2003
Ubicación: Madrid
Mensajes: 649
Antigüedad: 20 años, 6 meses
Puntos: 2
venía a decirte que por probar había puesto esto...


Código PHP:
$url=parse_url($datos[1]);
$q=parse_str($url['query']);
echo 
parse_str($url['query']);
echo 
"<tr><td align=\"center\" nowrap>$datos[0]</td><td nowrap><a href=\"$datos[1]\" target=\"_blank\">$q</a></td></tr>"
y no sé cómo pero funciona!!! de todas formas voy a pensr en el código qu eme has puesto que seguro que es la forma más correcta ;)

un saludo!!!

editado: de esta forma usando el parse_url() también es válido para otros buscadores como aol?? o yahoo?? supongo que sip...
__________________
Nippon-Tour, tu portal sobre Japón
¿Te gusta el manga, haces tus propios dibujos? Visita FanArt de Nippon-Tour

Última edición por X3mdesign; 17/05/2004 a las 09:09
  #13 (permalink)  
Antiguo 17/05/2004, 09:14
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Veamos, con el $q=parse_str() das valor vacio a $q, pero con el segundo parse_str() parseas otra vez la cadena y pisas el valor de $q con el del resultado de parsear la cadena.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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 14:20.