Foros del Web » Programando para Internet » PHP »

Optiongroup de select

Estas en el tema de Optiongroup de select en el foro de PHP en Foros del Web. Código PHP: <?php  include  '../controllers/conexion.php' ; $query  =  "SELECT td.TDOC_CODI, td.TDOC_NOMB, pa.TDOC_NOMB as PADRE           FROM csto_tdoc td           INNER JOIN csto_tdoc pa ON pa.TDOC_CODI = td.TDOC_PADR           ORDER BY PADRE desc" ; $result  =  mysql_query ( $query );          ?> <select name="unmane">      <?php       ...
  #1 (permalink)  
Antiguo 28/08/2011, 12:59
 
Fecha de Ingreso: marzo-2009
Mensajes: 356
Antigüedad: 15 años, 1 mes
Puntos: 7
Optiongroup de select

Código PHP:
<?php 
include '../controllers/conexion.php';

$query "SELECT td.TDOC_CODI, td.TDOC_NOMB, pa.TDOC_NOMB as PADRE
          FROM csto_tdoc td
          INNER JOIN csto_tdoc pa ON pa.TDOC_CODI = td.TDOC_PADR
          ORDER BY PADRE desc"
;
$result mysql_query($query);
        
?>

<select name="unmane">
    <?php 
    
