Foros del Web » Programando para Internet » PHP »

Actualizando datos desde un form

Estas en el tema de Actualizando datos desde un form en el foro de PHP en Foros del Web. Hola a todos: Tengo un problemilla que probablemente sea una tonteria pero que no se como resolver. Tengo una tabla muy muy sencilla con un ...
  #1 (permalink)  
Antiguo 21/05/2003, 05:13
 
Fecha de Ingreso: octubre-2001
Mensajes: 1.288
Antigüedad: 22 años, 5 meses
Puntos: 0
Actualizando datos desde un form

Hola a todos:

Tengo un problemilla que probablemente sea una tonteria pero que no se como resolver.

Tengo una tabla muy muy sencilla con un unico registro y unos pocos campos, a la que deseo cambiarle los valores que contiene.

Para ello hago una consulta y presento los datos sobre campos de texto para que el usuario pueda modificarlos. El problema lo tengo al ejecutar el UPDATE: simplemente no me carga los datos que he modificado, sino los iniciales.

Os pongo un ejemplillo:

<INPUT TYPE='text' NAME='hab_alta' Value='<?= $hab_alta ?>' SIZE='5' > € /día<br>

$hab_alta es el valor que obtengo de la consulta. Pensando que el problema podria ser que NAME='hab_alta' es el mismo valor, y que al capturar el valor desde el codigo de modificacion

($hab_alta = $HTTP_POST_VARS["hab_alta"];)

podia estar tomando siempre el inicial, sin modificar, le cambie el valor NAME='hab_alta' por NAME='hab_t1', pero no recoge ese valor nuevo, en ese caso lo recoge vacio.

Quiza es que no estoy enfocando las cosas bien desde el principio y seguro que es una tonteria, pero yo no lo comprendo.

Otra cosilla... al UPDATE no le estoy poniendo condicion WHERE porque solo tengo un registro

Gracias con antelacion.
__________________
"... era precisamente la fina hermosura del dolor humano... que al parecer sólo la música sabe expresar." - Cuentos imprescindibles, Anton Chéjov.

  #2 (permalink)  
Antiguo 21/05/2003, 07:38
Avatar de joseisrael  
Fecha de Ingreso: noviembre-2002
Ubicación: Maracay, Edo. Aragua
Mensajes: 221
Antigüedad: 21 años, 5 meses
Puntos: 1
Saludos.

A ver si entendi bien.

Entras a una pagina php donde hacer una consulta a tu tabla y colocas en los campos de ese form los datos del registro??

y luego le das "enviar" y quieres que ejecute un update de ese registro??

despues que hace el update a donde mandas la página???

al mismo formulario??

Explica un poco mejor el funcionamiento para poder ayudarte mejor. De todas formas te explico como lo veo yo.

Tengo pagina_1.php. En esta página hago un SELECT dodne traigo los registros de la tabla.

En el formulario debo colocar:

<input name="campo1" value="<? $db->p('campo1'); ?>">

Es decir, debes hacer referencia al campo de la db directamente.

Luego el <form> debe indicar a donde ir. Supongamos que lo mandamos a otra página para no enredarte mas.

<form name=form1 method="POST" action="pagina_2.php">

En pagina_2.php debes hacer el UPDATE a tu tabla. Puedes colocar un boton de Regresar, pero ponle el url completo hacia pagina_1.php

Esta página hara nuevamente el SELECT y te traera los campos de la tabla recien actualizada.

Si colocas $HTTP_POST_VARS["hab_alta"]; estas haciendo referencia a las variables que vienes via POST y no a las de la tabla.

Explicate mejor a ver si no es que soy yo el perdido.

Suerte
__________________
Aprender Siempre. Lema de Vida

José Molina
  #3 (permalink)  
Antiguo 21/05/2003, 08:05
 
Fecha de Ingreso: octubre-2001
Mensajes: 1.288
Antigüedad: 22 años, 5 meses
Puntos: 0
Pagina A:

realizo un select de la tabla en cuestion y muestro los datos en un form:

....
<INPUT TYPE='text' NAME='campo1' Value='<?= $campo1 ?>' >
<INPUT TYPE='text' NAME='campo2' Value='<?= $campo2 ?>' >
<INPUT TYPE='text' NAME='campo3' Value='<?= $campo3 ?>' >
...

modifico los datos almacenados en esa caja de texto, y los envio a la Pagina B

en la pagina B capturo los datos de la siguiente manera:

$campo1 = $HTTP_POST_VARS["campo1"];)
$campo2 = $HTTP_POST_VARS["campo2"];)
$campo3 = $HTTP_POST_VARS["campo3"];)
...

y posteriormente realizo el update:

UPDATE tabla SET campo1=$campo1, campo2=$campo2.......

y retorno a la pagina A, que deberia mostrar los valores que yo modifique y no los valores que inicialmente tenia almacenados.

El problema esta en que los datos que le paso a la pagina B no son los que yo modifique, sino los originales, y ahi esta el error.
__________________
"... era precisamente la fina hermosura del dolor humano... que al parecer sólo la música sabe expresar." - Cuentos imprescindibles, Anton Chéjov.

  #4 (permalink)  
Antiguo 21/05/2003, 08:35
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 22 años, 5 meses
Puntos: 69
Sonia, si todos tus valores de los campos son num´ericos, deber´ia funcionarte, pero si tienes campos en los que ingresas texto, entonces te conviene "rodear" el contenido de los campos con comillas simples :

$sql="UPDATE tu_tabla SET campo1='$campo1', campo2='$campo2', campo3='$campo3'";

