- Estoy haciendo dos combos dependientes (marcas de auto y modelos de auto)
- Los datos provienen de una base de datos MySQL
- El combo con los modelos de auto se debe actualiza con AJAX, para eso utilizo XAJAX.
- Hice la prueba de funcionamiento de XAJAX y funciona bien cuando introduzco datos manuales. El combo se actualiza sin problemas al cambiar el combo con las marcas.
- El tema es que (y aqui radica el problema) el combo con los modelos de auto lo hice con dreamweaver utilizando el generador de juego de registros que trae integrado. Y para mostrar todos los registros utiliza un DO WHILE para las etiquetas <option>. Ahora bien, tengo que meter el resultado de ese DO WHILE, es decir, todas las etiquetas <option> generadas dentro de un array que luego XAJAX utiliza para actualizar el DIV contenedor.
- El otro tema es que las etiquetas <option> estan fuera del bloque de codigo PHP por lo que si lo dejo tal cual como está, la presencia del DO me cierra la funcion que estoy creando antes de terminarla y se vuelve a abrir con el WHILE. ¿Como hago para meter el resultado del DO WHILE dentro de la variable para el array?.
- Les dejo el codigo completo como para que puedan verlo mejor.
Código:
Lo que tengo que meter en la segunda variable $newContent es el resultado del siguiente DO WHILE:<?php function buscarModelos($vMarca) { require_once ("Connections/airedb.php") if (!function_exists("GetSQLValueString")) { function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") { if (PHP_VERSION < 6) { $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue; } $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue); switch ($theType) { case "text": $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; break; case "long": case "int": $theValue = ($theValue != "") ? intval($theValue) : "NULL"; break; case "double": $theValue = ($theValue != "") ? doubleval($theValue) : "NULL"; break; case "date": $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; break; case "defined": $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue; break; } return $theValue; } } $colname_reg_vmodelos = "-1"; if (isset($vMarca)) { $colname_reg_vmodelos = $vMarca; } mysql_select_db($database_airedb, $airedb); $query_reg_vmodelos = sprintf("SELECT * FROM vehiculos_modelos WHERE name = %s ORDER BY name ASC", GetSQLValueString($colname_reg_vmodelos, "text")); $reg_vmodelos = mysql_query($query_reg_vmodelos, $airedb) or die(mysql_error()); $row_reg_vmodelos = mysql_fetch_assoc($reg_vmodelos); $totalRows_reg_vmodelos = mysql_num_rows($reg_vmodelos); // Buscar los modelos segun la marca de vehiculo y asignar el resultado a $newContent $newContent = '<select name="vModelo" id="vModelo">'; $newContent .= ACA ES DONDE TENGO EL PROBLEMA; $newContent .= '</select>'; // Instanciar un nuevo objeto de AJAX $objResponse = new xajaxResponse(); // Agregar un comando para asignar el resultado de $newContent al elemento con ID vModelo $objResponse->assign("ajaxModelo","innerHTML", $newContent); // Retornar repuesta de AJAX return $objResponse; mysql_free_result($reg_vmodelos); } ?>
Código:
Agradezco desde ya tu ayuda!<?php do { ?> <option value="<?php echo $row_reg_vmodelos['ID']?>"><?php echo $row_reg_vmodelos['name']?></option> <?php } while ($row_reg_vmodelos = mysql_fetch_assoc($reg_vmodelos)); $rows = mysql_num_rows($reg_vmodelos); if($rows > 0) { mysql_data_seek($reg_vmodelos, 0); $row_reg_vmodelos = mysql_fetch_assoc($reg_vmodelos); } ?>
Gracias de antemano!