Foros del Web » Programando para Internet » PHP »

¿Como tomar mediante PHP el valor de un combo (<select>) que se ha cargado por AJAX?

Estas en el tema de ¿Como tomar mediante PHP el valor de un combo (<select>) que se ha cargado por AJAX? en el foro de PHP en Foros del Web. Quisiera hacerlo sin utilizar jQuery ni XAJAX, lo que intento hacer es simple tengo un combo-box con los países (traídos de una base de datos) ...
  #1 (permalink)  
Antiguo 19/11/2011, 17:59
 
Fecha de Ingreso: noviembre-2011
Mensajes: 7
Antigüedad: 12 años, 5 meses
Puntos: 0
Pregunta ¿Como tomar mediante PHP el valor de un combo (<select>) que se ha cargado por AJAX?

Quisiera hacerlo sin utilizar jQuery ni XAJAX, lo que intento hacer es simple tengo un combo-box con los países (traídos de una base de datos) y segun la selección del usuario se carga otro con las provincias. Esto lo pude hacer, mi problema es cuando se da submit al formulario guarda en la base de datos el pais pero no la provincia, tambien me ocurre con JavaScript que en el chequeo de si los campos fueron completados (es decir si se eligió un país y una provincia) solo toma en cuenta el pais.
Aquí está lo que escribí en el formulario.php:
<?php
//Primero conexión al servidor y base de datos($conex) y la query que captura los paises($sql)
$res = mysql_query($sql, $conex);
?>
<html>
<head>
<script type="text/javascript">
function CheckForm(){
var campo1= document.getElementById('pais').value;
var campo2=document.getElementById('provinci…
var error= false;
var mensaje = "Atención seleccione: \n";
if(campo1=="0"){
mensaje = mensaje + "País";
error= true;
}
if(campo2=="0"){
mensaje = mensaje + "Provincia";
error=true;
}
if(error){
window.alert(mensaje);
}else{ document.getElementById('paisForm').subm…
}
}

//AJAX para la provincia en
function loadProv(pais){
if(pais=="0"){
document.getElementById('provdiv').inner…
}

if(window.XMLHttpRequest){ //Codigo para IE7+, Firefox, Chrome, Opera, Safari
xmlhttp= new XMLHttpRequest();
}else{ //Codigo para IE6-
xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
}

xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById("provdiv").inner…
}
}
xmlhttp.open("GET","provincia.php?pais="… pais, true);
xmlhttp.send();
}

</script>
<body>
<form id="paisForm" action="ingresopais.php" method="POST">
Pais:<select onchange="loadProv(this.value);" name="PAIS" id="pais">
<option value="0">Seleccionar</option>
<?php while($row = mysql_fetch_array($res)){
echo "<option value='$row[idpais]'>$row[Pais]</option>…
} ?>
</select>
Provincia:<div id="provdiv"></div>
<input type="button" value="Ingresar" onclick="CheckForm();" />
</form>

Eso sería el formulario, despues el archivo provincia.php al que recurre el AJAX:
<?php
//Primero conexión al servidor y base de datos($conex)
//Captura del pais elegido
$pais=$_GET["pais"];
//Captura de las provincias del pais elegido($sql)
$res=mysql_query($sql, $conex);

if($row=mysql_fetch_array($res)!=""){
echo "<select id='provincia' name='PROVINCIA'>";
echo "<option value='0'>Seleccionar</option>\n";
while($row=mysql_fetch_array($res)){
echo "<option value= '$row[idProv]'>$row[Provincia]</option>\…
}
echo "</select>\n";
}else{
echo "";
}

?>

Finalmente el archivo ingresopais.php al que envia los datos el formulario:
//Primero conexión al servidor y base de datos($conex)
$pais= $_POST["PAIS"];
$prov= $_POST["PROVINCIA"];
//Y luego el ingreso del pais y provincia elegidos por el usuario en su perfil, el usuario es identificado por una cookie que se le pone al ingresar a su perfil.

En fin eso es lo que tengo, despues de tanta cosa repito mi problema, al dar el submit los datos de la provincia no son capturados y no ingresan en la base de datos, mientras que los del país si lo hacen. Tampoco se chequea si una provincia fue seleccionada en el JavaScript.
Seguramente debe de haber una sencilla forma de hacerlo, ya busque en varios lados y no encontre respuesta.
Desde ya muchas gracias por su tiempo!!!
  #2 (permalink)  
Antiguo 19/11/2011, 18:26
Avatar de zeuslife  
Fecha de Ingreso: enero-2008
Ubicación: Madrid
Mensajes: 533
Antigüedad: 16 años, 3 meses
Puntos: 11
Respuesta: ¿Como tomar mediante PHP el valor de un combo (<select>) que se ha cargado

Pregunta: ¿Lo haces en ajax base porque si, o tienes la posibilidad de utilizar un framework (como jquery), que te facilitaria muchisimo el trabajo?
__________________
Neversyn Software e Ingeniería
  #3 (permalink)  
Antiguo 19/11/2011, 18:46
 
Fecha de Ingreso: noviembre-2011
Mensajes: 7
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: ¿Como tomar mediante PHP el valor de un combo (<select>) que se ha cargado

Cita:
Iniciado por zeuslife Ver Mensaje
Pregunta: ¿Lo haces en ajax base porque si, o tienes la posibilidad de utilizar un framework (como jquery), que te facilitaria muchisimo el trabajo?
La verdad es que no me manejo con jquery, pero aprendere próximamente, sabes ¿como solucionar esto? Muchas gracias
  #4 (permalink)  
Antiguo 19/11/2011, 18:58
Avatar de zeuslife  
Fecha de Ingreso: enero-2008
Ubicación: Madrid
Mensajes: 533
Antigüedad: 16 años, 3 meses
Puntos: 11
Respuesta: ¿Como tomar mediante PHP el valor de un combo (<select>) que se ha cargado

Es que yo he hecho hace poco algo similar, por eso te digo... mira, te dejo este tutorial donde paso a paso te explican como hacer desplegables dependientes, que es lo que tu quieres:
http://www.miguelmanchego.com/2009/c...s-ajax-jquery/
__________________
Neversyn Software e Ingeniería
  #5 (permalink)  
Antiguo 19/11/2011, 19:01
Avatar de zeuslife  
Fecha de Ingreso: enero-2008
Ubicación: Madrid
Mensajes: 533
Antigüedad: 16 años, 3 meses
Puntos: 11
Respuesta: ¿Como tomar mediante PHP el valor de un combo (<select>) que se ha cargado

Por cierto, es posible que el ajax no te funcione por problemas con la caché, estaría bien que en la petición get enviases también un valor cambiante siempre, y que desactivases la caché, no es muy amiga de ajax xD
__________________
Neversyn Software e Ingeniería
  #6 (permalink)  
Antiguo 19/11/2011, 19:18
 
Fecha de Ingreso: noviembre-2011
Mensajes: 7
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: ¿Como tomar mediante PHP el valor de un combo (<select>) que se ha cargado

Vi el link y otros posts similares en la página, sin embargo no creo que me ayuden ya que es basicamente lo mismo pero usando jquery. A mi el combo dependiente se me carga correctamente, ese no es el problema.
El problema es cuando quiero ingresar los datos seleccionados en el formulario no toma (captura) el valor del combo dependiente.
Por lo que me guarda(inserta) en la base de datos el pais pero no la provincia. Es como si el form no tomara en cuenta la información cargada mediante AJAX. No se si me estoy haciendo entender...
  #7 (permalink)  
Antiguo 19/11/2011, 19:37
Avatar de zeuslife  
Fecha de Ingreso: enero-2008
Ubicación: Madrid
Mensajes: 533
Antigüedad: 16 años, 3 meses
Puntos: 11
Respuesta: ¿Como tomar mediante PHP el valor de un combo (<select>) que se ha cargado

Vale, prueba esta otra cosa. En vez de cargar en un div el select entero, carga lo que son los campos, las distintas opciones a elegir dentro del select. Ya que es posible que no te recoja el valor del select, porque lo coje como que no existe, al ser una carga externa el select, no sé si me explico. Pruebalo así y me dices ;)
__________________
Neversyn Software e Ingeniería
  #8 (permalink)  
Antiguo 19/11/2011, 20:56
 
Fecha de Ingreso: noviembre-2011
Mensajes: 7
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: ¿Como tomar mediante PHP el valor de un combo (<select>) que se ha cargado

Muchas gracias, esa fue la solución!!!! Bien finalmente puedo seguir, hace dias que vengo arrastrando esto. Gracias por tu tiempo
  #9 (permalink)  
Antiguo 20/11/2011, 04:03
Avatar de zeuslife  
Fecha de Ingreso: enero-2008
Ubicación: Madrid
Mensajes: 533
Antigüedad: 16 años, 3 meses
Puntos: 11
Respuesta: ¿Como tomar mediante PHP el valor de un combo (<select>) que se ha cargado

Nada, que vaya bien, buena suerte!! ;)
__________________
Neversyn Software e Ingeniería

Etiquetas: javascript, php+ajax+formularios
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 15:22.