Foros del Web » Programando para Internet » PHP »

problemas con el paso de variables

Estas en el tema de problemas con el paso de variables en el foro de PHP en Foros del Web. Hola a todos, este es mi primer post despues de muchos meses de lectura en la sombra de este maravilloso foro. He creado mi primera ...
  #1 (permalink)  
Antiguo 24/12/2007, 03:20
 
Fecha de Ingreso: septiembre-2004
Mensajes: 10
Antigüedad: 19 años, 6 meses
Puntos: 0
problemas con el paso de variables

Hola a todos, este es mi primer post despues de muchos meses de lectura en la sombra de este maravilloso foro.

He creado mi primera aplicacion en PHP, es un gestos de inserccion de OFERTAS en una web, con su panel de administracion, etc.

El problema es el siguiente:

desde el panel de administracion he colocado, debajo de cada oferta un enlace para modificar dicha oferta, es decir, editarla y modificarla.

Yo paso el id de la oferta a modificar (el id es un campo autonumerico y clave principal de cada oferta en la base de datos) con la llamada a fichero .php de modificacion de la oferta, el problema radica en que la variable id de la oferta en cuestion no se pasa a .php de modificacion, es decir, su valor es nulo en el .php de modificacion.

si dentro del fichero .php de modificacion le doy valo a la varible id (manualmente a modo de prueba) todo va bien.

la verdad que le he dado mil vueltas y no encuentro el fallo.

la llamada al .php de modificacion la hago:
<a href=\"displayupdated.php?id=".$row["id"]."\">

tambien probe asi:
<a href=\"displayupdated.php?id=".$id."\">

aunque creo que estan bien hechas las dos, no me funciona.

quizas diga una tonteria pero, es necesario recuperar el valor de la variable id dentro del fichero destino??? como se hace con los formularios???

si quereis ver algo mas de codigo os lo pongo.

gracias por anticipado.

saludos y feliz 2008
  #2 (permalink)  
Antiguo 24/12/2007, 06:50
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 16 años, 11 meses
Puntos: 292
Re: problemas con el paso de variables

<a href="displayupdated.php?id=<?php $row[$id] ?>" >

Prueba eso con y sin $ en $id (es que no estoy seguro). Tambien puedes probar lo mismo empezando asi: "\displayupdated.php?id= ..." (esta en el raiz ?)
__________________
Salu2!
  #3 (permalink)  
Antiguo 24/12/2007, 07:53
 
Fecha de Ingreso: marzo-2004
Ubicación: España
Mensajes: 185
Antigüedad: 20 años
Puntos: 19
Re: problemas con el paso de variables

pon el codigo entero si no no podemos ver el error.
__________________
Escape Room -

Ios Games
  #4 (permalink)  
Antiguo 24/12/2007, 07:58
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 4 meses
Puntos: 17
Re: problemas con el paso de variables

Supongo que el ID lo sacas de una consulta a la BDD, no?
En ese caso parece que el código está bien. Has probado en ese escript, antes de formar el link a escribir la variable a ver si tiene el valor que debe tener?

Cómo recuperas la variable en el otro script? debes hacerlo así: $_GET['id']

Comprueba estas cosas, si sigue sin funcionar pona alguna porción más de código.

Y las variables de un formulario las recuperarías así: $_POST['nombre_del_campo_del_form']
  #5 (permalink)  
Antiguo 24/12/2007, 09:01
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 16 años, 11 meses
Puntos: 292
Re: problemas con el paso de variables

Cita:
<a href=\"displayupdated.php?id=".$row["id"]."\">
Eso es una MEZCLA de variables de PHP con HTML y no es valido creo y por eso el codigo propuesto.... que quedaria asi:

<a href="displayupdated.php?id=<?php $row['id'] ?>" >

Por favor proba eso a ver si te funciona........
__________________
Salu2!
  #6 (permalink)  
Antiguo 24/12/2007, 09:05
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 4 meses
Puntos: 17
Re: problemas con el paso de variables

Umm, así tampoco funcionaría, no le dices que tiene que mostrar la variable.

Yo había supuesto que el código que puso estaba dentro de un echo, en cuyo caso iría bien.
  #7 (permalink)  
Antiguo 24/12/2007, 09:28
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 16 años, 11 meses
Puntos: 292
Re: problemas con el paso de variables

<a href="displayupdated.php?id=<?php echo $row['id'] ?>" >

ahora ?

Cita:
Yo había supuesto que el código que puso estaba dentro de un echo, en cuyo caso iría bien.
Eso es verdad,..... no se me habia ocurrido pero ha de ser por eso que escapa las comillas ....
__________________
Salu2!
  #8 (permalink)  
