Foros del Web » Creando para Internet » Diseño web »

Html y Php en formulario juntos

Estas en el tema de Html y Php en formulario juntos en el foro de Diseño web en Foros del Web. Tengo el siguiente problema: un formulario de registro combinado de html y php, el php ejecuta 2 combobox dinamicos, más abajo continuo el formulario con ...
  #1 (permalink)  
Antiguo 13/07/2011, 03:35
 
Fecha de Ingreso: julio-2011
Mensajes: 17
Antigüedad: 12 años, 9 meses
Puntos: 0
Exclamación Html y Php en formulario juntos

Tengo el siguiente problema: un formulario de registro combinado de html y php, el php ejecuta 2 combobox dinamicos, más abajo continuo el formulario con html, lo de malo es que al elegir un dato en los combobox dinamicos se ejecuta toda la página y no me deja llenar los campos hechos en html por lo cual mi boton submit que está al final del formualrio ya no sirve como hago para solucionar ese problema?

Este es un script que estoy armando con varias ayudas que encontre aca:
<!DO CTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<form action="procesar.php" enctype="multipart/form-data" method="post">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
<link rel="stylesheet" type="text/css" href="css/base.css"/>
</head>

<body>
<p class="titulo">PUBLICAR UN NUEVO AVISO</p>
<hr />

<?php
// datos de conexion a la BD.
$servidor ="localhost"; // host
$usuario ="sionsyst_alvin";
$clave ="abc";
$basedatos ="sionsyst_clasificados"; // 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['idCategoria']."<br>";
echo "Recibido id_tabla_hija: ".$_POST['idCategoria'];

} 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['idCategoria'];

// 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=\"idCategoria\" onChange=\"this.form.submit()\">\n";
echo "<option value=\"\"> Seleccione un Item </option>\n";

$SQLconsulta_padre="SELECT * FROM categorias";
$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['idCategoria']){
echo "<option value=\"".$registro_padre['idCategoria']."\" selected>".$registro_padre['nombre']."</option>\n";
} else {
echo "<option value=\"".$registro_padre['idCategoria']."\">".$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 subcategorias WHERE idCategoria='$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['idCategoria']."\">".$registro_hija['nombre']."</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";
}

?>

<span class="labels">Localización: </span><br />

<?php
$con="SELECT nombre FROM localizaciones";
$res=@mysql_query($con);
if(!$res){
echo "falló";
}
else{
echo "<select name='select1' style='width:155px'>";
while ($fila=mysql_fetch_array($res)){
echo "<option>", $fila['nombre'], "</option>";
}
echo "</select>";
}
?>
<br />
<span class="labels">Ciudad, provincia, estado o distrito:</span>
<br />
<input name="lugar" type="text" id="lugar" size="40" />
<br />
</p>
<p><span class="labels">Título:</span><br />
<input name="titulo" type="text" id="titulo" size="50" />
<span class="labels">Precio:</span>
<input name="precio" type="text" id="precio" size="20" />
</p>
<p><span class="labels">Descripción:(*)</span><br />
<label for="descripcion"></label>
<textarea name="descripcion" id="descripcion" cols="65 " rows="10"></textarea>
</p>
<p class="labels">Nombre:<br />
<label for="nombre"></label>
<input type="text" name="nombre" id="nombre" size="40" />
<br />
Email:<br />
<input type="text" name="email" id="email" size="30" />
(debe ser un email real para validar su anuncio)<br />
Teléfono: <br />
<input type="text" name="telefono" id="telefono" />
</p>
<p> <INPUT type="hidden" name="lim_tamano" value="65000">
<label for="imagen" class="labels">Foto 1:</label>
<input id="imagen" name="imagen" size="30" type="file" /><br>

<INPUT type="hidden" name="lim_tamano2" value="65000">
<label for="imagen2" class="labels">Foto 2:</label>
<input id="imagen2" name="imagen2" size="30" type="file" /><br>

