Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > HTML, Javascript y otros
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 07-03-2007
gulurulu gulurulu is offline
Registrado
 
Registrado: mar 2007
Posts: 4
Poder: 0
gulurulu Va por buen camino
Help Cayetano xD

Buenas Kayetano,

me ha parecido muy interesante el codi que as posteado mas que nada por que a mi no me interesa hacerlo con AJAX ya que me da mas trabajo y no me importa el refresco.

Lo unico que al intentar adaptar tu codigo a lo que quiero que me salga por pantalla no me sale bien

Tengo el primer combo marca y segun marca escoje modelos.

Estan dentro de la misma tabla "cars"

Código PHP:
<?PHP
include 'conexion.php';
conectar();
?>
<form action="" method="post" name="form">
  Marca:
    <select name="idmarca" onchange="cambiaModel(this.value, this.form.F_idmodel )">
    <option value="0">- Seleccione -</option>
<?PHP
    $qMarca 
mysql_query "SELECT DISTINCT marca FROM cars" ) or die (mysql_error());
    while ( 
$rMarca mysql_fetch_array($qMarca ) ) {
?>
        <option value="<?=$rMarca["marca"]?>"><?=$rMarca["marca"]?></option>
<?PHP     }    ?>
</select>
  <br>
Model: 
<select name="F_idmodel" disabled>
    <option value="0">- Seleccione -</option>
</select>
</form>
<script language="javascript" type="text/javascript">
    var arrayModel = Array();
<?PHP
    $modelActiva 
"";
    
$qmodel mysql_query"SELECT DISTINCT model FROM car WHERE marca = '$marca'");
    while( 
$rModel mysql_fetch_array$qmodel )) {
        if( 
$modelActiva !=  $rMoldel["model"] ) {
            
$modelActiva $rModel["model"];
            echo 
"\tarrayMoldel[$modelActiva] = Array();\n";
            
$x 1;
        }
        echo 
"\tarrayModel[$modelActiva][".$x++."] = new Option('".$rModel["model"]."', "$rModel[""] ." );\n";
    }  
?>
    function cambiaModel(marca, model) {
       if(marca > 0) {
          model.disabled = false;
          model.length = 1;
          for ( x in arrayModel[marca] )
              model.options[x] = arrayModel[marca][x];
       } else {
          model.length = 1;
          model.disabled = true;
       }
    }
</script>
LLevo 3 dias con esto y no me salgo... una ayudita please?

El error (mirando el codigo fuente de la pag) que me sale es:

Código PHP:
Warning</b>:  mysql_fetch_array(): supplied argument is not a valid MySQL result resource on... line 28 

Última edición por gulurulu fecha: 07-03-2007 a las 00:41:00.
Responder Con Cita
  #2  
Antiguo 07-03-2007
gulurulu gulurulu is offline
Registrado
 
Registrado: mar 2007
Posts: 4
Poder: 0
gulurulu Va por buen camino
Ya esta... He arreglado lo de antes... era una maldita 's' lo que pasa es que ahora no se me activa el segundo combo...

Código PHP:
<?PHP
include 'conexion.php';
conectar();
?>
<form action="" method="post" name="form">
  Marca:
    <select name="idmarca" onchange="cambiaModel(this.value, this.form.F_idmodel )">
    <option value="0">- Seleccione -</option>
<?PHP
    $qMarca 
mysql_query "SELECT DISTINCT marca FROM cars" ) or die (mysql_error());
    while ( 
$rMarca mysql_fetch_array($qMarca ) ) {
?>
        <option value="<?=$rMarca["marca"]?>"><?=$rMarca["marca"]?></option>
<?PHP     }    ?>
</select>
  <br>
Model: 
<select name="F_idmodel" disabled>
    <option value="0">- Seleccione -</option>
</select>
</form>

<script language="javascript" type="text/javascript">
    var arrayModel = Array();
<?
    $modelActiva 
"";
    
$qmodel mysql_query"SELECT * FROM cars");
    while( 
$rModel mysql_fetch_array$qmodel )) {
        if( 
$modelActiva !=  $rMoldel["marca"] ) {
            
$modelActiva $rModel["marca"];
            echo 
"\tarrayMoldel[$modelActiva] = Array();\n";
            
$x 1;
        }
        echo 
"\tarrayModel[$modelActiva][".$x++."] = new Option('".$rModel["model"]."', "$rModel["marca"] ." );\n";
    }  
?>
    function cambiaModel(marca, model) {
       if(marca > 0) {
          model.disabled = false;
          model.length = 1;
          for ( x in arrayModel[marca] )
              model.options[x] = arrayModel[marca][x];
       } else {
          model.length = 1;
          model.disabled = true;
       }
    }
</script>
Codigo fuente de la pag:
Código PHP:
<form action="" method="post" name="form">
  
Marca:
    <
select name="idmarca" onchange="cambiaModel(this.value, this.form.F_idmodel )">
    <
option value="0">- Seleccione -</option>
        <
option value="OPEL">OPEL</option>
        <
option value="AUDI">AUDI</option>
        <
option value="PEUGEOT">PEUGEOT</option>
</
select>

  <
br>
Model
<
select name="F_idmodel" disabled>
    <
option value="0">- Seleccione -</option>
</
select>
</
form>

<
script language="javascript" type="text/javascript">
    var 
arrayModel = Array();
    
arrayModel[][] = new Option('CORSA'OPEL );
    
arrayModel[][1] = new Option('A3'AUDI );
    
arrayModel[][2] = new Option('A2'AUDI );
    
arrayModel[][3] = new Option('A3'AUDI );
    
