Foros del Web » Programando para Internet » PHP »

Se puede Formulario dentro de formulario???

Estas en el tema de Se puede Formulario dentro de formulario??? en el foro de PHP en Foros del Web. Estoy realizando una gestión de administrador sobre artistas, discos y canciones. Me sirvió de mucho la FAQ sobre combos enlazados. De echo funciona a la ...
  #1 (permalink)  
Antiguo 23/08/2004, 06:07
 
Fecha de Ingreso: noviembre-2002
Mensajes: 130
Antigüedad: 21 años, 5 meses
Puntos: 0
Se puede Formulario dentro de formulario???

Estoy realizando una gestión de administrador sobre artistas, discos y canciones.
Me sirvió de mucho la FAQ sobre combos enlazados. De echo funciona a la perfección.
Ahora bien, (y siendo sinceros os diré que soy algo novato en PHP) veo que cuando hago el onChange del <select> me lanza a la paginna2.php y me vuelve a cargar la página con la selección. Lo hace mediante el form.
Yo tengo un form general donde cargo ademas la fecha del disco, la nacionalidad, etc y eso esta dentro del formulario general.
Mi pregunta es:
¿Como puedo hacer para que cuando clique el boton de submit me añada este nuevo registro de canción en la base de datos Temas.
No se si me explico bien.
Si tienen dudas sobre lo escrito intentaré explicarme mejor.

Gracias
  #2 (permalink)  
Antiguo 23/08/2004, 06:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Se trata de que incluyas tus actuales campos de tu formulario en el ejemplo, justo en el else del if () .. bajo el <form> </form> donde están los otros combos ..

El ejemplo de la FAQ mencionada ya gestiona cuando el script es enviado a si mismo (recargar la página) para "pedir" el siguiente combo enlazado (previa consulta a la BD) e identifica cuando usastes el botón "submit" para enviar el resultado de esos combos (y resto de campos de formulario que ahí indiques)

EL proceso que ya tienes PHP de crearción de tu registro en tu BD (almacenar esos datos) .. lo debes incluir donde se indica:
// Procesar el formulario ...

El problema principal que tendrás será que vas a "perder" los valores que antes tenían tus otros elmentos del formulario si cambias algún <select> (combo) por el hecho de recargar la página .. para eso .. como a ese mismo script le envias todo tu formulario .. sólo tendrás que tomar dicho valor y aplicarlo como valor pre-establecido en los <input> que tengas ..

Código PHP:
<input name="ejemplo" value="<? echo $_POST['ejemplo'?>">
Para los que no sepan de que FAQ se está hablando:
http://www.forosdelweb.com/showthrea...999#post664999

Un saludo,
  #3 (permalink)  
Antiguo 23/08/2004, 08:10
 
Fecha de Ingreso: noviembre-2002
Mensajes: 130
Antigüedad: 21 años, 5 meses
Puntos: 0
Gracias por la respuesta Cluster,
voy a ver si me salgo con ello.

Aunque no me quedo muy claro lo de:

"El problema principal que tendrás será que vas a "perder" los valores que antes tenían tus otros elmentos del formulario si cambias algún <select> (combo) por el hecho de recargar la página .. para eso .. como a ese mismo script le envias todo tu formulario .. sólo tendrás que tomar dicho valor y aplicarlo como valor pre-establecido en los <input> que tengas .."

Si justamente cuando realizado el cambio de artista y me selecciona todos los discos del artista (en este mommento se ha actualizado la pagina), el UPDATE donde lo coloco :

en:
// Procesar el formulario ... ?
  #4 (permalink)  
Antiguo 23/08/2004, 08:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
El problema principal que tendrás será que vas a "perder" los valores que antes tenían tus otros elmentos del formulario si cambias algún <select> (combo) por el hecho de recargar la página .. para eso .. como a ese mismo script le envias todo tu formulario .. sólo tendrás que tomar dicho valor y aplicarlo como valor pre-establecido en los <input> que tengas .."
Ya te puse el ejemplo sólo tienes que usar la propiedad "Value" de tus <input> (elementos del formulario).

