Foros del Web » Programando para Internet » PHP »

Problema simbolo "+"

Estas en el tema de Problema simbolo "+" en el foro de PHP en Foros del Web. Buenas tengo un problemas y es el siguiente En mi pagina http://www.deporte-tv.es/?dia=1&mes=9&ano=2008 Pongo este enlace por poner un ejemplo. Cuando extraigo los datos de la ...

  #1 (permalink)  
Antiguo 31/08/2008, 11:29
 
Fecha de Ingreso: agosto-2006
Mensajes: 173
Antigüedad: 17 años, 8 meses
Puntos: 1
Problema simbolo "+"

Buenas tengo un problemas y es el siguiente

En mi pagina

http://www.deporte-tv.es/?dia=1&mes=9&ano=2008

Pongo este enlace por poner un ejemplo.

Cuando extraigo los datos de la consulta y dentro del contenido de los datos tiene el signo "+" no me extrae la consulta, teneis los ejemplos clicando sobre los canales con signo "+", sin embargo el resto que no tienen ningun signo "+" si que me los permiten.

Esta es la consulta que se hace a la base de datos cuando se clica un canal

Código PHP:
<?php
$colname_Recordset1 
"-1";
if (isset(
$_GET['canal'])) {
  
$colname_Recordset1 = (get_magic_quotes_gpc()) ? $_GET['canal'] : addslashes($_GET['canal']);
}
mysql_select_db($database_conexion1$conexion1);
$query_Recordset1 sprintf("SELECT * FROM canales WHERE canal = '%s' ORDER BY pos DESC"$colname_Recordset1);
$Recordset1 mysql_query($query_Recordset1$conexion1) or die(mysql_error());
$row_Recordset1 mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 mysql_num_rows($Recordset1);
?>
Como puedo hacer para que tambien me muestre y me haga la consulta con el signo "+"

No se donde fallo, saludos y muchas gracias
  #2 (permalink)  
Antiguo 31/08/2008, 11:46
 
Fecha de Ingreso: agosto-2008
Mensajes: 23
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Problema simbolo "+"

Prueba aplicando addcslashes($var, '+'); o simplemente con addslashes($var); (no sé si esta última funcionará, no se me ha dado el caso).

La razón es porque el + como tal, sin escapar, se interpreta como símbolo de unión en MySQL. Mira a ver qué tal con eso y nos cuentas.
  #3 (permalink)  
Antiguo 31/08/2008, 11:56
Avatar de The_omars  
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
Respuesta: Problema simbolo "+"

ya probaste con:




$colname_Recordset1 = "-1";
if (isset($_GET['canal'])) {
$colname_Recordset1 = (get_magic_quotes_gpc()) ? $_GET['canal'] : addslashes($_GET['canal']);
}
mysql_select_db($database_conexion1, $conexion1);
$query_Recordset1 = sprintf("SELECT * FROM canales WHERE canal = '%d' ORDER BY pos DESC", $colname_Recordset1);
$Recordset1 = mysql_query($query_Recordset1, $conexion1) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
  #4 (permalink)  
Antiguo 31/08/2008, 11:56
 
Fecha de Ingreso: agosto-2006
Mensajes: 173
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Problema simbolo "+"

Buenas outime y muchas gracias por responder, he colocado el codigo asi

Código PHP:
<?php
$colname_Recordset1 
"-1";
if (isset(
$_GET['canal'])) {
  
$colname_Recordset1 = (get_magic_quotes_gpc()) ? $_GET['canal'] : addslashes($_GET['canal']);
}
addcslashes($var'+');
mysql_select_db($database_conexion1$conexion1);
$query_Recordset1 sprintf("SELECT * FROM canales WHERE canal = '%s' ORDER BY pos DESC"$colname_Recordset1);
$Recordset1 mysql_query($query_Recordset1$conexion1) or die(mysql_error());
$row_Recordset1 mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 mysql_num_rows($Recordset1);
?>
Lo he puesto asi y nada de nada, no me funciona, ¿he colocado mal el codigo que me has dicho?
  #5 (permalink)  
Antiguo 31/08/2008, 11:58
 
Fecha de Ingreso: agosto-2008
Mensajes: 23
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Problema simbolo "+"

La variable $var la tienes que sustituir por lo que tú quieras (en este caso, creo que es $_GET['canal'] el que tiene el problema, ¿verdad?).

Si ves que no te funciona, puede que lo que propone The_omars te lo solucione
  #6 (permalink)  
Antiguo 31/08/2008, 12:00
 
