Foros del Web » Programando para Internet » PHP »

Problema combo box

Estas en el tema de Problema combo box en el foro de PHP en Foros del Web. Hola a todos, amigos de foros del web tengo un gran problema que me aqueja. Me voy a explicar lo más claro que sea posible ...
  #1 (permalink)  
Antiguo 23/04/2010, 14:41
Avatar de dquispe  
Fecha de Ingreso: mayo-2009
Ubicación: Lima
Mensajes: 232
Antigüedad: 14 años, 11 meses
Puntos: 0
Problema combo box

Hola a todos, amigos de foros del web tengo un gran problema que me aqueja.
Me voy a explicar lo más claro que sea posible tengo dos tablas una llamada celulares y otra llamada modelos.
Resulta que quiero mostrar en una página el código del modelo.
Adjunto imagen para que me puedan entender.

http://www.imaxenes.com/imagen/codig...df.jpg.html###

Eso está muy bien en si es lo que deseo.

El detalle esta que cuando quiero editar me debería mostrar la descripción de dicho modelo.

http://www.imaxenes.com/imagen/descr...7n.jpg.html###
Pero se muestra el código del modelo.
Eso se debe a que guardo el código del modelo en mi tabla celular.

Pongo el código de creación de mis tablas.
CREATE TABLE `celulares` (
`num_celular` varchar(9) NOT NULL,
`num_rpm` varchar(7) NOT NULL,
`nombre` varchar(80) NOT NULL,
`codigo_ot` varchar(9) NOT NULL,
`serie_equipo` varchar(15) NOT NULL,
`cod_modelo` varchar(35) NOT NULL,
`localidad` varchar(30) NOT NULL,
`estado` varchar(35) NOT NULL,
`fecha_ultcambio` date NOT NULL,
`cod_unidad` varchar(9) NOT NULL,
`serie_chip` varchar(19) default NULL,
`fecha_alta` date NOT NULL,
`observaciones` varchar(50) default NULL,
`fecha_internamiento` date default NULL,
`averia` varchar(200) default NULL,
`diagnostico` varchar(200) default NULL,
`orden_st` varchar(20) default NULL,
`fecha_recojo` date default NULL,
`limite_credito` decimal(16,16) default NULL,
`persona_recoge` varchar(200) default NULL,
`documento` varchar(200) default NULL,
`user_sesion` varchar(35) default NULL,
PRIMARY KEY (`num_celular`),
KEY `cod_modelo` (`cod_modelo`),
KEY `cod_delegacion` (`codigo_ot`),
KEY `cod_unidad` (`cod_unidad`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
-- ----------------------------
CREATE TABLE `modelos` (
`cod_modelo` varchar(100) NOT NULL,
`descripcion_modelo` varchar(200) default NULL,
`user_sesion` varchar(35) default NULL,
PRIMARY KEY (`cod_modelo`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


Ahora mi código de la pagina donde atrapo el valor del código para mostrar el código del modelo correspondiente.
$x=$val_celular[0]["num_celular"];

Este es el código cuando le doy editar aquí me muestra el código del modelo grabado en mi tabala celulares.

Pongo mi código en el cual muestro el código dependiendo del celular que le corresponda.

<select name="cbomodelose" id="cbomodelose">
<?php
echo "<option>-- Seleecione</option>";
$rmo=mysql_query("Select * from modelos order by cod_modelo");
while($fila_mo=mysql_fetch_array($rmo)){
echo "<option value='$fila_mo[0]'>$fila_mo[1]</option>";
}
$mod=mysql_query("Select cod_modelo from celulares where num_celular=".$x);
while ($row_modelo=mysql_fetch_array($mod)) {
$modelo = $row_modelo["cod_modelo"];
echo "<option value=\"$modelo\"";
//ponemos el que esté seleccionado
if ($cbomodcel==$cbomodcel_seleccionado) { echo "selected"; }
echo ">$modelo</option>";}

?>
</select></td>
Mi gran dilema es como poder mostrar la descripción del modelo basándome en el código del modelo que tengo guardado en mi tabla celular y grabar solo el código del modelo.

Creo que eso es una consulta cruzada o algo así favor de ayudarme por fis que es todo una nota todo esto.
En si me debería quedar así cuando muestro todos los registros debe aparecer el código del modelo.

Eso sucede pero cuando edito me debe aparecer la descripción de dicho modelo y no el código
Como puedo solucionar esto.
Debería quedar algo así.

http://www.imaxenes.com/imagen/ok1wu63r3.jpg.html###
Mostrándome la descripción de dicho modelo dependiendo del número de celular atrapado.
  #2 (permalink)  
Antiguo 23/04/2010, 17:54
Avatar de DjMiki  
Fecha de Ingreso: octubre-2007
Ubicación: Paijan - Trujillo - La Libertad
Mensajes: 90
Antigüedad: 16 años, 6 meses
Puntos: 2
Respuesta: Problema combo box

Bueno creo que te estas complicando, ya que no es necesario que agas dos veces simplemente, con listar todos los modelos y que aparesca seleccionado el modelo que esta actualmente en tu registro.
Comparas de esta forma.
Código PHP:
Ver original
  1. // Select que lista los datos del registro del celular especificado
  2. echo $selec= ($fila_mo[0]==$fila_cel[5])?"selected":"";

Pero mi recomendacion es que relaciones tus tablas, y eso es lo mas dable cuando trabajas con base de datos ya que q el campo o la informacion no estaria redundada, solo tendrias que relacionarlas por codigo y con eso podrias obtener los datos de la segunda tabla.
Bueno quizas te dejo un ejemplo de como arias la relacion en SQL.
Código MySQL:
Ver original
  1. CREATE  TABLE `celulares` (
  2. -- Tus Campos
  3. codmodelo varchar(100) NOT NULL, -- campo donde ira el codigo del modelo,TIPO igual al campo en la tabla "MODELOS"
  4. FOREIGN KEY (`codmodelo` ) -- Campo que creamos y el cual relacionamos
  5.     REFERENCES `modelos` (`cod_modelo` ) -- el campo a donde se relacionara
  6.     ON DELETE CASCADE -- OPCIONAL si quieres colocas esto el cual significa que cuando borres un modelo se borraran todos los celulares dentro de ese modelo
  7.     ON UPDATE NO ACTION -- OPCIONAL si quieres colocas esto el cual significa que cuando ACTUALICES un modelo se actualizaran todos los celulares dentro de ese modelo
  8. )
  9. }

Y para el codigo en PHP seria con este codigo SQL
Código MySQL:
Ver original
  1. SELECT *.c, cod_modelo.m,descripcion_modelo.m FROM celulares AS c, modelos AS m WHERE codmodelo.c = cod_modelo.m

Puedes leer mas en
http://dev.mysql.com/doc/refman/5.0/...nstraints.html
tambien
http://www.maestrosdelweb.com/editorial/tutsql1/

Espero haberte ayudado y no complicado mas..
  #3 (permalink)  
Antiguo 24/04/2010, 13:12
Avatar de dquispe  
Fecha de Ingreso: mayo-2009
Ubicación: Lima
Mensajes: 232
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Problema combo box

Gracias a todos ya se arreglo el problema era tipo consulta cruzada, pongo el codigo haber si ha alguien le puede servir.

Me sirvio de mucho.

<?php
$rmo=mysql_query("Select * from modelos order by cod_modelo");
while($fila_mo=mysql_fetch_array($rmo)){
echo "<option value='$fila_mo[0]'>$fila_mo[1]</option>";

//primero aqui relleno el combo
}
$mod=mysql_query("SELECT c.num_celular, m.cod_modelo, m.descripcion_modelo
FROM celulares c
INNER JOIN modelos m ON c.cod_modelo = m.cod_modelo
WHERE c.num_celular=".$x);
//despues con esa consulta se cual modelo es atrapado
while ($row_modelo=mysql_fetch_array($mod)) {
//aqui muestro la descripcion de dicho modelo
$modelo = $row_modelo["descripcion_modelo"];
echo "<option value=\"$modelo\"";
//ponemos el que esté seleccionado
if ($cbomodcel==$cbomodcel_seleccionado) { echo "selected"; }
echo ">$modelo</option>";}

Etiquetas: box, combo
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 22:35.