Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema con variables duplicadas despues de submit

Estas en el tema de Problema con variables duplicadas despues de submit en el foro de PHP en Foros del Web. Hola a todos amigos del web. Últimamente parece que me estoy encontrando con cosas que sabía hacer y que se me han olvidado o no ...
  #1 (permalink)  
Antiguo 13/02/2014, 15:06
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 10 años, 9 meses
Puntos: 1
Problema con variables duplicadas despues de submit

Hola a todos amigos del web.

Últimamente parece que me estoy encontrando con cosas que sabía hacer y que se me han olvidado o no lo sé. El caso es que estoy con un problema de variables. Les cuento:

Tengo una agenda de citas en la web con php y mysql. Tengo una página llamada agenda_hoy, en la que inserto una nueva cita en una ventana modal y me hace el insert a la BD y me lleva a agenda_mes?XXXX(datos de la fecha) al día en el que se añadió la cita. Esta es la url de destino después del insert:

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

y esto lo que me muestra por la url:

Código PHP:
agenda.php?nuevo_mes=02&nuevo_ano=2014&dia_actual=15 
Hasta aquí todo bien, me hace el insert correctamente y me lleva al día correcto.
El problema está cuando en esta misma página hago un insert nuevo de cita y me pasa los variables bien y me hace el insert bien,todo correcto, pero no me lleva al día porque se duplican las variables, es decir, si la cita es el 16-02-2014 y estoy en la dirección que puse arriba me devuelve esta cadena:

Código PHP:
agenda.php?nuevo_mes=02&nuevo_ano=2014&dia_actual=16&nuevo_mes=2&nuevo_ano=2014&dia_actual=15 
Es decir me guarda las variables enviadas anteriormente y me suma las nuevas. Con lo que la página en vez de ir a la fecha de la nueva cita se queda en el mismo día. He de decir que el form está en una ventana modal, por eso me imagino que al hacer el insert y cerrar la ventana modal automáticamente no me limpia la url.... pero no sé si es por eso.

Os paso el 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'];