Fecha de Ingreso: agosto-2006
Mensajes: 173
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Problema simbolo "+"

Cita:
Iniciado por The_omars Ver Mensaje
ya probaste con:




Código PHP:
$colname_Recordset1 "-1";
if (isset(
$_GET['canal'])) {
  
$colname_Recordset1 = (get_magic_quotes_gpc()) ? $_GET['canal'] : addslashes($_GET['canal']);
}
mysql_select_db($database_conexion1$conexion1);
$query_Recordset1 sprintf("SELECT * FROM canales WHERE [COLOR="Red"]canal = '%d' [/COLOR] ORDER BY pos DESC"$colname_Recordset1);
$Recordset1 mysql_query($query_Recordset1$conexion1) or die(mysql_error());
$row_Recordset1 mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 mysql_num_rows($Recordset1); 
Gracias de esta forma lo he probado conforme he leido tu mensaje y no me pilla nada de nada, el canal = '%d' tiene que estar canal = '%s' si no, no me pilla ningun canal en la consulta

Haber si alguien me ilumina para no tratar "+" como nexo de union
  #7 (permalink)  
Antiguo 31/08/2008, 12:04
 
Fecha de Ingreso: agosto-2006
Mensajes: 173
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Problema simbolo "+"

He sustituido esto addslashes($_GET['canal']); por addcslashes($var, '+'); y nada de nada, me da este error

Parse error: syntax error, unexpected ')' in /mnt/web7/20/32/51497332/htdocs/deporte-tv/frecuencias/canalist.php on line 5
  #8 (permalink)  
Antiguo 31/08/2008, 12:05
 
Fecha de Ingreso: agosto-2008
Mensajes: 23
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Problema simbolo "+"

Si addcslashes() tampoco te funciona, se me ocurre una solución cutre mientras alguien te propone algo mejor:
str_replace("+", "\+", $_GET['canal']);
Siento no poder darte otra solución, ya te digo que no se me dio ese caso específico y por tanto desconozco qué es lo que puede funcionar.
  #9 (permalink)  
Antiguo 31/08/2008, 12:09
 
Fecha de Ingreso: agosto-2006
Mensajes: 173
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Problema simbolo "+"

Lo he puesto asi y tambien da problemas

Código PHP:
<?php
$colname_Recordset1 
"-1";
if (isset(
$_GET['canal'])) {
  
$colname_Recordset1 = (get_magic_quotes_gpc()) ? $_GET['canal'] : str_replace("+""\+"$_GET['canal']): addslashes($_GET['canal']);
}
addcslashes($var'+');
mysql_select_db($database_conexion1$conexion1);
$query_Recordset1 sprintf("SELECT * FROM canales WHERE canal = '%s' ORDER BY pos DESC"$colname_Recordset1);
$Recordset1 mysql_query($query_Recordset1$conexion1) or die(mysql_error());
$row_Recordset1 mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 mysql_num_rows($Recordset1);
?>
Al hacer la consulta me contesta con

Parse error: syntax error, unexpected ':' in /mnt/web7/20/32/51497332/htdocs/deporte-tv/frecuencias/canalist.php on line 5

Haber si alguien me saca de dudas, muchas gracias por vuestras respuestas
  #10 (permalink)  
Antiguo 31/08/2008, 12:17
 
Fecha de Ingreso: agosto-2008
Mensajes: 23
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Problema simbolo "+"

Vaya cacao has armado... yo probaría con esto:
<?php
$colname_Recordset1 = "-1";
if (isset($_GET['canal'])) {
$colname_Recordset1 = (get_magic_quotes_gpc()) ? $_GET['canal'] : addslashes($_GET['canal']);
}
str_replace("+", "\+", $_GET['canal']);
mysql_select_db($database_conexion1, $conexion1);
$query_Recordset1 = sprintf("SELECT * FROM canales WHERE canal = '%s' ORDER BY pos DESC", $colname_Recordset1);
$Recordset1 = mysql_query($query_Recordset1, $conexion1) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>
Aunque sigo diciendo que es una cutrez lo que propongo
  #11 (permalink)  
Antiguo 31/08/2008, 12:19
 
Fecha de Ingreso: agosto-2006
Mensajes: 173
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Problema simbolo "+"

Sigue sin salirme como me propones
  #12 (permalink)  
Antiguo 31/08/2008, 12:23
 
Fecha de Ingreso: agosto-2008
Mensajes: 23
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Problema simbolo "+"