<INPUT type="hidden" name="lim_tamano3" value="65000">
<label for="imagen3" class="labels">Foto 3:</label>
<input id="imagen3" name="imagen3" size="30" type="file" />
<br />
<span class="labels"><strong>Nota:</strong> las imágenes deben ser de tipo jpg y deben tener un tamaño máximo de 70Kb</span></p>
<p class="labels">Todos los campos con deben ser llenados obligatoriamente a excepción de las imágenes puede colocar de 1 a 3 dependiendo del usuario<br>
<br>
<input name="submit" type="submit" value="Publicar" />&nbsp;</p>
</body>
</html>

Lo que quiero que es que no ejecute el archivo procesar.php hasta que haya hecho clic en el botoón publicar (al final del formulario) pero ni bien elijo una opción en mi combobox se salta a ejecutar procesar.php.

Desde ya les agradezco la ayuda es urgente
  #2 (permalink)  
Antiguo 13/07/2011, 05:41
Avatar de xikipinki  
Fecha de Ingreso: julio-2011
Ubicación: Barcelona
Mensajes: 22
Antigüedad: 12 años, 9 meses
Puntos: 3
Respuesta: Html y Php en formulario juntos

si quieres qque el formulario no se envie hasta que se completen todos los datos, quitale esto al combo box onChange=\"this.form.submit()
<select name=\"idCategoria\" onChange=\"this.form.submit()\">\n";
esto lo que hace es que cuando seleccionas un registro de la lista se envia el formulario por eso no te da tiempo a completar el resto

abajjo tienes un boton submit que enviara todos los datos del formulario por method=post (asi tienes configurado tu formulario fijate) de manera que podras recoger los datos luego con $_POST['name']
  #3 (permalink)  
Antiguo 13/07/2011, 14:02
 
Fecha de Ingreso: julio-2011
Mensajes: 17
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Html y Php en formulario juntos

Gracias xikipinki pero si anulo onChange=\"this.form.submit()\">\n"; mis otros combobox no se recargan porque estoy usando combobox anidados es decir cuando seleccionas una opcion de un combobox, los otros dos jalan de la base de datos en mysql sus valores, espero que m puedan dar otra opcion
  #4 (permalink)  
Antiguo 13/07/2011, 14:16
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 389
Antigüedad: 13 años, 1 mes
Puntos: 16
Respuesta: Html y Php en formulario juntos

El problema es que PHP trabaja del lado servidor. y siempre es necesario reenviar el formulario para poder hacer los selects dependientes. Yo te recomiendo lo hagas mejor con javaScript. de modo que no tengas que recargar la pagina al seleccionar el seleccionar el padre. para que se llene el hijo.... Es mejor que hagas la consulta completa. llenes unos arreglos en javascript y hagas los selects dependientes con javascript. Ademas asi es mas eficiente. pues este se ejecuta del lado servidor. (imagina que estas usando el sistema con una conexion lenta...... durará mucho en cargar el select hijo si lo hacs con php). :D
  #5 (permalink)  
Antiguo 14/07/2011, 05:15
Avatar de xikipinki  
Fecha de Ingreso: julio-2011
Ubicación: Barcelona
Mensajes: 22
Antigüedad: 12 años, 9 meses
Puntos: 3
Respuesta: Html y Php en formulario juntos

exacto, juto lo que dice el, pon un onchange pero que actue por javascript y en el momento que elija un elemento, te cargue otro combobox
  #6 (permalink)  
Antiguo 14/07/2011, 19:43
 
Fecha de Ingreso: julio-2011
Mensajes: 17
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Html y Php en formulario juntos

Bueno esa seria una solución y les agradezco pero no se nada de javascript donde puedo encontrar un ejemplo o como podría cambiar mi codigo?... Por favor les agradecere su ayuda
  #7 (permalink)  
Antiguo 18/07/2011, 10:01
 
Fecha de Ingreso: julio-2011
Mensajes: 17
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Html y Php en formulario juntos

