Saludos compañer@s,
Tengo una función php que utiliza xajaxResponse() para actualizar un formulario rellenando los correspondientes campos con los valores extraidos de una base de datos SQL Server.
El Select * from ....... está testeado con SQL Server Management Studio y el resultado es correcto.
Cuando escribo los registros (totales o según un id dado) en una tabla XHTML, me los carga bastante bien (tarda unos 3/4 segundos aproximadamente en rellenar una tabla de 8.300 registros).
Pero cuando utilizo xajax para actualizar un formulario, en algunos registros de la base de datos me rellena todo el formulario y en otros no.
Es decir: en algunos casos el formulario no rellena los campos del nombre del cliente, problema o solución (son los únicos campos que en determinados registros salen vacíos)
He probado de rellenar el formulario directamente sin utilizar xajax y funciona ok, pero me gustaría evitar "el pantallazo" de recargar toda la página entera.
El código que "intenta" rellenar el formulario es el siguiente:
Código PHP:
function ActualitzaFormulari($numSat)
{
// instancio el objecte resposta
$resposta = new xajaxResponse();
// conecto amb la base de dades
$conn = Conecta("Ordres");
// consulta SQL SERVER
$sql = "SELECT codigo, dataentra, nomclient, telefon, mod_extern, problema, solucio FROM ordres WHERE codigo = ".$numSat;
// executo el SQL
$res = odbc_exec($conn, $sql);
// Inicialitzo els camps del formulari
while($row = odbc_fetch_array($res))
{
// escric la consulta sql a la capa
//$resposta->assign("mostraSQL", 'innerHTML', $sql);
$codi = $numSat;
$client = $row['nomclient'];
$data = substr($row['dataentra'], 8, 2)."/".substr($row['dataentra'], 5, 2)."/".substr($row['dataentra'], 0, 4);
$telefon = $row['telefon'];
$equip = $row['mod_extern'];
$averia = $row['problema'];
$reparacio = $row['solucio'];
}
odbc_close($conn);
// buido la capa on es mostraben les suggerencies
$resposta->assign("missatge", "innerHTML", "");
// i la amago
$resposta->replace("missatge", "style.visibility", "visible", "hidden");
// finalment omplo el formulari
$resposta->assign("codigo", "value", $codi);
$resposta->assign("dataentra", 'value', $data);
$resposta->assign("nomclient", 'value', $client);
$resposta->assign("telefon", 'value', $telefon);
$resposta->assign("mod_extern", 'value', $equip);
$resposta->assign("problema", 'innerHTML', $averia);
$resposta->assign("solucio", 'innerHTML', $reparacio);
return $resposta;
}
Para testear este "efecto poltergeist", he probado diferentes metodologías de trabajo:
- cambiar el ODBC empleado (no funciona)
- cargar el formulario sin usar 'xajax' (si funciona, pero no mola)
- visitar xajax.org (no me ha servido)
- visitar msdn (me ha servido aún menos)
Tan solo me queda pedir socorro (después de más de 12 horas de pelea con este temita)
Si alguién ha sufrido este
efecto de "esconder datos" y ha conseguido resolverlo, agradecería me echara una mano sin que fuera al cuello
Muchas gracias de antemano