# [PHP]  Problema con Variable GET y formulario POST (SOLVED)

## ZaPa

Hola a todos, que tal?

Vengo de nuevo por aqui, aver si me pueden hechar una mano con un problemita que estoy teniendo..les cuento:

Tengo 1 formulario, el cual, muestra un monton de registros de la base de datos, el cual es el nombre y apellidos de cada persona registrada en la base de datos.

Si pinchamos en el apellido (para la edición de los datos del apellido), se enviaria esto:

```

<a href="editar.php?accion=editapellidos&id=<? echo $ref ?>"> <? echo $apellidos ?> </a></td>

```

Se envia por get el tipo de edicion a realizar (en este caso editapellidos) y la identidad del sujeto que la conseguimos mediante la variable ($ref).

Hasta ahi bíen...

Legamos a la 2º pagina, y en la url tenemos esto:

```

http://www.web.com/editar.php?accion=editapellidos&id=3

```

En esa 2º pagina, tengo creado un form de html imprimido por php con (echo)... 

```

//Recojemos los valores GET

$accion = $_GET["accion"];

$ref=$_GET["id"];

 echo '<b><font align="center">Modifiar apellidos del sujeto numero: #'.$ref.' </font><br/><br/>';

 echo '<form method="post" action="?accion=editapellidos&id="'.$ref.'">';

 echo '<b>Nuevo valor: <input name="apellidos" type="text" id="apellidos"></input><br/></b>';

 echo '<input name="submit" type="submit" value="Modificar"></input>';

 echo '</form>';

echo "La variable ref vale: $ref";

 
```

Pues, como ven, al introducir en el campo de texto el nuevo valor a modificar, se refresca el mismo fichero con las mismas variables pasadas por get anteriormente..

Pero por sorpresa....la variable $ref se queda vacia, cambia de valor..

Una solución podria ser, pasando este otro formulario por get y pasar de nuevo $ref, pero quiero pasar este formulario por POST y que la variable $ref mantenga el valor en la url que contenia anteriormente.

¿Es posible?

Espero respuestas.

Saludos.

----------

## Stolz

Si quieres pasar por POST el valor de $ref puedes añadir un campo oculto al formulario:

```
echo sprintf('<input type="hidden" name="id" id="id" value="%d" />',$ref);
```

así recibes el parámetro $_POST['id'] tras hacer el submit:

También puedes calcular $ref así:

$ref=$_REQUEST["id"];

que combinado con lo anterior tepermite leer $ref venga de donde venga (POST o GET)

----------

## lanshor

Creo que tienes un error de comillas:

```
echo '<form method="post" action="?accion=editapellidos&id="'.$ref.'">'; 
```

debería ser:

```
echo '<form method="post" action="?accion=editapellidos&id='.$ref.'">'; 
```

Estabas cerrando el atributo "action" justo después de "id=" al escribir esas comillas dobles; por eso $ref se te quedaba sin valor.

Trata de usar <?=$variable?> en vez de <?echo $variable?> (son lo mismo) e imprimir sólo por php lo necesario para evitar que te pasen estas cosas. Tu código quedaría así:

```

//Recojemos los valores GET

$accion = $_GET["accion"];

$ref=$_GET["id"];

?>

<b>

   <font align="center">Modifiar apellidos del sujeto numero: #<?=$ref?></font><br/><br/>

</b>

<form method="post" action="?accion=<?=$accion?>&amp;id=<?=$ref?>">

   <b>

      Nuevo valor: <input name="apellidos" type="text" id="apellidos"></input><br/>

   </b>

   <input name="submit" type="submit" value="Modificar"></input>

</form>

<?

echo "La variable ref vale: $ref"; 

```

Usa &amp; en vez de & en las urls y tabula el código todo lo que puedas (no cerrabas el primer "<b>")  :Wink: 

----------

## ZaPa

Muchisimas gracia Stolz y lanshor por vuestras respuestas.

En efeccto..era las malditas comillas dobles, cerraba el action antes del id con las comillas dobles y por eso la variable se quedaba sin valor...

Una estupidez que me ha hecho perder mucho tiempo probando cosas....

Como siempre..muchisimas gracias por todo a todos.

Porcierto..stolz..que pasó con tu blog? lo volverás a abrir?

Un saludo !

----------

## Stolz

 *ZaPa wrote:*   

> Porcierto..stolz..que pasó con tu blog? lo volverás a abrir?

 

La máquina en el que lo alojaba pasó a mejor vida. Logré recuperar los datos pero aun no he tenido tiempo para instalar otra máquina. en cuanto pueda lo vuelvo a "abrir"  :Wink: 

----------

## Inodoro_Pereyra

 *Stolz wrote:*   

>  *ZaPa wrote:*   Porcierto..stolz..que pasó con tu blog? lo volverás a abrir? 
> 
> La máquina en el que lo alojaba pasó a mejor vida. Logré recuperar los datos pero aun no he tenido tiempo para instalar otra máquina. en cuanto pueda lo vuelvo a "abrir" 

 

Es bueno saberlo, ya lo estaba extrañando  :Very Happy: 

Salud!

----------

