PDA

Ver la Versión Completa : Al cargar datos del formulario se cortan los valores con mas de una palabra


aom
03-01-2005, 17:50:19
Hola,
trabajo con un formulario y la mecánica es la siguiente:
- El formulario se envía a si mismo y en él verifico si hay errores. Si los hay, muestro los campos del formulario y aqui tengo un problema. En los campos de tipo edición únicamente aparece la primera palabra si tiene varias.
Utilizo la clase smarty para trabajar con plantillas y los datos del formulario los guardo en la clase cliente

P.Ej: El nombre es "Manolito Gafotas"
Si muestro los datos de esta forma:
$smarty->assign('VALOR_NOMBRE',"\"$cliente->nombre\"");
El campo contiene "Manolito Gafotas"
En cambio, si los muestro de esta otra:
$smarty->assign('VALOR_NOMBRE',$cliente->nombre);
El campo contiene "Manolito"
Si muestro el valor de la propiedad nombre
echo($cliente->nombre);
esta contiene "Manolito Gafotas"

No es un gran problema el tener que mostrar los campos de esta forma:
$smarty->assign('VALOR_NOMBRE',"\"$cliente->nombre\"");
Pero por legibilidad me gusta más la otra.
Por último os comento que este problema me había ocurrido sin trabajar con plantillas, asi que no es un problema de estas.
¿Por qué no aparece todo el campo?

Gracias

roman
03-01-2005, 18:03:27
No teniendo ni idea de lo que se supone que hace la clase smarty ni su método Assign es difícil saber qué pasa. Pero si dices que lo mismo te ha sucedido sin plantillas ¿por qué no pones un ejemplo del fallo con código simple de php?

// Saludos

aom
03-01-2005, 18:14:15
Disculpa Roman, tienes razon :( . Es que tenia más a mano el ejemplo que he puesto.

En este caso ocurre lo mismo:

<td colspan="3"><input name="Nombre" type="text" class="InputReadOnly" id="Nombre" size="50" readonly="true"<?php echo (" value=\"$R->TOMADOR \">")?></td>


$R es un registro de una base de datos
El valor de $R->TOMADOR es , por ejemplo, "Manolito Gafotas" y muestra "Manolito Gafotas"

Si lo dejo asi

<td colspan="3"><input name="Nombre" type="text" class="InputReadOnly" id="Nombre" size="50" readonly="true"<?php echo (" value=".$R->TOMADOR .">")?></td>

muestra únicamente "Manolito"

Gracias

roman
03-01-2005, 18:29:44
En el código incorrecto, la llamada a echo produce la siguiente salida:

value=Manolito Gafotas>

de manera que el navegador interpreta que el valor del parámetro value es simplemente Manolito y toma a Gafotas como otro parámetro.

Te quedaría más claro y correcto si lo haces así:


<input name="Nombre" type="text" value="<?=$R->TOMADOR?>">


es decir, dejando que php se ocupe sólo de poner el valor y no el resto del código html.

// Saludos

aom
03-01-2005, 18:53:02
Hola Roman,gracias por las molestias.
De nuevo te pido disculpas, porque el código que estaba mal lo puse de memoria. De todas formas, me aclaraste las ideas y ya se donde está el error.

Al componer la cadena value="XXXXX" no escribía las comillas y por eso cortaba lo que había a partir del espacio (value=Manolito Gafotas)
Yo pensando que podría ser un bug de php o algo raro y resulta que era una tonteria que no veia. :)

Gracias