if ((isset(
$_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  
$insertSQL sprintf("INSERT INTO Citas_tbl (idCita, txtNombre, txtApellidos, txtTratamiento, txtComentario, datDia, txtCita, idNombre) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)",
                       
GetSQLValueString($_POST['idCita'], "int"),
                       
GetSQLValueString($nombre"text"),
                       
GetSQLValueString($apellidos"text"),
                       
GetSQLValueString($tipo"text"),
                       
GetSQLValueString($_POST['txtComentario'], "text"),
                       
GetSQLValueString($_POST['datDia'], "date"),
                       
GetSQLValueString($_POST['txtCita'], "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 "opencel_agenda.php?nuevo_mes=".$mes."&nuevo_ano=".$ano."&dia_actual=".$dia."";
  if (isset(
$_SERVER['QUERY_STRING'])) {
    
$insertGoTo .= (strpos($insertGoTo'?')) ? "&" "?";
    
$insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  
header(sprintf("Location: %s"$insertGoTo));

Este el form (está en ventana modal):
Código HTML:
 <form action="<?php echo $editFormAction; ?>" method="post" name="form1" id="form1">
			<table align="center" width="100%">
				<tr valign="bottom" height="40px">
					<td nowrap="nowrap" align="right" valign="middle">Nombre: </td>
					<td style="padding-left:15px">
						<select name="Clientes" id="Clientes" autofocus="autofocus" class="button_cita">
							<option value="0">--Seleccionar--</option>
							<option value="0"></option>
							<?php do { ?>
							<option value="<?php echo $row_Desplegable_clientes['idCliente']?>" <?php if (!(strcmp($row_Desplegable_clientes['idCliente'], ""))) {echo "SELECTED";} ?>><?php echo $row_Desplegable_clientes['txtApellidos']; ?>, <?php echo $row_Desplegable_clientes['txtNombre']?></option>
							<?php } while ($row_Desplegable_clientes = mysql_fetch_assoc($Desplegable_clientes));
							$rows = mysql_num_rows($Desplegable_clientes);
								if($rows > 0) {
								mysql_data_seek($Desplegable_clientes, 0);
								$row_Desplegable_clientes = mysql_fetch_assoc($Desplegable_clientes);
							} ?>
						</select> 
					</td>
				</tr>
                <tr>
					<td nowrap="nowrap" align="right" valign="middle">D&iacute;a: </td>
					<td style="padding-left:5px;padding-top:5px" align="left" valign="middle">
						<input type="date" name="datDia" value="" size="20" class="button" />
					</td>
                </tr>
                <tr valign="baseline">
					<td align="right" valign="middle" nowrap="nowrap">Hora: </td>
					<td style="padding-left:5px"><input type="text" name="txtCita" value="" size="20" class="button" style="cursor:text;" /></td>
				</tr>
				<tr valign="baseline">
					<td nowrap="nowrap" align="right" valign="middle">Tratamiento: </td>
					<td style="padding-left:15px">
                        <select name="Tipo" id="Tipo" onchange="" class="button_cita">
							<option value="0">--Seleccionar--</option>
							<option value="0"></option>
							<option value="0">CORPORALES</option>
							<?php do { ?>
							<option value="<?php echo $row_Corporales['txtNombre']?>">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<?php echo $row_Corporales['txtNombre']?></option>
							<?php } while ($row_Corporales = mysql_fetch_assoc($Corporales));
							$rows = mysql_num_rows($Corporales);
								if($rows > 0) {
								mysql_data_seek($Corporales, 0);
								$row_Corporales = mysql_fetch_assoc($Corporales);
							} ?>
                            <option value="0"></option>
                            <option value="0">FACIALES</option>
							<?php do { ?>
							<option value="<?php echo $row_Faciales['txtNombre']; ?>">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<?php echo $row_Faciales['txtNombre']; ?></option>
							<?php } while ($row_Faciales = mysql_fetch_assoc($Faciales));
							$rows = mysql_num_rows($Faciales);
								if($rows > 0) {
								mysql_data_seek($Faciales, 0);
								$row_Faciales = mysql_fetch_assoc($Faciales);
							} ?>
                            <option value="0"></option>
                            <option value="0">DENTALES</option>
							<?php do { ?>
							<option value="<?php echo $row_Dentales['txtNombre']; ?>">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<?php echo $row_Dentales['txtNombre']; ?></option>
							<?php } while ($row_Dentales = mysql_fetch_assoc($Dentales));
							$rows = mysql_num_rows($Dentales);
								if($rows > 0) {
								mysql_data_seek($Dentales, 0);
								$row_Dentales = mysql_fetch_assoc($Dentales);
							} ?>
							<option value="0"></option>
							<option value="0"></option>
                        </select>
                    </td>
                </tr>
				<tr valign="baseline">
					<td align="right" valign="top" nowrap="nowrap" style="padding-top:5px">Comentario: </td>
					<td style="padding-left:10px;padding-top:5px">
						<textarea name="txtDireccion" cols="24" rows="4" value="" class="button" style="cursor:text;resize:none"></textarea>
					</td>
				</tr>
				<tr valign="baseline">
					<td nowrap="nowrap" align="right">&nbsp;</td>
					<td valign="middle" style="padding-left:5px;padding-top:15px">
						<input type="submit" value="Guardar" style="cursor:pointer" class="button" />
						<input type="button" value="Cerrar" onclick="javascript:cerrarVentana();" style="cursor:pointer" class="button" />
					</td>
				</tr>
			</table>
        <input type="hidden" name="MM_insert" value="form1" />
        </form> 
y este es el .js que me muestra y me cierra la ventana modal:
Código Javascript:
Ver original
  1. <script>
  2.         function mostrarVentana()
  3.         {
  4.             var ventana = document.getElementById('miVentana');
  5.             ventana.style.marginTop = "25px";
  6.             ventana.style.left = ((document.body.clientWidth-500) / 2) +  "px";
  7.             ventana.style.display = 'block';
  8.         }
  9.         function cerrarVentana()
  10.         {
  11.             var ventana = document.getElementById('miVentana');
  12.             ventana.style.display = 'none';
  13.         }
  14. </script>

¿Alguna idea?
Gracias de antemano.
  #2 (permalink)  
Antiguo 13/02/2014, 16:33
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 13 años, 6 meses
Puntos: 123
Respuesta: Problema con variables duplicadas despues de submit

creo que tu problema puede estar aquí

Código PHP:
Ver original
  1. $insertGoTo = "opencel_agenda.php?nuevo_mes=".$mes."&nuevo_ano=".$ano."&dia_actual=".$dia.""; //asta aqui bien
  2.   if (isset($_SERVER['QUERY_STRING'])) { // aqui dices si existe haz lo siguiente
  3.     $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
  4.     $insertGoTo .= $_SERVER['QUERY_STRING']; // aqui vuelves a añadir las variables

creas $insertGoTo apartir de las variables y luego le vuelves añadir las variables con la linea
Código PHP:
Ver original
  1. $insertGoTo .= $_SERVER['QUERY_STRING'];

creo que deberias usar empty() en lugar de isset()

creo que puede venir la cosa por ahí, miralo y me dices que tal.
  #3 (permalink)  
Antiguo 13/02/2014, 19:59
 
Fecha de Ingreso: julio-2013
Mensajes: 174
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: Problema con variables duplicadas despues de submit

Cita:
Iniciado por xerifandtomas Ver Mensaje
creo que tu problema puede estar aquí

Código PHP:
Ver original
  1. $insertGoTo = "opencel_agenda.php?nuevo_mes=".$mes."&nuevo_ano=".$ano."&dia_actual=".$dia.""; //asta aqui bien
  2.   if (isset($_SERVER['QUERY_STRING'])) { // aqui dices si existe haz lo siguiente
  3.     $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
  4.     $insertGoTo .= $_SERVER['QUERY_STRING']; // aqui vuelves a añadir las variables

creas $insertGoTo apartir de las variables y luego le vuelves añadir las variables con la linea
Código PHP:
Ver original
  1. $insertGoTo .= $_SERVER['QUERY_STRING'];

creo que deberias usar empty() en lugar de isset()

creo que puede venir la cosa por ahí, miralo y me dices que tal.
Ei muchas gracias bro!!!
Sabía que andaba cerca pero la memoria me fallaba. Lo he modificado con tus indicaciones y va de perlas.

Gracias una vez más man. Pongo el código correcto por si a alguien le vale.
A mi me sirvió. jejejeje

Solo cambié isset por empty y listo
Código PHP:
$insertGoTo "opencel_agenda.php?nuevo_mes=".$mes."&nuevo_ano=".$ano."&dia_actual=".$dia."";
  if (empty(
$_SERVER['QUERY_STRING'])) {
    
$insertGoTo .= (strpos($insertGoTo'?')) ? "&" "?";
    
$insertGoTo .= $_SERVER['QUERY_STRING'];
  } 
  
header(sprintf("Location: %s"$insertGoTo));


Etiquetas: duplicadas, fecha, mysql, select, sql, submit, variable, variables
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 19:55.