Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] simbolo & de mas en parametros enviados por get

Estas en el tema de simbolo & de mas en parametros enviados por get en el foro de PHP en Foros del Web. Hola a todos, amigos del web. Tengo un problema con un insert. Llevo bastantes paginas hechas y no me había pasado antes este problema. El ...
  #1 (permalink)  
Antiguo 14/02/2014, 19:45
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 8 años, 6 meses
Puntos: 1
simbolo & de mas en parametros enviados por get

Hola a todos, amigos del web.

Tengo un problema con un insert. Llevo bastantes paginas hechas y no me había pasado antes este problema. El caso es que tengo un form con un insert para añadir citas a los clientes. Todo funciona correctamente pero al final de la url de destino me envía un "&" de más. Esto es lo que recibo:

Código HTML:
http://www.pagina.es/agenda.php?nuevo_mes=02&nuevo_ano=2014&dia_actual=16&
Como ven al final de la cadena me repite un "&". En realidad no me da problema para navegar, insertar y consultar.

El problema ha surgido porque quiero que cuando se inserte la cita en la tabla me vaya a la página del día (que es la de arriba), a un div determinado. Al tener un "&" al final de la cadena me muestra esto:

Código HTML:
http://www.pagina.es/agenda.php?nuevo_mes=02&nuevo_ano=2014&dia_actual=16#citasDiv&
Y ahi radica mi problema, al tener un "&" despues de la llamada al ancla no me muestra el div del ancla, se me pone al principio de la pagina como sería normalmente.

No tengo ni idea de como solucionarlo. Les pego código a ver si me pueden echar una mano.

Este es el INSERT:
Código PHP:
$nombre $row_Datos['txtNombre'];
$apellidos $row_Datos['txtApellidos'];
$id $row_Datos['idCliente'];
$tipo $_POST['Tipo'];
$comentario $_POST['txtComentario'];
$tratamiento $row_Precio["txtPrecio"];
$precio $_POST["txtPrecio"];

