Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/05/2010, 14:49
artehosting
 
Fecha de Ingreso: agosto-2009
Mensajes: 1
Antigüedad: 14 años, 8 meses
Puntos: 0
Guardar formulario con datos ajax en MySql usando PHP

Hola!

Estoy intentando guardar los datos de un formulario común y corriente, solo que hay 2 datos que vienen de MySql usando Ajax.

formulario.php
Cita:
<input name="txtCodigoPostal" type="text" class="FormsInputs" id="txtCodigoPostal" size="5" />
<a href="javascript:codigoPostal();">Llenar datos</a></td>
</tr>
<tr>
<th colspan="2" valign="middle" bgcolor="#CCCCCC">COLONIA / DELEGACI&Oacute;N</th>
<td align="left" valign="middle"><div id="divColonias">
<select name="selColonia" class="FormsInputs" id="selColonia">
<option value="no-save">Escriba el C&oacute;digo postal</option>
</select>
<select name="selDelegacion" class="FormsInputs" id="selDelegacion">
<option value="-1" selected="selected">Escriba el C&oacute;digo postal</option>
</select>
</div></td>
Al dar clic en "Llenar datos" se ejecuta la función codigoPostal() ubicada en:

GeneraColonias.js
Cita:
function objetoAjax(){
var xmlhttp=false;
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}catch (e){
try{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}catch (E){
xmlhttp = false;
}
}

if (!xmlhttp && typeof XMLHttpRequest!='undefined'){
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}

function codigoPostal(){
divResultado = document.getElementById('divColonias');
txtCodigoPostal = document.getElementById('txtCodigoPostal').value; //region

//referencia el objeto ajax, damos el metodo del objeto y el archivo
ajax = objetoAjax();
ajax.open("POST", "GeneraColonias.php", true);

ajax.onreadystatechange = function(){
if (ajax.readyState==4){
divResultado.innerHTML = ajax.responseText
}
}
ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//enviamos el valor correspondiente al archivo anteriormente referenciado
ajax.send("txtCodigoPostal="+txtCodigoPostal)
}
En formulario.php hay un div llamado "divColonias", al ejecutar la función, el contenido del mismo se sustituye por el contenido de:

GeneraColonias.php
Código PHP:
<?php
include("../cf/Connections/cf_manual_cp.php");
$txtCodigoPostal=$_REQUEST['txtCodigoPostal'];

$sql mysql_query("SELECT * FROM Asentamiento WHERE codigoPostal LIKE  '$txtCodigoPostal%' order by asentamientoNombre",$cn);
$sql2 mysql_query("SELECT * FROM Asentamiento WHERE codigoPostal LIKE  '$txtCodigoPostal%' order by asentamientoNombre",$cn);
?> 
<select name="selColonia" id="selColonia" class="FormsInputs">
<?php 
                
while ($damefila=mysql_fetch_array($sql))
                {
                
?>
                <option value="<?php echo $damefila['id_asentamiento']; ?>"><?php echo htmlentities (trim($damefila['asentamientoTipo'])); ?> <?php echo htmlentities (trim($damefila['asentamientoNombre'])); ?> no guarda.</option>
                <?php }?>
</select>
<select name="selDelegacion" id="selDelegacion" class="FormsInputs" >
<?php 
                
while ($damefila=mysql_fetch_array($sql2))
                {
                
?>
                <option value="<?php echo $damefila['id_asentamiento']; ?>"><?php echo htmlentities (trim($damefila['AsentamientoDelegacion'])); ?></option>
                <?php }?>
</select>
Hasta aquí todo funciona a la perfección, se despliegan los nombres de colonia y delegación perfectamente, el problema es que cuando guardo el formulario en MySql no se guardan los datos en la base. Cabe mencionar que el formulario es de casi 50 campos, todos los demás se guardan perfectamente pero los provenientes del Ajax No.

Gracias por su valiosa ayuda!