Antiguo 24/12/2007, 09:31
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 4 meses
Puntos: 17
Re: problemas con el paso de variables

Si no recuerdo mal esto también podría funcionar:

<?=$row['id'] ?>
  #9 (permalink)  
Antiguo 25/12/2007, 02:16
Avatar de vevni  
Fecha de Ingreso: julio-2005
Ubicación: cancun mexico
Mensajes: 598
Antigüedad: 18 años, 8 meses
Puntos: 3
Re: problemas con el paso de variables

jajajja asi es amigos, esta mal pues no imprimia el id, pues no se puede mezclar html+php sin usar las etiketas, si no como generara el id, igual puede hacer un echo generando toda la url y agregando el id, como podemos ver hay muchas soluciones.... heheheh eso es lo bonito de los algoritmos.
__________________
Código PHP:
echo"hola mundo ver 1221332143.02";
echo
"cuantos usuarios habran impreso hola mundo en el mundo.!???"
  #10 (permalink)  
Antiguo 26/12/2007, 07:11
 
Fecha de Ingreso: septiembre-2004
Mensajes: 10
Antigüedad: 19 años, 6 meses
Puntos: 0
Re: problemas con el paso de variables

Hola a todos, he solucionado parte del problema:

en primer lugar aclarar que

<a href=\"displaydelete.php?id=".$id."\">

funciona. es decir me pasa el valor de la variable id al fichero displayaupdated.php.

lo que pasa que en displaydelete.php debo recuperar el valor de la variable con:

$id = $HTTP_GET_VARS["id"];

y ahora id si tiene el valor correcto.

El problema que tengo ahora es el siguiente:

en el fichero displayupdated.php recupero los campos de la BD cuyo id es el id que le pase con la orden anterior.

----------------

/*este es el fichero displayupdated.php*/

/*recuperamos el valor de la variable id con GET*/
$id = $HTTP_GET_VARS["id"];

mysql_select_db($db,$id_conexion); /*seleccionamos la bd*/
$consulta = mysql_query("SELECT * from ofertas where id='$id'",$id_conexion);

if($row = mysql_fetch_array($consulta))
{
/*$id=$row ["id"];*/
$titulo=$row ["titulo"];
$oferta=$row ["oferta"];
$precio=$row ["precio"];
$condiciones=$row ["condiciones"];
$visible=$row ["visible"];
$posicion=$row ["posicion"];
echo "<td><input type=\"hidden\" name=\"titulo\" value=\"".$id."\"></td></tr>";
echo "<tr>";
echo "<tr>";
echo "<td>TITULO:</td>";
echo "<td><input type=\"text\" name=\"titulo\" size=\"60\" value=\"".$titulo."\"></td></tr>";
echo "<tr>";
echo "<td>OFERTA:</td>";
echo "<td><textarea name=\"oferta\" cols=50 rows=10>".$oferta."</textarea></td></tr>";
echo "<tr>";
echo "<td>PRECIO:</td>";
echo "<td><input type=\"text\" name=\"precio\" size=\"25\" value=\"".$precio."\"></td></tr>";
echo "<tr>";
echo "<td>CONDICIONES:</td>";
echo "<td><textarea name=\"condiciones\" cols=50 rows=5>".$condiciones."</textarea></td></tr>";
echo "<tr>";
echo "<td>OFERTA VISIBLE:</td>";
echo "<td><input type=\"text\" name=\"visible\" size=\"2\" value=\"".$visible."\"> (si/no)</td></tr>";
echo "<tr>";
echo "<td>POSICION:</td>";
echo "<td><input type=\"text\" name=\"posicion\" size=\"5\" value=\"".$posicion."\"> (0,1,2,etc)</td></tr>";
echo "<tr>";
echo "<td></td>";
echo "<td><input type=\"submit\" size=\"2\" value=\"MODIFICAR OFERTA\"></td></tr>";
echo "<tr>";
echo "<td></td>";
echo "<td><br><a href=admin_ofertas.php class='titulonegro'><center>VOLVER A ADMINISTRACION DE OFERTAS</a></center></td></tr>";
}
?>
</p>
</td>
</tr>
</table>
</form>
</body>
</html>
-----------------------

de esa forma el usuario puede modificar cualquier campo del registro y cuando envie el formulario se actualizaran esos campos.

pero al enviar el formulario al fichero updated.php:

-----------------------------
/*este es el fichero updated.php*/

