PDA

Ver la Versión Completa : Alinear campos en un select (comboBox).


mcalmanovici
19-09-2007, 16:03:30
Hola gente:
estuve buscando por todas las páginas del foro pero realmente no logro solucionar el problema que estoy teniendo. Si ya esta en algún otro hilo sepan disculpar.
Tengo el siguiente código que me va a desplegar en el comboBox "n" cantidad de campos:

<select class="cls_ComboBox2" name="inpIdNuevo">
<?php
$query = "select linea1, linea2, linea 3 from tabla1";
$rowset = mysql_query ($query,$db) or mysql_die("Error executing SQL query (ESN).");
//Carga el Combo
while ($row = mysql_fetch_row($rowset)){
echo "<option value='$row[0],$row[2]'>$row[0] - $row[1] - $row[2]</option>";
}
?>
</select>

Lo que yo quisiera poder hacer es que me queden alianeados las filas que se despliegan en el comboBox. Creo que con un ejemplo se entiende mejor:
supongamos que tengo tres registros con los sgtes datos:
1112 Barco nº 1 22/07/2007 20:00:05
11123654 Canoa de pique nº 4 23/07/2007 23:00:06
11204569879 Bote de remo en playa 25/07/2007 22:00:00

Cuando se despliegue el combo yo quisiera poder mostrarlo de la siguiente manera:
______11112__Barco nº 1___________22/07/2007 20:00:05
___11123654__Canoa de pique nº 4___23/07/2007 23:00:06
11204569879__Bote de remo en playa_25/07/2007 22:00:00

(entiendasen las "_" (guión bajo) como espacio en blanco)
Bueno, esto último es lo que no sé como lograr.

Desde ya muchas gracias a quien pueda ayudarme.
Saludos,
Mariano

D-MO
19-09-2007, 18:00:19
Que ya haya alguna forma oficial de hacerlo lo dudo mucho, mas bien creo que se deberá hacer a mano...

No le veo mucha dificultad, pero ahorita no tengo mucho tiempo, te doy la idea y mira si la puedes hacer, para dentro de unas horas si voy a tener un poco mas de tiempo y veré si te puedo hacer el código.

Lo que debes hacer es, con el array que recibes del la consulta, que te queda mas o menso así:

Cod Descripción Fecha
0 | 11112 Barco nº 1 22/07/2007 20:00:05
1 | 11123654 Canoa de pique nº 4 23/07/2007 23:00:06
2 |11204569879 Bote de remo en playa 25/07/2007 22:00:00



Lo primero que debes hacer es identificar que campo de la columna código es el mas largo, luego comparar el tamaño con cada uno de los otros campos y la diferencia será el número de veces que coloques "&nbsp;" antes del código, mas o menos así:

11204569879 = 11 caracteres
11123654 = 8 caracteres
Diferencia => 11 - 8=3

CampoCodigo = &nbsp;&nbsp;&nbsp;11123654


Haces lo mismo para cada uno, con la diferencia de que para el campo Descripción, la entidad "&nbsp;" debe ir al final del texto.


Creo que con eso ya te doy una idea de como hacerlo, intentalo y nos cuentas.

Si puedo mas tarde to pongo algo de código.

Saludos.

mcalmanovici
19-09-2007, 18:21:41
Primero muchas gracias por tu respuesta pero sigo teniendo problemas para encontrar la solución.
De la forma que vos me decís lo intente; te muestro el código:

<select class="cls_ComboBox2" name="inpIdNuevo">
<?php
$query = "select linea1, linea2, linea3 from table1";
$rowset = mysql_query ($query,$db) or mysql_die("Error executing SQL query (ESN).");
//Carga el Combo
while ($row = mysql_fetch_row($rowset))
{
//Tomo un máximo de 14 caracteres para la primer columna y 26 para
//la segunda.
$ESN = "";
$ESN = $row [0];
$SHIP = "";
$SHIP = $row [1];
$longESN = strlen ($ESN);
$longSHIP = strlen ($SHIP);
if ($longESN < 14)
{
$longAux = (14 - $longESN);
for ($i=0;$i<$longAux;$i++)
{
$ESN = "&nbsp".$ESN;
}
}
if ($longSHIP < 26)
{
$longAux = (26 - $longSHIP);
for ($i=0;$i<$longAux;$i++)
{
$SHIP = $SHIP."&nbsp";
}
}
echo "<option value='$row[0],$row[2]'> $ESN $SHIP $row[2] </option>";
}
?>
</select>


Con este código mejoró un poco pero cuando despliego el combo en vez de quedarme de la forma:

Cod Descripción Fecha
0 |11112-----------.Barco nº 1-----------------22/07/2007 20:00:05
1 |11123654---------Canoa de pique nº 4--------23/07/2007 23:00:06
2 |11204569879-----.Bote de remo en playa------25/07/2007 22:00:00


Me queda algo así:

Cod Descripción Fecha
0 |11112-------------Barco nº 1------------------22/07/2007 20:00:05
1 |11123654-----------Canoa de pique nº 4----------23/07/2007 23:00:06
2 |11204569879---------Bote de remo en playa----------25/07/2007 22:00:00


No sé si te ocurre algo para solucionarlo.... Desde ya mil gracias.....

Saludos.
Mariano.

D-MO
21-09-2007, 06:45:35
Prueba cambiando el tipo de fuente del select a "Courier", es probable que el problema sea porque algunos caracteres (como los "1") son mas angostos que los otros, courier es una de las fuentes que tiene todos los caracteres del mismo tamaño si no me equivoco.

111algo->Courier New
111algo->Verdana
¿Notas la diferencia?


Saludos.