Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/07/2011, 03:35
Mago_de_Oz
 
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