Foros del Web » Programando para Internet » PHP »

PHP OO Pasar variables por la Url Con espacios, generados por una consulta mysql

Estas en el tema de Pasar variables por la Url Con espacios, generados por una consulta mysql en el foro de PHP en Foros del Web. Hola amigos este es mi primer post, mi problema paso cuando estoy haciendo consultas a una base de datos en donde genera direcciones al mismo ...
  #1 (permalink)  
Antiguo 16/07/2013, 21:54
 
Fecha de Ingreso: julio-2013
Mensajes: 9
Antigüedad: 10 años, 9 meses
Puntos: 0
Pregunta Pasar variables por la Url Con espacios, generados por una consulta mysql

Hola amigos este es mi primer post, mi problema paso cuando estoy haciendo consultas a una base de datos en donde genera direcciones al mismo index pero con diferentes variables este es el caso.

<?php
$link=mysql_connect('miserver','user','contra')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db("bd",$link);
$query=mysql_query("select * from artistas",$link);
while ($row=mysql_fetch_array($query)){
$variable=$row['artista'];
echo '<li><a href=?andritowmega='.$variable.'>'.$row['artista'].'</a></li>';
}
?>

Genero listas de cantantes son algo de 3 mil, hize ?andritowmega=$row['artista'] pero como tienen espacios digamos el artista Bob Marley simplemente me muestra ?andritowmega=Bob por tanto mi reproductor musical no puede buscar ese artista, Por que solo me muestra la primera parte despues del espacio ya no, Como puedo solucionar eso amigos espero me puedan ayudar
  #2 (permalink)  
Antiguo 16/07/2013, 22:15
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Pasar variables por la Url Con espacios, generados por una consulta mysql

Prueba reemplazar los espacios con '+' (signo mas) para enviar ... sino puedes usar url_encode() y te devuelves con url_decode()
__________________
Salu2!
  #3 (permalink)  
Antiguo 16/07/2013, 22:20
 
Fecha de Ingreso: julio-2013
Mensajes: 9
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Pasar variables por la Url Con espacios, generados por una consulta mysql

Cita:
Iniciado por Italico76 Ver Mensaje
Prueba reemplazar los espacios con '+' (signo mas) para enviar ... sino puedes usar url_encode() y te devuelves con url_decode()
nunca eh usado url_decode puedes ayudarme con el codigo porfavor?
  #4 (permalink)  
Antiguo 16/07/2013, 22:48
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Pasar variables por la Url Con espacios, generados por una consulta mysql

Lo primero... no entiendo porque usas $variable y tambien $row['artista'] si son lo mismo .. en el mismo enlace... es algo confuso:

Lo segundo... la variable que pasas ($_GET) deberia tener un nombre mas descriptivo que 'andritowmega'

Código PHP:
Ver original
  1. $artista_encoded = url_encode ($artista);
  2. echo "<li><a href=\"pagina.php?andritowmega=$artista_encoded\">$artista</a></li>";

Al recibir en pagina.php .. haces lo opuesto para recuperar

Código PHP:
Ver original
  1. <?php
  2. $andritowmega = (isset($_GET['andritowmega']) ? urldecode($_GET['andritowmega']) : null);
__________________
Salu2!
  #5 (permalink)  
Antiguo 17/07/2013, 00:19
 
Fecha de Ingreso: julio-2013
Ubicación: Temuco
Mensajes: 13
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Pasar variables por la Url Con espacios, generados por una consulta mysql

Personalmente creo que es mejor hacer los traspasos por una ID directamente, ya que quieres encontrar algo específico. De esta forma te evitas el uso de nombres.
  #6 (permalink)  
Antiguo 19/07/2013, 13:17
 
Fecha de Ingreso: julio-2013
Mensajes: 9
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Pasar variables por la Url Con espacios, generados por una consulta mysql

Cita:
Iniciado por Italico76 Ver Mensaje
Lo primero... no entiendo porque usas $variable y tambien $row['artista'] si son lo mismo .. en el mismo enlace... es algo confuso:

Lo segundo... la variable que pasas ($_GET) deberia tener un nombre mas descriptivo que 'andritowmega'

Código PHP:
Ver original
  1. $artista_encoded = url_encode ($artista);
  2. echo "<li><a href=\"pagina.php?andritowmega=$artista_encoded\">$artista</a></li>";

Al recibir en pagina.php .. haces lo opuesto para recuperar

Código PHP:
Ver original
  1. <?php
  2. $andritowmega = (isset($_GET['andritowmega']) ? urldecode($_GET['andritowmega']) : null);
Como dice delfosnet seria por id pero mi reproductor esta en flash y recibe de esta forma <embed src="megarockeros.swf?rob=<?php echo $_GET['andritowmega'] ?>" type=al recibir esa variable rob busca la lista digamos Bob Marley.php ya que las listas han sido generadas tambien con un php, por que son algode 4 mil, esta lista recibe con un Server_Uri con un php borro la carpeta y el espacio que es %20 tambien borro la extension .php y solo me queda el nombre Bob Marley , y eso lo meto a una variable que luego se conecta ala base de datos y exporto la lista de canciones de bob marley, lo haria en la forma de id pero son distintas tablas, uno de generos otro de artistas y otro de las canciones. y amigo ya probe en la forma que lo pusiste el url encode. me sale esto

Fatal error: Call to undefined function url_encode() in /home/u154627416/public_html/index.php on line 261

tambien lo puse en esta forma

<?php

mysql_select_db("mi base de datos",$link);
$query=mysql_query("select * from artistas",$link);
while ($row=mysql_fetch_array($query)){
$artista_encoded = url_encode ($row['artista']);
echo '<li><a href="?andritowmega='.$artista_encoded.'">'.$row['artista'].'</a></li>';
}
?>

ysigue votando el error, como ves no tengo necesitas de mandarlo a otro archivo .php todo lo trabajo en el index por que las
  #7 (permalink)  
Antiguo 19/07/2013, 16:57
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Pasar variables por la Url Con espacios, generados por una consulta mysql

Pues el FATAL ERROR... es porque puse un guion bajo de mas: la funcion se llama urlencode()

\http://php.net/manual/en/function.urlencode.php
__________________
Salu2!

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




La zona horaria es GMT -6. Ahora son las 08:49.