Cita:
Si justamente cuando realizado el cambio de artista y me selecciona todos los discos del artista (en este mommento se ha actualizado la pagina), el UPDATE donde lo coloco :
Si, ahí mismo .. bajo ese if(){ ....}

Un saludo,
  #5 (permalink)  
Antiguo 23/08/2004, 08:58
 
Fecha de Ingreso: noviembre-2002
Mensajes: 130
Antigüedad: 21 años, 5 meses
Puntos: 0
Disculpar la insistencia, pero no hay manera de que se actualiza la Base de datos.

Coloco este codigo donde me dijiste Cluster, y no me añade nada.
Ahora hago simplemente pruebas con estos dos campos (el id_padre y el id_hija)


if (!$id_padre || !$id_hija){
$res_str = "POR FAVOR, RELLENAR TODOS LOS CAMPOS";
} else {
$sql = "insert into temas (id_padre, id_hija) VALUES ('$id_padre', '$id_hija')";

mysql_query($sql);
$res = mysql_affected_rows();
if($res > 0) {
$res_str="SE HA AÑADIDO UN NUEVO ALBUM EN LA BASE DE DATOS.";
} else {
$res_str = "ERROR!!, NO SE HA PODIDO AÑADIR EL ALBUM A LA BASE DE DATOS.";
}
}

Seguro que estoy haciendo algo mal. Ya hos dije que era algo novato en esto.
  #6 (permalink)  
Antiguo 23/08/2004, 09:19
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pon el código completo que uses (usa el botón "PHP" para indicar tu código y que salga coloreado ..)

Y sobre todo .. usa los arrays superglobales: $_POST, $_GET .. etc como en el ejemplo ... (en las FAQ's de este foro PHP de las primeras tienes una explicación al respecto).

Usa:

Código PHP:
} else { 
// para comprobar que tus variables tengan valor (insisto que debes usar $_POST .. o lo que corresponda.
echo $id_padre." --> ".$id_hija;
$sql "insert into temas (id_padre, id_hija) VALUES ('$id_padre', '$id_hija')"
Un saludo,
  #7 (permalink)  
Antiguo 23/08/2004, 09:51
 
Fecha de Ingreso: noviembre-2002
Mensajes: 130
Antigüedad: 21 años, 5 meses
Puntos: 0
Si ya me llegan los valores, el problema que tengo es que no me inserta el nuevo dato en la base de datos. Y ya no se por donde mirar.
De todas formas gracias por seguir alli y echarme una ayudita.

ahí va el codigo, a ver si así...


Código PHP:
<? include('../../../conexion.php'); 
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']; 

        
$sql "insert into temas (id_artista_tema, id_disco) VALUES ('$id_padre', '$id_hija')"

} else { 

   
$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 artistas"
   
$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_artista']){ 
         echo 
"<option value=\"".$registro_padre['id_artista']."\" selected>".$registro_padre['nombre']."</option>\n"
      } else { 
         echo 
"<option value=\"".$registro_padre['id_artista']."\">".$registro_padre['nombre']."</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 discos WHERE id_artista_disco='$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_disco']."\">".$registro_hija['tit_disco']."</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"


?>
<br>
<? echo $res_str?>

Última edición por Faser; 23/08/2004 a las 09:54
  #8 (permalink)  
Antiguo 23/08/2004, 13:23
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Bueno .. pusistes tu $sql .. pero no lo ejecutas:

Código PHP:
$sql "insert into temas (id_artista_tema, id_disco) VALUES ('$id_padre', '$id_hija')"
mysql_query($sql) or die (mysql_error()); 
Un saludo,
  #9 (permalink)  
Antiguo 23/08/2004, 13:42
 
Fecha de Ingreso: noviembre-2002
Mensajes: 130
Antigüedad: 21 años, 5 meses
Puntos: 0
Por fin lo conseguí.

Me di cuenta al ir a dar una vuelta y refrescar la mente.
Tienes toda la razón del mundo Cluster.
Una cosa tan simple como esta. Hay días que es mejor no levantarse....

Muchísimas gracias por tu constancia.

Un saludo y hasta pronto
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 19:24.