Gracias por su ayuda encontre la solución, ahora lo que deseo es saber como puedo capturar loas datos que salen en mis combobox en variables que luego pùeda almacenar en otra tabla de mysql.... gracias por la ayuda esperare su ayuda porfa...
  #8 (permalink)  
Antiguo 18/07/2011, 11:39
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 389
Antigüedad: 13 años, 1 mes
Puntos: 16
Respuesta: Html y Php en formulario juntos

No se si no entendi la pregunta. Si preguntas por capturar el valor del combo se lo asginas con el atributo value="valorAadquirir" y lo capturas del otro lado por post o por get. luego armas el query con las variables y ejecutas la sentencia con mysql_query()
  #9 (permalink)  
Antiguo 14/08/2011, 08:20
 
Fecha de Ingreso: julio-2011
Mensajes: 17
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Html y Php en formulario juntos

Si pero lo que yo quiero es capturar el valor de $row["nombre"] de este select

Código PHP:
 echo "<option value=".$row["idCategoria"].">".$row["nombre"]."</option>"
pero cuando uso el post me muestra o imprime el $row["idCategoria"]
Resumiendo me imprime su id o indice de la tabla (un numero por su puesto) y no el valor del nombre que yo quiero en si (como por ejemplo "Chile")
  #10 (permalink)  
Antiguo 14/08/2011, 15:09
Avatar de cristian_db  
Fecha de Ingreso: julio-2009
Mensajes: 105
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: Html y Php en formulario juntos

pero es que cuando haces esto:

Código PHP:
Ver original
  1. echo "<option value=".$row["idCategoria"].">".$row["nombre"]."</option>";

el valor que estas pasando es $row["idCategoria"], si queres pasar el nombre, tienes que poner $row["nombre"] dentro del value, ya que al colocarlo fuera simplemente sirve para que aparezca en la pantalla, pero la información que se pasa es el id.
Saludos!
  #11 (permalink)  
Antiguo 15/08/2011, 14:14
 
Fecha de Ingreso: julio-2011
Mensajes: 17
Antigüedad: 12 años, 9 meses
Puntos: 0
Pregunta Respuesta: Html y Php en formulario juntos

Cristian_db gracias por la respuesta: pero lamentablemente lo necesito de esa forma ya que el value del select lo necesito para en base a ese indice generar los combobox dinámicos y además de ese value necesito capturar el contenido del select mismo (que no es lo mismo que el value ya que como es un indice es numerico y no me sirve) para pasarlo a otra tabla ese es mi problema a ver si me puedes ayudar en eso desde ya muchas gracias
  #12 (permalink)  
Antiguo 15/08/2011, 16:23
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Html y Php en formulario juntos

Cita:
Iniciado por Mago_de_Oz Ver Mensaje
Gracias xikipinki pero si anulo onChange=\"this.form.submit()\">\n"; mis otros combobox no se recargan porque estoy usando combobox anidados es decir cuando seleccionas una opcion de un combobox, los otros dos jalan de la base de datos en mysql sus valores, espero que m puedan dar otra opcion
entonces puedes implementar AJAX, de esa forma solo recargas el select dependiente sin necesidad de recargar toda tu página
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #13 (permalink)  
Antiguo 16/08/2011, 05:17
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 389
Antigüedad: 13 años, 1 mes
Puntos: 16
Respuesta: Html y Php en formulario juntos

ok. perdona a ver si entendi. necesitas ese nombre en la misma pagina o lo necesitas en una pagina posterior? porque si es en la misma pagina puedes acceder tanto al value como al nombre directamente con javascript.
  #14 (permalink)  
Antiguo 17/08/2011, 04:11
 
Fecha de Ingreso: julio-2011
Mensajes: 17
Antigüedad: 12 años, 9 meses
Puntos: 0
Sonrisa Respuesta: Html y Php en formulario juntos

Gracias por su ayuda amigos, la verdad seguí sus consejos y lo solucione con ayuda de Javascript (tuve que aprender) pero sirvió si no era por ustedes estaba perdido, por favor pido al moderador que cierre este tema

Etiquetas: css, html, página, php, formulario
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 16:29.