Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/02/2014, 15:06
raulgranadosraul
 
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.