while($fila mysql_fetch_assoc($result)) { ?>
        
        <? if( $fila['PADRE'] == 'Ingreso'){ ?>
            
            <optgroup label='<?php echo $fila['PADRE']; ?>'>
                <option value="3"><?php echo $fila['TDOC_NOMB']; ?></option>
            </optgroup>
        <?php ?>
            
        <?php if( $fila['PADRE'] == 'Egreso'){ ?>
        <optgroup label='<?php echo $fila['PADRE']; ?>'>
            <option value="3"><?php echo $fila['TDOC_NOMB']; ?></option>
        </optgroup>
        <?php ?>        
    <?php ?>
   
</select>
Hola amigos, como puedo hacer para q no me repita la option group a cada rato, lo que quiero hacer es lo siguiente

Ingreso
- Ingreso1
- Ingreso2
- Ingreso3
- Ingreso4
Egreso
-Egreso1
-Egreso2
-Egreso3
-Egreso4

Actualmente me muestra

Ingreso
- Ingreso1
Ingreso
- Ingreso2
Ingreso
- Ingreso3
Ingreso
- Ingreso4
Egreso
-Egreso1
Egreso
-Egreso2
Egreso
-Egreso3
Egreso
-Egreso4


como puedo solucionarlo, alguien q me ayude
  #2 (permalink)  
Antiguo 28/08/2011, 13:48
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Optiongroup de select

y bueno estas poniendo todo junto, hace esto:
Código PHP:
Ver original
  1. <select name="unmane">
  2.     <?php
  3.     while($fila = mysql_fetch_object($result)) { ?>
  4.        
  5.         <? if( $fila['PADRE'] == 'Ingreso'){
  6.                $INGRESO = ' <option value="3"><?php echo $fila->TDOC_NOMB; ?></option>';
  7.          } ?>
  8.            
  9.         <?php if( $fila['PADRE'] == 'Egreso'){
  10.                         $EGRESO = ' <option value="3"><?php echo $fila->TDOC_NOMB; ?></option>';
  11.  
  12.  } ?>        
  13.     <?php } ?>
  14.             <optgroup label='Ingreso'>
  15.     <?php echo $INGRESO; ?>
  16.             </optgroup>
  17.         <optgroup label='Egreso'>
  18.     <?php echo $EGRESO; ?>
  19.         </optgroup>
  20.    
  21. </select>
  #3 (permalink)  
Antiguo 28/08/2011, 14:15
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Optiongroup de select

También puedes hacer ésto:
Código PHP:
Ver original
  1. <?php
  2. $bar = null;
  3. while($fila = mysql_fetch_assoc($result)) { ?>
  4.    
  5.     <?php if (($fila['PADRE'] == 'Ingreso' && $bar != 'Ingreso') || ($fila['PADRE'] == 'Egreso' && $bar != 'Egreso')) { ?>
  6.         <optgroup label='<?php echo $fila['PADRE']; ?>'>
  7.             <option value="3"><?php echo $fila['TDOC_NOMB']; ?></option>
  8.         </optgroup>
  9.     <?php
  10.     $bar = $fila["PADRE"];
  11.     }elseif (($fila['PADRE'] == 'Ingreso' && $bar == 'Ingreso') || ($fila['PADRE'] == 'Egreso' && $bar == 'Egreso')){ ?>
  12.         <optgroup label='<?php echo $fila['PADRE']; ?>'>
  13.             <option value="3"><?php echo $fila['TDOC_NOMB']; ?></option>
  14.         </optgroup>
  15.     <?php $bar = $fila["PADRE"];
  16.     }
  17.     ?>
  18. <?php } ?>
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #4 (permalink)  
Antiguo 28/08/2011, 17:04
 
Fecha de Ingreso: marzo-2009
Mensajes: 356
Antigüedad: 15 años, 1 mes
Puntos: 7
Respuesta: Optiongroup de select

Probe los 2 tipos y los 2 son incorrectos, el segundo es igual al mio y el primero solo muestra la primera fila
Patriarka, tu metodo es bueno, pero solo almacena el primer option, estoy tratando q hacer q almacene todos, pero no logro hacerlo.

Última edición por dante14; 28/08/2011 a las 17:32
  #5 (permalink)  
Antiguo 28/08/2011, 18:04
Avatar de gachon  
Fecha de Ingreso: septiembre-2004
Ubicación: En Google
Mensajes: 462
Antigüedad: 19 años, 7 meses
Puntos: 3
Respuesta: Optiongroup de select

Si has probado a ordenar tanto por padre como por nombre y no te funciona, Ejemplo:

ORDER BY PADRE,TDOC_NOMB desc

Entonces Una solucion rapida seria hacer otro cosulta y otro while dentro del optgruop del select

Código PHP:
Ver original
  1. $query2 = "SELECT lo que sea WHERE PADRE=$fila['padre'];
  2.           ORDER BY TDOC_NOMB desc";
  3.  
  4. $result2 = mysql_query($query2);
  5.  
  6. <optgroup label='<?php echo $fila['PADRE']; ?>'>
  7. <? while($filanombre=mysql_fetch_array($result2)){?>
  8.             <option value="3"><?php echo $filanombre['TDOC_NOMB']; ?></option>
  9. <?}?>
  10.         </optgroup>
De otra forma no se hacerlo

saludos y espero que te sirva

Última edición por gachon; 28/08/2011 a las 18:14
  #6 (permalink)  
Antiguo 29/08/2011, 00:37
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Optiongroup de select

Bueno una opción sería separar primero los ingresos y los egresos usando arrays y luego imprimir el html como quieras para no tener que hacer 2 consultas:

Código PHP:
Ver original
  1. <?php
  2. include '../controllers/conexion.php';
  3. $query = "SELECT td.TDOC_CODI, td.TDOC_NOMB, pa.TDOC_NOMB as PADRE
  4.          FROM csto_tdoc td
  5.          INNER JOIN csto_tdoc pa ON pa.TDOC_CODI = td.TDOC_PADR
  6.          ORDER BY PADRE desc";
  7. $result = mysql_query($query);
  8. $ingresos = array();
  9. $egresos = array();
  10. while ($fila = mysql_fetch_assoc($result)) {
  11.     if ($fila['PADRE'] == 'Ingreso') {
  12.         $ingresos[] = $fila['TDOC_NOMB'];
  13.     }
  14.     if ($fila['PADRE'] == 'Egreso') {
  15.         $egresos[] = $fila['TDOC_NOMB'];
  16.     }
  17. }
  18. echo '<select name="unmane">';
  19. echo '<optgroup label="ingresos">';
  20. foreach ($ingresos as $ingreso) {
  21.     echo '<option value="3">' . $ingreso . '</option>';
  22. }
  23. echo '</optgroup>';
  24. echo '<optgroup label="egresos">';
  25. foreach ($egresos as $egreso) {
  26.     echo '<option value="3">' . $egreso . '</option>';
  27. }
  28. echo '</optgroup>';
  29. echo '</select>';
  30. ?>

PD: ten en cuenta el value...
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Etiquetas: mysql, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:32.