Otro intento:
<?php
$colname_Recordset1 = "-1";
if (isset($_GET['canal'])) {
$colname_Recordset1 = (get_magic_quotes_gpc()) ? $_GET['canal'] : addcslashes($_GET['canal'], "+");
}
mysql_select_db($database_conexion1, $conexion1);
$query_Recordset1 = sprintf("SELECT * FROM canales WHERE canal = '%s' ORDER BY pos DESC", $colname_Recordset1);
$Recordset1 = mysql_query($query_Recordset1, $conexion1) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>
Y si aún así no sale, me quedo como espectador para aprender
  #13 (permalink)  
Antiguo 31/08/2008, 12:23
Avatar de The_omars  
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
Respuesta: Problema simbolo "+"

hola que tal de nuevo, me he fijado en la liga que dejaste y creo que el problema podria ser por espacion ya que cuando mandas la variable "canal" y trae el + despues del signo hay un ligero espacio, deberas de fijarte si asi lo tienes en la base de datos con todo y espacio, ejemplo:

canalist.php?canal=Canal+ Eventos

te fijas?

si en la base de datos lo tienes asi: Canal+Eventos, pues nunca te va a salir nada, puedes probar quitandole los espacios con el trim,

string trim ( string $cadena [, string $lista_caracteres] )
  #14 (permalink)  
Antiguo 31/08/2008, 12:26
 
Fecha de Ingreso: agosto-2006
Mensajes: 173
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Problema simbolo "+"

No lo tengo exactamente igual, de hecho utilizo un formulario para subir los canales y en el formulario para insertar partidos me trae los canales que tengo con un select y los sube tal cual se muestran

En la base de datos los tengo asi

http://www.deporte-tv.es/canalist.php
  #15 (permalink)  
Antiguo 31/08/2008, 12:29
 
Fecha de Ingreso: agosto-2006
Mensajes: 173
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Problema simbolo "+"

Gracias outime lo he probado y sigue sin funcionar
  #16 (permalink)  
Antiguo 31/08/2008, 12:31
 
Fecha de Ingreso: agosto-2008
Mensajes: 23
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Problema simbolo "+"

Cita:
Iniciado por txino_2 Ver Mensaje
Gracias outime lo he probado y sigue sin funcionar
Podías incluir al lado del mysql_query() un:

Código:
(...) or die(mysql_error());
Y al menos sabremos si realmente se trata de un error en la consulta o no.
  #17 (permalink)  
Antiguo 31/08/2008, 12:34
 
Fecha de Ingreso: agosto-2006
Mensajes: 173
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Problema simbolo "+"

Ya esta incluido

$Recordset1 = mysql_query($query_Recordset1, $conexion1) or die(mysql_error());

No da error, simplemente que cuando el canal tiene un signo + no sale, el resto de canales sin signo + si que sale
  #18 (permalink)  
Antiguo 31/08/2008, 12:35
 
Fecha de Ingreso: agosto-2008
Mensajes: 23
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Problema simbolo "+"

Disculpa, no me fijé. En ese caso, activo la suscripción al tema y me fijo a ver si proponen solución, sería interesante saberlo para un futuro, seguramente sea bien fácil.
  #19 (permalink)  
Antiguo 31/08/2008, 12:36
 
Fecha de Ingreso: agosto-2006
Mensajes: 173
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Problema simbolo "+"

Yo estoy seguro que es sencillo, el problema es que no tengo ni idea de como poder hacerlo
  #20 (permalink)  
Antiguo 31/08/2008, 12:42
Avatar de The_omars  
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
Respuesta: Problema simbolo "+"

ya vi tu tabla, y dejame decirte que lo mas sano seria usar el id del canal y no el nombre, ya que asi te quitaria de problemas,

has la busqueda por ID del canal o de algun dato numerico UNICO que pueda identificar al canal.


con un buen diseno de base de datos te evitaras dolores de cabeza :)
  #21 (permalink)  
Antiguo 31/08/2008, 12:46
 
Fecha de Ingreso: agosto-2006
Mensajes: 173
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Problema simbolo "+"

Pero no puedo hacer la consulta por id, si hago la consulta por id, el problema lo tendria a la hora de utilizar el formulario que me rescata los canales que tengo, si me los rescata como numero, muy mal asunto tengo, por que entonces no sabria cual es cada uno.
  #22 (permalink)  
Antiguo 31/08/2008, 12:46
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 7 meses
Puntos: 71
Respuesta: Problema simbolo "+"

el problema no lo tienes en la consulta, si en php en sí, sino que lo tienes a la hora de imprimir el enlace, cuando hagas el listado de los enlaces (lo que tienes hecho para abrirse con javascript) usa urlencode($cadena); para escapar el signo '+' de la url, te pondra algo asi: %2B+ o similar, no recuerdo, pruebalo.
  #23 (permalink)  