y asi, para que no haya confusiones de la base de datos si te est´as refiriendo a un valor en cadena o a otro campo de la tabla. Adem´as, cuando tengas problemas con alguna consulta, PHP te ofrece siempre una funci´on para devolver el error que hubo, que varia de Base de Datos en Base de Datos, pero que para mySQL es mysql_error(); (en caso que estes usando mySQL).

Ahora, si vas a utilizar 1 tabla para contener solo 1 registro, me parece que te convendria mucho mas guardar esos datos en un archivo de texto. Mas limpio, mas claro.

Saludos.
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com
  #5 (permalink)  
Antiguo 21/05/2003, 08:59
 
Fecha de Ingreso: octubre-2001
Mensajes: 1.288
Antigüedad: 22 años, 5 meses
Puntos: 0
Bueno.... esta resuelto, pero sinceramente no se como porque he vuelto a poner el codigo como lo tenia en un inicio....

perdona las molestias, joseisrael...

Webstudio: lo tenia con ' ' pero al responder teclee sobre la marcha y lo hice mal...

No se si en un futuro tendra mas registros, pero por un momento supongamos que no es asi...

Segun tu, lo vuelco a un archivo de texto ¿no?
¿Me explicas mas al detalle con un ejemplo?

Y otra pregunta: ¿como se retorna automaticamente de la pagina B a la A, una vez realizado el UPDATE?

ya veo que hay mensajes en relacion con este tema por ahi...

de hecho Cluster remite a otro forero a hoscripts para que vea ejemplos...

¿tienes tu de esto en ZONA PHP?
__________________
"... era precisamente la fina hermosura del dolor humano... que al parecer sólo la música sabe expresar." - Cuentos imprescindibles, Anton Chéjov.

  #6 (permalink)  
Antiguo 21/05/2003, 15:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Y otra pregunta: ¿como se retorna automaticamente de la pagina B a la A, una vez realizado el UPDATE?
Redireccionando .. puedes usar:

Código PHP:
header("location: tupaginaA.tal?variable=valor si lo necesitas para indicar como fué el proceso ...");
exit; 
// Terminar la ejecución del script .. por si acaso .. 
Al usar header() recuerda que tu página donde hagas el UPDATE ese NO ha de contener nada de HTML.

------

Si dices que esos datos de ese registro son probables que crezca nada o poco .. Podrías usar un simple array y lo guardas en un archivo para incluirlo en las páginas donde necesites esos datos ..
Si usas un array bidimensional .. podras "apliar" tus datos sin problemas en un futuro .. Si la cosa crece mucho .. ahí ya te vendría mejor usar una BD como ya lo haces ahora ..

Código PHP:
<?
$datos
[1]['dato1']="valor";
$datos[1]['dato2']="valor";
$datos[1]['dato3']="valor";

// Si en un futuro crece tus "registros" .. añades un elemento mas al array bidimensional ..
$datos[2]['dato1']="valor";
$datos[2]['dato2']="valor";
$datos[2]['dato3']="valor";
?>
Y ese archivo (datos.inc.php por ejemplo ...) lo llamas via include() en la página que los necesites .. Accedes a tus datos como lo haces con cualquier array bidimensional ...

Un saludo,


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 22/05/2003, 05:07
 
Fecha de Ingreso: octubre-2001
Mensajes: 1.288
Antigüedad: 22 años, 5 meses
Puntos: 0
Si cluster... el tema es que no se como se guarda ese array en un archivo, como se abre y se cierra el archivo, como se consulta, etc etc...

(ahora es cuando me remites a php.net...)

Hola de nuevo:

pues tengo un warning al retornar a la pagina:

Warning: Cannot add header information - headers already sent by (output started at ........./configuracion.inc:8)

en configuracion.inc solo tengo el host, usuario, password y nombre de la base de datos

.... me lo expliquen, por favor
__________________
"... era precisamente la fina hermosura del dolor humano... que al parecer sólo la música sabe expresar." - Cuentos imprescindibles, Anton Chéjov.


Última edición por sgafo; 22/05/2003 a las 05:07
  #8 (permalink)  
Antiguo 22/05/2003, 11:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
En cuanto al error:

En la línea 8 de configuracion.inc tienes algo de HTML,o un echo "algo" o un espacio .. o un salto de línea. Cuando se usa HEADER() no se puede enviar cabeceras antes al navegador (cabeceras se entienede todo lo que te he puesto ...)

Sobre lo del array ..
Estamos hablando de que esos datos son fijos .. por lo tanto el archivo lo creas tal cual te dí el ejemplo .. lo llamas con el nombre que quieras y lo incluyes en tus páginas via el include() que te mencioné ..

Para acceder a esos datos del array .. se acceden como cualquier otro array común .. sólo que ese es bidimensional ..

Del ejemplo .. si quieres usar el dato1 del registro 1:
echo $datos[1]['dato1'];

ahí lo tienes .. así de simple.

Más info .. please: goto -> www.php.net/manual/es ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 22/05/2003, 12:53
 
Fecha de Ingreso: octubre-2001
Mensajes: 1.288
Antigüedad: 22 años, 5 meses
Puntos: 0
tenias razon... un salto de linea despues de ?>

Cita:
Mensaje Original por Cluster
Más info .. please: goto -> www.php.net/manual/es ..
gracias por no defraudarme...
__________________
"... era precisamente la fina hermosura del dolor humano... que al parecer sólo la música sabe expresar." - Cuentos imprescindibles, Anton Chéjov.

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 23:50.