if ((isset(
$_POST["MM_insert"])) && ($_POST["MM_insert"] == "form9")) {
  
$insertSQL sprintf("INSERT INTO Citas_tbl (idCita, txtNombre, txtApellidos, txtTratamiento, txtComentario, datDia, txtCita, txtPrecio, idNombre) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)",
                       
GetSQLValueString($_POST['idCita'], "int"),
                       
GetSQLValueString($nombre"text"),
                       
GetSQLValueString($apellidos"text"),
                       
GetSQLValueString($tipo"text"),
                       
GetSQLValueString($comentario"text"),
                       
GetSQLValueString($_POST['datDia'], "date"),
                       
GetSQLValueString($_POST['txtCita'], "text"),
                       
GetSQLValueString($precio"text"),
                       
GetSQLValueString($id"int"));

  
mysql_select_db($database_opencel$opencel);
  
$Result1 mysql_query($insertSQL$opencel) or die(mysql_error());

  
$dia=$_POST['datDia'];
  
$fecha=explode("-"$dia);

  
$ano=$fecha[0];
  
$mes=$fecha[1];
  
$dia=$fecha[2];

  
$insertGoTo "agenda.php?nuevo_mes=".$mes."&nuevo_ano=".$ano."&dia_actual=".$dia."#citasDiv";
  if (isset(
$_SERVER['QUERY_STRING'])) {
    
$insertGoTo .= (strpos($insertGoTo'?')) ? "&" "?";
    
$insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  
header(sprintf("Location: %s"$insertGoTo));

Nunca me había encontrado con un problema de programación así.... sobretodo porque no se qué pasa.

¿Alguna idea?
Gracias
  #2 (permalink)  
Antiguo 14/02/2014, 20:18
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.538
Antigüedad: 10 años, 2 meses
Puntos: 969
Respuesta: simbolo & de mas en parametros enviados por get

Veo que estás añadiendo o un & o un ? a la variable $insertGoTo que ya tiene una cadena, además de que le terminas añadiendo la query string existente. Solamente para salir de dudas, comenta la línea del header e imprime $insertGoTo para ver hacia dónde estás redireccionando.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 14/02/2014, 20:34
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 8 años, 6 meses
Puntos: 1
Respuesta: simbolo & de mas en parametros enviados por get

Cita:
Iniciado por Alexis88 Ver Mensaje
Veo que estás añadiendo o un & o un ? a la variable $insertGoTo que ya tiene una cadena, además de que le terminas añadiendo la query string existente. Solamente para salir de dudas, comenta la línea del header e imprime $insertGoTo para ver hacia dónde estás redireccionando.

Saludos
Al final buscando soluciones lo he corregido. No me gusta demasiado la manera en que lo he hecho..... pero me funciona bien. Aunque si tienes una forma más limpia de hacerlo, por decirlo de alguna manera, te agradecería la ayuda.

Ya te digo, lo he solucionado con un par de cambios pero...... el saber no ocupa lugar.

Lo que hice, un poco a lo bestia es cambiar todas estas sentencias....
Código PHP:
$insertGoTo "agenda.php?nuevo_mes=".$mes."&nuevo_ano=".$ano."&dia_actual=".$dia."#citasDiv"
  if (isset(
$_SERVER['QUERY_STRING'])) { 
    
$insertGoTo .= (strpos($insertGoTo'?')) ? "&" "?"
    
$insertGoTo .= $_SERVER['QUERY_STRING']; 
  } 
  
header(sprintf("Location: %s"$insertGoTo)); 

y simplificarla por....
Código PHP:
header(sprintf("Location:agenda.php?nuevo_mes=".$mes."&nuevo_ano=".$ano."&dia_actual=".$dia."#citasDiv"$insertGoTo));

Creo que no es una manera limpia de hacerlo, pero al final lo he conseguido. Aunque sigo luchando por hacerlo correctamente.... asi me funciona.

El caso es que nunca me había pasado y me gustaría saber a qué se debe.
Si tienes alguna idea..... gracias una vez mas alexis



Por cierto... he comentado el header y puesto un echo y me devuelve lo que te decía:

Código PHP:
Ver original
  1. agenda.php?nuevo_mes=02&nuevo_ano=2014&dia_actual=25&
  #4 (permalink)  
Antiguo 14/02/2014, 21:25
Avatar de patriciomase  
Fecha de Ingreso: abril-2012
Ubicación: Mar del Plata
Mensajes: 323
Antigüedad: 9 años, 9 meses
Puntos: 34
Respuesta: simbolo & de mas en parametros enviados por get

pues estas concatenando insertgoto con un & atras siempre, es lógico que siempre va a terminar en &, borrale el último caracter y problema solucionado. Otra opcién sería corregir todo el flujo de esa aplicación porque no lo veo bien, no entiendo por qué rediriges de nuevo pasando todo por GET en lugar de hacer esto que estas haciendo en agenda.php directamente, una vez hecho el insert sigues con el flujo normal, sin redirigir ni nada. (???)
  #5 (permalink)  
Antiguo 15/02/2014, 06:26
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 8 años, 6 meses
Puntos: 1
Respuesta: simbolo & de mas en parametros enviados por get

Cita:
Iniciado por patriciomase Ver Mensaje
pues estas concatenando insertgoto con un & atras siempre, es lógico que siempre va a terminar en &, borrale el último caracter y problema solucionado. Otra opcién sería corregir todo el flujo de esa aplicación porque no lo veo bien, no entiendo por qué rediriges de nuevo pasando todo por GET en lugar de hacer esto que estas haciendo en agenda.php directamente, una vez hecho el insert sigues con el flujo normal, sin redirigir ni nada. (???)
¿A que te refieres con el último caracter? No logro encontrar donde está ese símbolo de más.
  #6 (permalink)  
Antiguo 15/02/2014, 09:13
Avatar de patriciomase  
Fecha de Ingreso: abril-2012
Ubicación: Mar del Plata
Mensajes: 323
Antigüedad: 9 años, 9 meses
Puntos: 34
Respuesta: simbolo & de mas en parametros enviados por get

Cita:
Iniciado por raulgranadosraul Ver Mensaje
¿A que te refieres con el último caracter? No logro encontrar donde está ese símbolo de más.
Código PHP:
Ver original
  1. $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
  2.     $insertGoTo .= $_SERVER['QUERY_STRING'];

Ahí añades un & o un ? "a mano". Cual es la lógica de esas 2 lineas ?? Insertgoto ya está armado, la primera de esas lineas te está añadiendo un &, la segunda probablemente esté concatenando un espacio vacio.
  #7 (permalink)  
Antiguo 15/02/2014, 10:11
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 8 años, 6 meses
Puntos: 1
Respuesta: simbolo & de mas en parametros enviados por get

Cita:
Iniciado por patriciomase Ver Mensaje
Código PHP:
Ver original
  1. $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
  2.     $insertGoTo .= $_SERVER['QUERY_STRING'];

Ahí añades un & o un ? "a mano". Cual es la lógica de esas 2 lineas ?? Insertgoto ya está armado, la primera de esas lineas te está añadiendo un &, la segunda probablemente esté concatenando un espacio vacio.
Lo cierto es que el DW lo coloca solo. Y lo cierto es que nunca me había pasado, aun haciendolo siempre igual.

Lo cierto es que tienes razón. Le he quitado esas dos líneas y ahora va perfectamente.

Gracias de nuevo

Etiquetas: enviados, mysql, parametros, select, simbolo, sql, tabla
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 02:14.