Antiguo 31/08/2008, 12:48
 
Fecha de Ingreso: agosto-2008
Mensajes: 23
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Problema simbolo "+"

Cita:
Iniciado por txino_2 Ver Mensaje
Pero no puedo hacer la consulta por id, si hago la consulta por id, el problema lo tendria a la hora de utilizar el formulario que me rescata los canales que tengo, si me los rescata como numero, muy mal asunto tengo, por que entonces no sabria cual es cada uno.
Sí, sí se puede hacer, de hecho toda aplicación construida bajo una base "seria" utiliza IDs para estas cosas. Mostrar el nombre o la ID depende de ti, sólo habría que cambiar la consulta.

Aunque no venga al caso, desde luego sería lo más conveniente.
  #24 (permalink)  
Antiguo 31/08/2008, 12:50
 
Fecha de Ingreso: agosto-2006
Mensajes: 173
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Problema simbolo "+"

Bueno voy a mirar el tema, haber si me sale asi, pero con lo torpe que soy tardare, ya te dire algo
  #25 (permalink)  
Antiguo 31/08/2008, 13:04
 
Fecha de Ingreso: agosto-2006
Mensajes: 173
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Problema simbolo "+"

No me sale como me comentas, por que son dos tablas distintas

Tabla 1: Me salen los partidos con sus canales
Tabla 2: Me salen los canales con sus frecuencias

Al tener distinto número de id los eventos que los canales pues no me los encuentra, tengo que hacerla como lo queria hacer pero haber si soluciono el signo +
  #26 (permalink)  
Antiguo 31/08/2008, 13:09
 
Fecha de Ingreso: agosto-2006
Mensajes: 173
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Problema simbolo "+"

Es decir que en la tabla 1 en el partido con id 3547 puede contener el canal Eurosport, pero claro en la tabla 2 que es donde estan las frecuencias del canal Eurosport a lo mejor es el numero 5 entonces al no coincidir no me lo muestra
  #27 (permalink)  
Antiguo 31/08/2008, 13:19
 
Fecha de Ingreso: agosto-2006
Mensajes: 173
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Problema simbolo "+"

Haber si alguien sabe dar con el asunto del problema, de momento lo dejo y me suscribo, yo seguire leyendo y leyendo haber si saco algo en claro
  #28 (permalink)  
Antiguo 31/08/2008, 13:22
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Problema simbolo "+"

Podrias poner un campo en tu tabla 1 llamado: ID_frecuencia
Entonces tabla1.ID_frecuencia=tabla2.ID

Lo unes con un INNER JOIN y te evitas muchos problemas.
  #29 (permalink)  
Antiguo 31/08/2008, 13:26
 
Fecha de Ingreso: agosto-2006
Mensajes: 173
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Problema simbolo "+"

Me podrías explicar como hacerlo

Entiendo que en la tabla 1 de partido pondría un campo llamado ID_frecuencia y ponerle los mismos número que en la tabla 2 de frecuencias donde el id se llamaria tambien ID_frecuencia, pero ¿como los nombro con el mismo número los dos?

Siento ser tan torpe pero es que no llevo mucho tiempo con el php, pero sigo pensando que en la consulta se podria hacer con el signo +, aunque no tengo ni idea de como hacerlo
  #30 (permalink)  
Antiguo 31/08/2008, 13:34
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Problema simbolo "+"

A eso se le llama una relacion 1 a N (1 a muchos)...

En tu tabla 1, agregas un campo ID_frecuencia.
El valor que tendra ese campo sera igual al ID de la tabla 2 (en la que tienes tus frecuencias)...

Ejemplo:
Tabla Partidos
ID Partido ID_frecuencia
1 loksea 2
2 blah 2
3 meh 1

Tabla Frecuencias
ID Frecuencia
1 Eurosport
2 loksea-TV

Entonces tu query seria algo como:
"SELECT * FROM Partidos INNER JOIN Frecuencias WHERE Partidos.ID_frecuencia=Frecuencias.ID AND Frecuencias.ID=2"

Esa consulta te mostraria los registros de la frecuencia con el ID 2. En el caso de mi ejemplo: loksea-TV.
Mostraria: loksea y blah

Tambien tienes que tomar en cuenta que al querer agregar algun PARTIDO tendras que recoger el ID de la frecuencia para luego insertarlo en la tabla Partidos en el campo ID_frecuencia
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:21.