arrayModel[][4] = new Option('CORSA'OPEL );
    
arrayModel[][5] = new Option('103SX'PEUGEOT );
    function 
cambiaModel(marcamodel) {
       if(
marca 0) {
          
model.disabled false;
          
model.length 1;
          for ( 
x in arrayModel[marca] )
              
model.options[x] = arrayModel[marca][x];
       } else {
          
model.length 1;
          
model.disabled true;
       }
    }
</script> 
Responder Con Cita
  #3  
Antiguo 07-03-2007
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 24
kayetano Va por buen camino
Hola

¿Es posible ver el código en funcionamiento? La verdad es que me tienes un poco confuso con el código que has enviado.
Asin a bote pronto veo unos cuantos errores:
1. arrayModel no está bien definido, debería de quedar algo tal que asín
Código:
   arrayPoblacion['AUDI'] = Array();
   arrayPoblacion['AUDI'][1] = new Option('A3', 1 ); // Guardo el nombre y la clave primaria de cada coche
   arrayPoblacion['AUDI'][1] = new Option('A2', 2 );
   arrayPoblacion['OPEL'] = Array();
   arrayPoblacion['OPEL'][1] = new Option('CORSA', 3 );
yo pondría como primer indice del array una número (la clave primaria de la tabla MARCAS) ya que no tengo muy claro si una cadena de texto como indice funcionará bien en todos los navegadores.
2. Es posible que el problema anterior venga dado por un error en el código:
Código PHP:
        if( $modelActiva !=  $rMoldel["marca"] ) {  // SOBRA UN "l" es $rModel y no $rMoldel
            
$modelActiva $rModel["marca"]; 
3. El script puedes ponerlo sin problemas dentro de la cabecera.

Y por último, me hace gracia que has hecho un copia a lo bestia del código, veo que has utilizado hasta basura que deje en el código como la marca "F_" que utilizo para identificar una serie de objetos.
Espero que te sirva de ayuda.
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
  #4  
Antiguo 07-03-2007
gulurulu gulurulu is offline
Registrado
 
Registrado: mar 2007
Posts: 4
Poder: 0
gulurulu Va por buen camino
Buenas Kayetano,

Ahora modificare lo que me as comentado para ver si logro que funcione, y te comento.

El codigo en funcionamiento lo puedes ver en http://ocasio.maam.es/cercam.php

Y he copiado a saco el codigo si xD mas que nada para ver si lograva hacelo funcionar y despues depurar-lo jajajaja
Responder Con Cita
  #5  
Antiguo 07-03-2007
gulurulu gulurulu is offline
Registrado
 
Registrado: mar 2007
Posts: 4
Poder: 0
gulurulu Va por buen camino
A medias... te explico

Cita:
Empezado por kayetano
arrayPoblacion['AUDI'][1] = new Option('A3', 1 ); // Guardo el nombre y la clave primaria de cada coche
Tengo un problema, mas que nada supongo que de concepto, la clave primaria para cada coche es matricula.

Digamos que la tabla cars que tego definida es:

cars(matricula, marca, modelo, color, km, fecha, ...)
matricula: char(7) idprimaria
marca: char(15)
modelo: char(15)
color: int
km: char(10)
...

Cita:
Empezado por kayetano
2. Es posible que el problema anterior venga dado por un error en el código:
Código PHP:
        if( $modelActiva !=  $rMoldel["marca"] ) {  // SOBRA UN "l" es $rModel y no $rMoldel
            
$modelActiva $rModel["marca"]; 
al kitar la "l" gracias por el detalle, ya se activa el combo pero no selecciona...

Tienes la pag en http://ocasio.maam.es/cercam.php para ver el funcionamiento, aunk la voy modificando pk voy haciendo pruevas.

Gracias por kualkier ayudita xD
Responder Con Cita
  #6  
Antiguo 07-03-2007
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 24
kayetano Va por buen camino
Hola

Una solución sería crear dos tablas nuevas:
MARCAS( id, nombre )
MODELOS( id, idmarca, modelo )
Con lo que te ahorrarás muchos disgustos y problemas ya que si cada vez que metes un vehiculo tienes que escribir la marca y el modelo puede ocurrir que pongas "A4" o "A 4" o "A-4" y en el desplegable se verían 3 modelos diferentes cuando en realidad es el mismo.
Una vez creadas estas dos tablas ya no tendrías problemas con el javascript.

Si quieres seguir con tu sistema pues pienso que deberás utilizar el nombre de la marca como indice del array.
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
  #7  
Antiguo 07-03-2007
mariocase84 mariocase84 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Guatemala
Posts: 12
Poder: 0
mariocase84 Va por buen camino
Hola, no se si es muy tarde para responder, pero yo te recomiendo que visites este sitio es el JavaScript Tool Box lo que tenes que hacer es revisar los ejemplos bajarte los archivos js, incluir los archivos en tu proyecto, donar un poco de dinero (si sos altruista) y listo.

Espero te sirva.

Saludos,

Mario Antonio
__________________
Si usted opina que no se puede hacer... no interrumpa a los que lo están haciendo
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
combos BoNnY0301 OOP 5 06-05-2006 09:07:30
combos enlazados con mysql camc79 PHP 4 18-02-2005 15:09:32
combos con mas de un campo mar65 Conexión con bases de datos 3 14-01-2005 21:16:50
Problemas con los combos vetustas Conexión con bases de datos 3 31-10-2003 00:21:58
cargar tabla en varios combos Delphos Conexión con bases de datos 2 04-10-2003 19:09:11


La franja horaria es GMT +2. Ahora son las 16:18:53.


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