Foros del Web » Programando para Internet » PHP »

Como actualizar una pagina con un formulario sin que desaparezcan los datos contenido

Estas en el tema de Como actualizar una pagina con un formulario sin que desaparezcan los datos contenido en el foro de PHP en Foros del Web. El codigo para que un select se actualize cuando se seleciona una opcion del otro funciona perfecto, pero tengo una pregunta, como hago para que ...
  #1 (permalink)  
Antiguo 15/08/2003, 08:27
Avatar de Slash  
Fecha de Ingreso: agosto-2003
Mensajes: 51
Antigüedad: 20 años, 8 meses
Puntos: 0
Pregunta Como actualizar una pagina con un formulario sin que desaparezcan los datos contenido

El codigo para que un select se actualize cuando se seleciona una opcion del otro funciona perfecto, pero tengo una pregunta, como hago para que los otros datos que tengo en el formulario no se desapaezcan(ya que solo no tengo los selects sino tambiem campos de texto y radio buttons)caundo la pagina se actualize.

Agradezco de ante mano la ayuda!!

Aqui esta el codigo

Código PHP:
#
# Estructura de tabla para tabla `tabla_hija`
#

CREATE TABLE tabla_hija (
id tinyint(3) unsigned NOT NULL auto_increment,
id_padre tinyint(3) unsigned NOT NULL default '0',
item_texto varchar(255) NOT NULL default '',
PRIMARY KEY (id)
) TYPE=MyISAM;

#
# Volcar la base de datos para la tabla `tabla_hija`
#

INSERT INTO tabla_hija VALUES (1, 1, 'tabla_hija - Item grupo 1 bla bla bla');
INSERT INTO tabla_hija VALUES (2, 2, 'tabla_hija - grupo 2 item 1');
INSERT INTO tabla_hija VALUES (3, 2, 'tabla_hija - grupo 2 item 2');
INSERT INTO tabla_hija VALUES (4, 3, 'tabla_hija - grupo 3 item probando');
INSERT INTO tabla_hija VALUES (5, 1, 'tabla_hija - item grupo 1 noseq pner');
# --------------------------------------------------------

#
# Estructura de tabla para tabla `tabla_padre`
#

CREATE TABLE tabla_padre (
id tinyint(3) unsigned NOT NULL auto_increment,
item_texto varchar(255) NOT NULL default '',
PRIMARY KEY (id)
) TYPE=MyISAM;

#
# Volcar la base de datos para la tabla `tabla_padre`
#

INSERT INTO tabla_padre VALUES (1, 'Grupo 1');
INSERT INTO tabla_padre VALUES (2, 'Grupo 2');
INSERT INTO tabla_padre VALUES (3, 'Grupo 3');
INSERT INTO tabla_padre VALUES (4, 'Grupo 4');

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


Y el código de nuestras consultas a realizar:


PHP:--------------------------------------------------------------------------------

<?
// datos de conexion a la BD.
$servidor ="localhost"// host
$usuario =""
$clave ="";
$basedatos =""// Indicar una Base de datos.

// si se ha pulsao el boton enviar ($enviado) se procesa el formulario ..
// Sino, se continua con el formulario y los nuevos valores de los Select ..
// OJO si se tienen mas varibles (mas <input> ) se van a perder sus valores a no ser
// que los obtengamos y se les de como valor inicial en el value= de cada uno segun corresponda.

if (!empty($_POST['enviado'])){

// Procesar el formulario ...
echo "Procesando formulario:<br>";
echo 
"Recibido id_tabla_padre: ".$_POST['id_padre']."<br>";
echo 
"Recibido id_tabla_hija: ".$_POST['id_hija'];

} else {

// Conexión a la BD
$conexion mysql_connect($servidor$usuario$clave) or die(mysql_error());
mysql_select_db($basedatos$conexion) or die(mysql_error());

// Obtener el $id_padre del envio a si mismo del formulario ..
$id_padre=$_POST['id_padre'];

// Inicio Formulario .. PHP_SELF enviamos a si mismo (a este script).
echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\">\n\n";

// Formar Selec "Padre".
echo "<select name=\"id_padre\" onChange=\"this.form.submit()\">\n";
echo 
"<option value=\"\"> Seleccione un Item </option>\n";

$SQLconsulta_padre="SELECT * FROM tabla_padre";
$consulta_padre mysql_query($SQLconsulta_padre,$conexion) or die(mysql_error());

While (
$registro_padre=mysql_fetch_assoc($consulta_padre
)){
// Se mira si el ID del registro es el mismo q el $id_padre q recibimos si hemos cambiado el select hijo.
// Se selecciona en consecuencia (selected) la opción elegida.
if ($id_padre == $registro_padre['id']){
echo 
"<option value=\"".$registro_padre['id']."\" selected>".$registro_padre['item_texto']."</option>\n";
} else {
echo 
"<option value=\"".$registro_padre['id']."\">".$registro_padre['item_texto']."</option>\n";
}
}
echo 
"</select>\n\n";

mysql_free_result($consulta_padre); // Liberar memoria usada por consulta.

// Formar Select "Hijo"
echo "<select name=\"id_hija\">\n";

// Si $id_padre no tiene valor (caso de que no se ha seleccionado ningua opcion del select hijo
// se muestra el mensaje de "seleccine un item" (del select padre).
if (!empty($id_padre)){

$SQLconsulta_hija="SELECT * FROM tabla_hija WHERE id_padre='$id_padre'";
$consulta_hija mysql_query($SQLconsulta_hija,$conexion) or die(mysql_error());
// se mira el total de registros de la consulta .. si es 0 se muestra mensaje en el select ..
if (mysql_num_rows($consulta_hija) != 0){
While (
$registro_hija=mysql_fetch_assoc($consulta_hija))
{
echo 
"<option value=\"".$registro_hija['id']."\">".$registro_hija['item_texto']."</option>\n";
}
} else {
echo 
"<option value=\"\"> No hay registros para este Item </option>";
}
} else {
echo 
"<option value=\"\"> <-- Seleccione un Item </option>";
}

mysql_free_result($consulta_hija); // Liberar memoria usada por consulta.

echo "</select>\n\n";
echo 
"<input type=\"submit\" name=\"enviado\" value=\" Enviar \" >\n\n";
echo 
"</form>\n";
}
?>
  #2 (permalink)  
