Foros del Web » Programando para Internet » PHP »

Llenar combo con datos del MYSQl y datos Originales.

Estas en el tema de Llenar combo con datos del MYSQl y datos Originales. en el foro de PHP en Foros del Web. Tengo un problema que necesito resolver. Tengo un formularrio donde registros proyectos, en dichos proyectos manejo unas FASES, que para mostrarla y que el usuario ...
  #1 (permalink)  
Antiguo 08/11/2011, 16:25
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Llenar combo con datos del MYSQl y datos Originales.

Tengo un problema que necesito resolver.

Tengo un formularrio donde registros proyectos, en dichos proyectos manejo unas FASES, que para mostrarla y que el usuario escoja una use un campo SELECT...

en eso no tengo problema...

ahora en el sistema anadi una opcion de Editar y cuando me toca editar los Proyectos para mostrar la FASE uso el mismo Select de esta manera:

Código HTML:
Ver original
  1. <select name="fase" class="campo" id="fase">
  2.       <option value="<?PHP echo $row_Proyecto['fase']; ?>"><?PHP echo $row_Proyecto['fase']; ?></option>
  3.       <option value="FASE - I">FASE - I</option>
  4.       <option value="FASE - II">FASE - II</option>
  5.       <option value="TRABAJO DE GRADO">TRABAJO DE GRADO</option>
  6.     </select>

entonces me hace que me repite 1 fase (LA FASE que selecciona de la lista de proyecto, y las 2 fases originales)
(Por ejemplo el Proyecto X esta en FASE I y en el Select me sale: FASE - I, FASE - I, FASE - II)...

Mi pregunta es hay una manera de que este combo no me repita los valores? osea que el valor seleccionado sea el valor que resiba de la BD y las demas opciones de la lista sean los valores restantes?

es que es un problema que tengo no solo en ese Select si no en otros mas...

Espero haberme Explicado Bien y que alquien me ayude un poco...

Gracias.!
  #2 (permalink)  
Antiguo 08/11/2011, 16:37
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Llenar combo con datos del MYSQl y datos Originales.

Claro, en las FAQs del foro y por todo el foro esta más que explicado, lo que tienes que hacer es revisar que la opción que quieres seleccionar y agregarle el atributo selected="selected" al que quieras seleccionar.

Por ejemplo, no es lo más optimo pero funciona:
Código PHP:
Ver original
  1. <select name="fase" class="campo" id="fase">
  2.       <option value="FASE - I" <?php if ($row_Proyecto['fase'] == "FASE - I") { ?>selected="selected"<?php } ?>>FASE - I</option>
  3.       <option value="FASE - II">FASE - II</option>
  4.       <option value="TRABAJO DE GRADO">TRABAJO DE GRADO</option>
  5.     </select>

Así por cada option, aunque lo ideal es que automatices ese proceso a lo mejor con un array para que no tengas que poner el if en cada <option>.

Saludos.
  #3 (permalink)  
Antiguo 09/11/2011, 07:16
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Respuesta: Llenar combo con datos del MYSQl y datos Originales.

Cita:
Iniciado por GatorV Ver Mensaje
Claro, en las FAQs del foro y por todo el foro esta más que explicado, lo que tienes que hacer es revisar que la opción que quieres seleccionar y agregarle el atributo selected="selected" al que quieras seleccionar.

Por ejemplo, no es lo más optimo pero funciona:
Código PHP:
Ver original
  1. <select name="fase" class="campo" id="fase">
  2.       <option value="FASE - I" <?php if ($row_Proyecto['fase'] == "FASE - I") { ?>selected="selected"<?php } ?>>FASE - I</option>
  3.       <option value="FASE - II">FASE - II</option>
  4.       <option value="TRABAJO DE GRADO">TRABAJO DE GRADO</option>
  5.     </select>

Así por cada option, aunque lo ideal es que automatices ese proceso a lo mejor con un array para que no tengas que poner el if en cada <option>.

Saludos.
Muchas gracias Gastorv una vez mas me has ayudado, me gustaria que me guiaras para encontrar la opcion automatizada es que busque en google y no encontre y supongo que fue que no supe buscaar bien...

Pero el codigo que me has dado me parece excelente...
  #4 (permalink)  
Antiguo 09/11/2011, 09:41
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Llenar combo con datos del MYSQl y datos Originales.

Simplemente crear una función que te ayude a crear de forma más rápida todo eso, por ejemplo:
Código PHP:
Ver original
  1. function drawSelect($name, $selected, $options) {
  2.     $sHTML = '<select name="%1$s">%2$s</select>';
  3.     $sOptionTemplate = '<option value="%s"%s>%s</option>';
  4.     $aOptions = array();
  5.    
  6.     foreach ($options as $value => $menu) {
  7.         $sSelected = ($selected == $value) ? ' selected="selected"' : '';
  8.         $aOptions[] = sprintf($sOptionTemplate, $value, $sSelected, $menu);
  9.     }
  10.    
  11.     return $sReturn = sprintf($sHTML, $name, implode("\n", $aOptions));
  12. }

Así puedes hacer algo así:
Código PHP:
Ver original
  1. $options = array(
  2.     'I' => 'Fase I',
  3.     'II' => 'Fase II',
  4.     'III' => 'Fase III',
  5. );
  6. echo drawSelect('fases', $row['fase'], $options);

Saludos.
  #5 (permalink)  
Antiguo 21/11/2011, 07:54
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Respuesta: Llenar combo con datos del MYSQl y datos Originales.

Cita:
Iniciado por GatorV Ver Mensaje
Simplemente crear una función que te ayude a crear de forma más rápida todo eso, por ejemplo:
Código PHP:
Ver original
  1. function drawSelect($name, $selected, $options) {
  2.     $sHTML = '<select name="%1$s">%2$s</select>';
  3.     $sOptionTemplate = '<option value="%s"%s>%s</option>';
  4.     $aOptions = array();
  5.    
  6.     foreach ($options as $value => $menu) {
  7.         $sSelected = ($selected == $value) ? ' selected="selected"' : '';
  8.         $aOptions[] = sprintf($sOptionTemplate, $value, $sSelected, $menu);
  9.     }
  10.    
  11.     return $sReturn = sprintf($sHTML, $name, implode("\n", $aOptions));
  12. }

Así puedes hacer algo así:
Código PHP:
Ver original
  1. $options = array(
  2.     'I' => 'Fase I',
  3.     'II' => 'Fase II',
  4.     'III' => 'Fase III',
  5. );
  6. echo drawSelect('fases', $row['fase'], $options);

Saludos.
Estube ausente un poco, mira probe ese codigo y en el echo el muestra es FASE - I / FASE - II, pero no me muestra de primero la opcion que aparece en la bd :(

Etiquetas: combo, mysql, registro, usuarios
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 04:25.