Hola:
Cierta parte de mi aplicacion trata de
Agregar Productos a la BDD, para esto el formulario es cargado desde el mismo INDEX.PHP, de modo que parte importante del formulario es poder ubicar en una
sección de alguna
Categoria existente, he aqui donde entra la ayuda de
AJAX.
Basicamente AJAX me ayudara a generar rapidamente (sin refrescar la hoja) un nuevo select en donde estaran las
Secciones, para esto en el select de las
Categorias colocare la funcion de ajax mediante
onchange. Esto no me trae ningun problema, ya que una vez seleccionada la
Categoria del select, inmediatamente se carga otro select con las
Secciones correspondientes a dicha
Categoria elejida.
El
Problema surge al enviar el formulario (presionar el botn enviar), este boton realiza una accion del formulario enviando todo hacia la direccion
index.php?id=productos&mov=agregar_producto, vaya esto ya es puro PHP, AJAX solo nos ayudo a generar el SELECT de
Secciones, asi que, al momento de ir a
agregar_producto, no logro recepcionar el contenido del select generado con ajax.
Basicamente aqui utilizo dos select que son:
Categorias y
Secciones, la variable donde porto el contenido de
Categorias es
categoria_productos y la variable donde porto las
Secciones son:
seccion_producto.
De modo que
$_POST["seccion_producto"] no se genera o nose que sucede :S, pero no obtengo el valor de dicha variable.
Utilizo
Gentoo Linux, Apache y Firefox-3.
Para una mejor ilustracion aqui dejo mi codigo resumido:
INDEX.PHP
Código:
<?php
switch( $_GET["mov"] )
{
case 'agregar_producto':
echo "Categoria: ". $_POST["categoria_producto"];
echo "<br>sección: ". $_POST["seccion_producto"];
echo "<br>POST: ". count($_POST);
echo "<br>";
print_f($_POST);
break;
default:
echo "<form action=\"index.php?id=". $_GET["id"]. "&mov=agregar_producto\" method=\"POST\" enctype=\"multipart/form-data\">";
echo "<div id=\"formulario_producto_nuevo\">";
echo "Tipo de Prod.: <input type=\"radio\" name=\"tipo_producto\" value=\"1\" checked onclick=\"cargar_datos( 'id=". $_GET["id"]. "&mov=agregar_producto', 'formulario_producto_nuevo_lista', 'GET', '0' );\"> Normal";
echo "<input type=\"radio\" name=\"tipo_producto\" value=\"2\" onclick=\"cargar_datos( 'id=". $_GET["id"]. "&mov=agregar_producto&ver=1', 'formulario_producto_nuevo_lista', 'GET', '0' );\">Kit<br>";
echo "ID: <input type=\"text\" name=\"id_producto\"><br>";
echo "Cantidad: <input type=\"text\" name=\"cantidad_producto\" style=\"width:50px;\"> ";
echo "<select name=\"unidad_medida_producto\" style=\"width:120px;\">";
echo "<option value=\"error\"></option>";
$cons= consultar_enorden( "UNIDADES_MEDIDA", "ID" );
while( $buf= mysql_fetch_array($cons) )
echo "<option>". $buf["NOMBRE"]. "/". $buf["NOTACION"]. "</option>";
unset($buf);
unset($cons);
echo "</select>";
echo "<br>";
echo "Nombre del Prod.: <input type=\"text\" name=\"nombre_producto\"><br>";
echo "Precio Publico: <input type=\"text\" name=\"preciopublico_producto\"><br>";
echo "Categoria: <select name=\"categoria_producto\" onchange=\"cargar_datos( 'id=". $_GET["id"]. "&mov=mostrar_secciones&categoria_id='+this.value, 'mostrar_secciones', 'GET', '0' );\">";
echo "<option value=\"error\"></option>";
$cons= consultar_enorden( "MENUS", "ID" );
while( $buf= mysql_fetch_array($cons) )
echo "<option value=\"". $buf["ID"]. "\">". $buf["NOMBRE"]. "</option>";
unset($buf);
unset($cons);
echo "</select>";
echo "<div id=\"mostrar_secciones\"></div>";
echo "Descripcion:<br>";
echo "<textarea name=\"descripcion_producto\"></textarea><br>";
echo "<span style=\"font-size:10px;\">Solo se permite adjuntar imagenes: <b>*.jpg</b>, <b>*.png</b> y <b>*.gif</b>.</span>";
echo "<div id=\"formulario_producto_nuevo_imagenes\">";
echo "<input type=\"file\" name=\"imagen_productos01\" style=\"font-size:9px;\">";
echo "<input type=\"file\" name=\"imagen_productos02\" style=\"font-size:9px;\">";
echo "</div>";
echo "</div>";
echo "<div id=\"formulario_producto_nuevo_lista\">";
echo "</div>";
echo "<center>";
echo "<input type=\"submit\" value=\"Guardar Producto\" style=\"text-align:center;border:solid 1px black;font-family:verdana;font-size:12px;font-weight:bold;\">";
echo "</center>";
echo "</form>";
break;
}
?>
AJAX.PHP
Código:
<?php
/*####################################
###### MOSTRAR SECCIONES #####
## Muestra secciones en capa ##
######################################*/
else if( !strcmp( $_GET["mov"], "mostrar_secciones") )
{
$xcons= consultar_con( "MENUS", "ID='". $_GET["categoria_id"]. "'" );
$xbuf= mysql_fetch_array($xcons);
unset($xcons);
$cons_sec= consultar_enorden_con( "SECCIONES", "RELACION='". $xbuf["NOMBRE"]. "'", "ID" );
unset($xbuf);
echo "Secciones: <select name=\"seccion_producto\">";
echo "<option value=\"error\"></option>";
while( $buf_sec= mysql_fetch_array($cons_sec) )
echo "<option value=\"". $buf_sec["ID"]. "\">". $buf_sec["NOMBRE"]. "</option>";
echo "</select>";
unset($buf_sec);
unset($cons_sec);
}
?>
SCRIPT.js
Código:
//Funcion para obtener conector AJAX
function ajax()
{
var pagina=false; //conector ajax
if( window.XMLHttpRequest ) //Navegador Firefox
pagina= new XMLHttpRequest(); //creamos objeto para el navegador
else if( window.ActiveXObject ) //Navegador Internet Explorer
{
try //Version Actual
{
pagina= new ActiveXObject( "Msxml2.XMLHTTP" ); //creamos objeto para el navegador
}
catch(e) //version Antigua
{
try
{
pagina= new ActiveXObject( "Microsoft.XMLHTTP" ); //creamos objeto para el navegador
}
catch(e)
{
}
}
}
return pagina;
}
function cargar_datos( vars, capaview, flujoddatos, varsform )
{
var conector, capa, url;
url= 'ajax.php'; //mis funciones para ajax
capa= document.getElementById(capaview);
conector= ajax();
conector.open( flujoddatos, url+'?'+vars, true );
conector.onreadystatechange= function()
{
if( conector.readyState==1 )
{
capa.innerHTML= "<center><img src='../admin/imagenes/loading.gif'><br><b>CARGANDO...</b></center>";
}
else if( conector.readyState==4 )
{
if( conector.status==200 )
{
if( varsform!=0 )
conector.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" );
capa.innerHTML= conector.responseText;
}
else if( conector.status==404 )
{
capa.innerHTML= "La pagina que intentas cargar no existe...";
}
else
{
capa.innerHTML= conector.status;
}
}
}
//conector.setRequestHeader( "Content-Type", "multipart/form-data" );
if( varsform!=0 )
{
var myarr= varsform.split(':'); //dividimos
var trama="";
var i=0;
for( i=0; i<(myarr.length); i++ )
{
if( i>0 )
trama += "&";
trama += myarr[i]+"="+document.getElementById(myarr[i]).value;
}
alert(trama);
conector.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" );
conector.send(trama);
}
else
conector.send(null);
}