Antiguo 15/08/2003, 09:13
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 21 años, 5 meses
Puntos: 4
veo q usaste el consejo de q al escoger desde el select se recargaran los datos en el textarea correctamente.

ahora como veo q es una sola pag me imagino q al cambiar la opcion se procesa todo en la misma pag.

te sugiero:
1) crea 2 paginas
- para el fomulario
- otra el procesador

el formulario deberia contener estas condiciones:
* si la pag no a consultado ningun dato, mostrar el formulario en blanco (o con la informacion predeterminada).
* si a consultado datos, mostrar resultados en el textarea.
Nota1: Estos 2 primeros deben estar al principio de la pag para q capture las variables provenientes del procesador en el caso de q se hallan consultado datos
Nota2: Piensa en estos 2 elementos para cada elemento del form, no solo para el textarea, esto hara q puedas conservar los datos ya introducidos.
* y el submit ovbiamente, en este caso el select debe tener esa funcion (con javascript), de modo q mande TODOS los datos del formulario al procesador

ahora el procesador:
* debe capturar TODOS los datos y redirigir al formulario para mostrar los datos. Es bastante sencillo si usas GET para pasar los datos via URL, si kieres hacerlo más seguro, puedes usar POST, aunq no estoy muy seguro de como se pasan variables POST entre paginas sin usar formularios.

Con eso creo q deberia funcionar más optimamente, aunq igualmente se puede con una sola pag con todo el codigo, pero tendría q estar doblemente condicionado.
__________________
Blog | Tecnosquad
  #3 (permalink)  
Antiguo 19/08/2003, 09:32
Avatar de Slash  
Fecha de Ingreso: agosto-2003
Mensajes: 51
Antigüedad: 20 años, 8 meses
Puntos: 0
Eso lo pense, pero para no pasar las variables por get o post pense en utilizar cookies, pero de todas maneras por seguridad no las use.

Y con respecto a lo de pasar variables por post sin utilizar formularios es un buen tema para discusion
  #4 (permalink)  
Antiguo 22/08/2003, 21:38
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Para "seguridad" ya tienen las sesiones (ese es un tema interesante xDD)

Sobre el tema en concreto ...

Cita:
// si se ha pulsao el boton enviar ($enviado) se procesa el formulario ..
// Sino, se continua con el formulario y los nuevos valores de los Select ..
// OJO si se tienen mas varibles (mas <input> ) se van a perder sus valores a no ser
// que los obtengamos y se les de como valor inicial en el value= de cada uno segun corresponda.
Ahi lo menciono ...

sólo tienes que usar el campo value y predefinir su estado inicial con la variable que envies .. ejemplo:

Código PHP:
echo "<input type="text" name="nombre" value=\"".$_POST['nombre']."\">"
Y para otros objetos de formulario como "checkbox" o "radio buttons" tienes la propiedad de estos "checked" (de HTML) .. para que lo ajustes "si tiene tal valor .. -> checked" .. Los "select" ya puedes ver la técnica ahí mismo para predefinir su estado anterior (caso de la recarga que se origina de la página al cambiar alguno de estos valores ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 23/08/2003, 08:03
Avatar de Slash  
Fecha de Ingreso: agosto-2003
Mensajes: 51
Antigüedad: 20 años, 8 meses
Puntos: 0
Gracias lo solucione casi igual

Código PHP:
 <input name="nroid" type="hidden" id="nroid" value="<?php echo $fila["nroid"];?>
:)
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 21:14.