Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/01/2010, 04:59
dirik
 
Fecha de Ingreso: enero-2010
Mensajes: 2
Antigüedad: 14 años, 3 meses
Puntos: 0
Meter el resultado de un DOWHILE en un array

Hola amigo, tengo un gravisimo problema que tal vez sea simple pero que me esta quemando la cabeza. Voy explicando por puntos.
  • 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:
<?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);
}
?>
Lo que tengo que meter en la segunda variable $newContent es el resultado del siguiente DO WHILE:

Código:
<?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);
  }
?>
Agradezco desde ya tu ayuda!
Gracias de antemano!