/*recupero las varibles pasadas del formulario con POST*/
$id = $HTTP_POST_VARS["id"];
$titulo = $HTTP_POST_VARS["titulo"];
$oferta = $HTTP_POST_VARS["oferta"];
$precio = $HTTP_POST_VARS["precio"];
$condiciones = $HTTP_POST_VARS["condiciones"];
$visible = $HTTP_POST_VARS["visible"];
$posicion = $HTTP_POST_VARS["posicion"];

/*PRUEBAS*/
echo ("<td class='textopequeno' align='center' bgcolor='#FFFFFF' width='5%'>el valor del TITLUO es: $titulo</td>\n");
echo $titulo;
echo "<br>";
echo ("<td class='textopequeno' align='center' bgcolor='#FFFFFF' width='5%'>el valor del id es: $id</td>\n");
echo "<br>";


/*actualizo las varibles en la BD*/
$sqlquery="UPDATE ofertas SET titulo=\"".$titulo."\" , oferta=\"".$oferta."\" , precio=\"".$precio."\" , condiciones=\"".$condiciones."\" , visible=\"".$visible."\" , posicion=\"".$posicion."\" where id=\"".$id."\"";
echo $sqlquery;
$result=mysql_query($sqlquery) or die ("no se ha podido realizar la consulta SQL");
echo "<br>";
echo "<br>";
echo "********** LA OFERTA SE MODIFICO CON EXITO **********";
echo "<br>";
echo "<br>";
echo "<br>";
echo ("<a href=admin_ofertas.php class='titulonegro'><center>VOLVER A ADMINISTRACION DE OFERTAS</a></center>");
?>

</body>
</html>
----------------------------


aunque recpere el valor de la variable id con
$id = $HTTP_POST_VARS["id"];

no me funciona la orden UPDATED ... where id=\"".$id."\""; YA QUE EL ID NO TIENE VALOR.
he probado a darle valor a la varible id dentro de este fichero y en este caso si que funciona perfectmaente.

como veis el problema es que no recupero el valor original de la variable id, fundamental para que todo funcione.

de nuevo, mil gracias a todos por vuestra ayuda.
  #11 (permalink)  
Antiguo 26/12/2007, 07:46
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 16 años, 11 meses
Puntos: 292
Re: problemas con el paso de variables

$id = $HTTP_GET_VARS[] es desaconsejado porque en PHP 6 no existira mas! usa $_GET en su lugar

Salu2!
__________________
Salu2!
  #12 (permalink)  
Antiguo 26/12/2007, 10:46
 
Fecha de Ingreso: septiembre-2004
Mensajes: 10
Antigüedad: 19 años, 6 meses
Puntos: 0
Re: problemas con el paso de variables

me sigue sin funcionar ...
  #13 (permalink)  
Antiguo 26/12/2007, 15:45
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 16 años, 11 meses
Puntos: 292
Re: problemas con el paso de variables

ramon: como consejo... trata de debugiar tu codigo..... de determinar que parte falla.... y en tal caso... preguntar en consecuencia. Sino..... u opinamos o bien copiamos tu codigo y lo probamos... lo cual es laborioso.
__________________
Salu2!
  #14 (permalink)  
Antiguo 26/12/2007, 18:57
Avatar de pragone  
Fecha de Ingreso: diciembre-2007
Ubicación: Madrid
Mensajes: 223
Antigüedad: 16 años, 3 meses
Puntos: 2
Re: problemas con el paso de variables

Hola ramon123,

Tu fallo está en:
Código PHP:
echo "<td><input type=\"hidden\" name=\"titulo\" value=\"".$id."\"></td></tr>"
debería ser:
Código PHP:
echo "<td><input type=\"hidden\" name=\"id\" value=\"".$id."\"></td></tr>"
Es un error típico de copy&paste.... para estos casos, lo mejor que puedes hacer es un print_r($_POST); y así ves lo que estás recibiendo del formulario
  #15 (permalink)  
Antiguo 27/12/2007, 02:40
 
Fecha de Ingreso: septiembre-2004
Mensajes: 10
Antigüedad: 19 años, 6 meses
Puntos: 0
Re: problemas con el paso de variables

joeeeeeeeeeer, el fallo mas tonto y mas camuflado que he visto.... ayer lo descubri (3:00 am) y hoy me lo corrobora pragone.

el copy paste es lo que tiene.

Italico76, te aseguro que hice un debbuger de campeonato, imprimi las variables linea a linea ... pero como veras no sabia la orden print_r($_POST).

siento haberos liado tanto con un maldito fallo de "no prestar atencion".

Espero que acepteis mis disculpas. de todas formas me sirvio para empaparme mas aun de PHP, porque hice mil pruebas.

un saludo para todos.
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 04:33.