Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-09-2007
mcalmanovici mcalmanovici is offline
Miembro
 
Registrado: jun 2006
Posts: 78
Poder: 18
mcalmanovici Va por buen camino
Alinear campos en un select (comboBox).

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:
Código PHP:
         <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

Última edición por mcalmanovici fecha: 19-09-2007 a las 17:07:49.
Responder Con Cita
  #2  
Antiguo 19-09-2007
Avatar de D-MO
D-MO D-MO is offline
Miembro
 
Registrado: ago 2005
Ubicación: root@debian:/#
Posts: 1.042
Poder: 20
D-MO Va por buen camino
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í:
Código:
            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í:
Código:
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.

Última edición por D-MO fecha: 19-09-2007 a las 19:03:04.
Responder Con Cita
  #3  
Antiguo 19-09-2007
mcalmanovici mcalmanovici is offline
Miembro
 
Registrado: jun 2006
Posts: 78
Poder: 18
mcalmanovici Va por buen camino
Un poco mejor pero no del todo...

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:
Código PHP:
<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:
Código:
           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í:
Código:
           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.

Última edición por mcalmanovici fecha: 19-09-2007 a las 19:28:01.
Responder Con Cita
  #4  
Antiguo 21-09-2007
Avatar de D-MO
D-MO D-MO is offline
Miembro
 
Registrado: ago 2005
Ubicación: root@debian:/#
Posts: 1.042
Poder: 20
D-MO Va por buen camino
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.

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


Saludos.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
2 campos en 1 combobox amadis OOP 7 23-02-2012 01:03:27
un Select max de varios campos Camilo SQL 3 07-09-2007 17:34:15
Llenar un combobox con los campos de una tabla enecumene Conexión con bases de datos 6 07-03-2007 22:42:28
select que me mueste los campos de una tabla cahosoft Oracle 1 01-10-2004 01:02:54
agregar campos en combobox @-Soft Conexión con bases de datos 4 24-02-2004 14:00:23


La franja horaria es GMT +2. Ahora son las 09:18:47.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi