Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/05/2008, 07:04
Avatar de Malocado
Malocado
 
Fecha de Ingreso: septiembre-2004
Mensajes: 24
Antigüedad: 19 años, 7 meses
Puntos: 0
Problema con <select> al recargar página

Hola, os comento mi problema:

Tengo dos campos tipo <select> que están unidos entre sí, en el primer campo se muestran marcas de coches y en el segundo los modelos asociados a cada marca de coche, pero tengo otro campo tipo texto en el que ahí pongo el nuevo modelo a editar.

El problema es que cuando elijo la marca el fomulario ejecuta la acción submit y claro da error ya que no se aceptan campos vacíos.

He estado buscando el como hacer que al elegir una opcion del select se recargue la misma página con el valor seleccionado, pero no e encontrado nada claro, todo son métodos con JS y poniendo todos los valores previamente, sin leer de la base de datos.

¿Alguna idea/solución a esto?

Aquí os dejo el código:

Código:
--
-- Estructura de tabla para la tabla `marcas`
--

CREATE TABLE `marcas` (
  `Marca` varchar(50) NOT NULL,
  PRIMARY KEY  (`Marca`),
  KEY `MarcasMarca` (`Marca`)
);

--
-- Volcar la base de datos para la tabla `marcas`
--

INSERT INTO `marcas` (`Marca`) VALUES
('Alfa Romeo'),
('Audi'),
('BMW'),
('Chevrolet'),
('Chrysler'),
('Citroën'),
('Fiat'),
('Ford'),
('Honda'),
('Hyundai'),
('IVECO'),
('Kia Motors'),
('Lancia'),
('Land Rover'),
('Mazda'),
('Mercedes Benz'),
('MG'),
('Mitsubishi'),
('Nissan'),
('Opel'),
('Peugeot'),
('Range Rover'),
('Renault'),
('Rover'),
('Saab'),
('Seat'),
('Skoda'),
('Ssangyong'),
('Suzuki'),
('TATA'),
('Toyota'),
('Volkswagen'),
('Volvo');

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `modelos`
--

CREATE TABLE `modelos` (
  `Marca` varchar(50) default NULL,
  `Modelo` varchar(50) NOT NULL,
  PRIMARY KEY  (`Modelo`),
  KEY `marcasmodelos` (`Marca`),
  KEY `ModelosMarca` (`Marca`)
);

--
-- Volcar la base de datos para la tabla `modelos`
--

INSERT INTO `modelos` (`Marca`, `Modelo`) VALUES
('Alfa Romeo', '146'),
('Alfa Romeo', '147'),
('Alfa Romeo', '156'),
('Audi', 'A2'),
('Audi', 'A3'),
('Audi', 'A4'),
('Audi', 'A4 Avant'),
('Audi', 'A6'),
('BMW', '316'),
('BMW', '318'),
('BMW', '320'),
('BMW', '322'),
('BMW', '325'),
('BMW', '330'),
('BMW', '525'),
('BMW', '530'),
('BMW', '535'),
('BMW', 'X3'),
('Chevrolet', 'Kalos'),
('Chevrolet', 'Lacetti'),
('Chevrolet', 'Lanos'),
('Chevrolet', 'Matiz'),
('Chevrolet', 'Nubira'),
('Chevrolet', 'Nubira Station Wagon'),
('Chrysler', 'Cruiser'),
('Chrysler', 'Grand Voyager'),
('Chrysler', 'PT Cruiser'),
('Chrysler', 'Voyager'),
('Citroën', 'Berlingo'),
('Citroën', 'C3'),
('Citroën', 'C4'),
('Citroën', 'C5'),
('Citroën', 'Evasion'),
('Citroën', 'Jumper'),
('Citroën', 'Saxo'),
('Citroën', 'Xantia'),
('Citroën', 'Xsara'),
('Citroën', 'Xsara Picasso'),
('Fiat', 'Barchetta'),
('Fiat', 'Brava'),
('Fiat', 'Bravo'),
('Fiat', 'Punto'),
('Fiat', 'Scudo'),
('Fiat', 'Stilo'),
('Fiat', 'Ulysse'),
('Ford', 'Escort'),
('Ford', 'Fiesta'),
('Ford', 'Focus'),
('Ford', 'Focus C-Max'),
('Ford', 'Focus Wagon'),
('Ford', 'Fusión'),
('Ford', 'Ka'),
('Ford', 'Maverick'),
('Ford', 'Mondeo'),
('Ford', 'Mondeo Wagon'),
('Ford', 'Transit'),
('Honda', 'Accord'),
('Honda', 'Civic'),
('Honda', 'Civic Coupé'),
('Honda', 'HR-V'),
('Honda', 'Prelude'),
('Hyundai', 'Accent'),
('Hyundai', 'Atos'),
('Hyundai', 'Coupé'),
('Hyundai', 'Galloper Excced'),
('Hyundai', 'Lantra'),
('Hyundai', 'Santa Fé'),
('IVECO', 'Daily'),
('Kia Motors', 'Carens'),
('Kia Motors', 'Carnival'),
('Kia Motors', 'Cerato'),
('Kia Motors', 'Joice'),
('Kia Motors', 'Picanto'),
('Kia Motors', 'Rio'),
('Kia Motors', 'Sepia'),
('Kia Motors', 'Sportage'),
('Lancia', 'Lybra SW'),
('Land Rover', 'Freelander'),
('Land Rover', 'Range Rover'),
('Mazda', '323'),
('Mazda', 'MX5'),
('Mazda', 'Premacy'),
('Mazda', 'Serie 3'),
('Mazda', 'Serie 6'),
('Mazda', 'Serie 6 SW'),
('Mercedes Benz', 'Clase E-270'),
('Mercedes Benz', 'ML 270'),
('MG', 'MGF'),
('MG', 'ZR'),
('Mitsubishi', 'Galant'),
('Mitsubishi', 'Space Star'),
('Mitsubishi', 'Space Wagon'),
('Nissan', 'Almera'),
('Nissan', 'Almera Tino'),
('Nissan', 'Micra'),
('Nissan', 'Primera'),
('Nissan', 'Serena'),
('Nissan', 'Terrano II'),
('Opel', 'Agila'),
('Opel', 'Astra'),
('Opel', 'Astra Caravan'),
('Opel', 'Astra Coupé'),
('Opel', 'Calibra'),
('Opel', 'Corsa'),
('Opel', 'Corsa Combo'),
('Opel', 'Frontera'),
('Opel', 'Meriva'),
('Opel', 'Signum'),
('Opel', 'Tigra'),
('Opel', 'Vectra'),
('Opel', 'Vectra Caravan'),
('Opel', 'Zafira'),
('Peugeot', '106'),
('Peugeot', '206'),
('Peugeot', '206 CC'),
('Peugeot', '306'),
('Peugeot', '306 Break'),
('Peugeot', '306 Cabrio'),
('Peugeot', '307'),
('Peugeot', '307 Break'),
('Peugeot', '307 SW'),
('Peugeot', '406'),
('Peugeot', '407'),
('Peugeot', '607'),
('Peugeot', '806'),
('Peugeot', '807'),
('Peugeot', 'Partner'),
('Range Rover', 'Range'),
('Renault', 'Clio'),
('Renault', 'Grand Scénic'),
('Renault', 'Kangoo'),
('Renault', 'Laguna'),
('Renault', 'Laguna Grand Tour'),
('Renault', 'Laguna Ranchera'),
('Renault', 'Megane'),
('Renault', 'Megane Classic'),
('Renault', 'Megane Coupé'),
('Renault', 'Scénic'),
('Renault', 'Scénic Rx4'),
('Renault', 'Space'),
('Rover', '200'),
('Saab', '93'),
('Saab', '95'),
('Seat', 'Alhambra'),
('Seat', 'Córdoba'),
('Seat', 'Córdoba Curpa'),
('Seat', 'Córdoba SX'),
('Seat', 'Ibiza'),
('Seat', 'Ibiza Cupra'),
('Seat', 'Ibiza SX'),
('Seat', 'Inca'),
('Seat', 'León'),
('Seat', 'Toledo'),
('Skoda', 'Fabia'),
('Skoda', 'Felicia'),
('Skoda', 'Octavia'),
('Ssangyong', 'Rodius'),
('Suzuki', 'Jimmi'),
('Suzuki', 'Swift'),
('TATA', 'Safari'),
('Toyota', 'Avensis'),
('Toyota', 'Celica'),
('Toyota', 'Corolla'),
('Toyota', 'Land Cruiser'),
('Toyota', 'Yaris'),
('Volkswagen', 'Bora'),
('Volkswagen', 'Golf'),
('Volkswagen', 'Golf Cabrio'),
('Volkswagen', 'New Bettle'),
('Volkswagen', 'Passat'),
('Volkswagen', 'Passat Variant'),
('Volkswagen', 'Polo'),
('Volvo', 'S-40'),
('Volvo', 'S-60');
Código PHP:
<?php
$resultado 
mysql_query("SELECT Marca FROM marcas ORDER BY Marca ASC");
$modelo_validar $_POST["modelo"];
$marca $_POST["marca"];
if (isset(
$modelo_validar)){
    if(empty(
$modelo_validar)){ 
        echo 
"No se pueden insertar campos vacíos"
    }else{
        
$existe_modelo mysql_num_rows(mysql_query("SELECT * FROM modelos WHERE Modelo LIKE '".$modelo_validar."'"));
        if (
$existe_modelo == 0){
            
mysql_query("INSERT INTO modelos (Marca, Modelo) VALUES ('".$marca."', '".$modelo_validar."')");
            echo 
"El modelo ".$modelo_validar." se a insertado correctamente en la marca ".$marca."";
        }else{
            echo 
"El modelo ".$modelo_validar." de la marca ".$marca." ya existe";
        }
    }
}else{
?>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="TextoNegro">
    <tr>
        <td align="center">
            <br><br>Editar Modelo<br><br><br><br>
<?php
echo "<form action='".$_SERVER["PHP_SELF"]."?op=editar&editar=modelo' method='post' name='modelos'>";
echo 
"<select name='marca' onChange='this.form.submit()'>";
echo 
"<option value=''>Selecciona marca</option>";
echo 
"<option value=''>-------------------</option>";


$consulta_marca mysql_query("SELECT * FROM Marcas"); 

while (
$lista_marcas mysql_fetch_assoc($consulta_marca)){ 
    if (
$marca == $lista_marcas["Marca"]){ 
        echo 
"<option value='".$lista_marcas["Marca"]."' selected>".$lista_marcas["Marca"]."</option>"
    } else { 
        echo 
"<option value='".$lista_marcas["Marca"]."'>".$lista_marcas["Marca"]."</option>"
    } 

echo 
"</select> "
mysql_free_result($consulta_marca); 

echo 
"<select name='modelo'>"
if (!empty(
$marca)){ 
$consulta_modelo mysql_query("SELECT * FROM Modelos WHERE Marca='".$marca."'"); 
    if (
mysql_num_rows($consulta_modelo) != 0){
        echo 
"<option value=''>Selecciona un Modelo</option>";
        echo 
"<option value=''>-------------------</option>";
        while (
$lista_modelos mysql_fetch_assoc($consulta_modelo)){ 
            echo 
"<option value='".$lista_modelos["Modelo"]."'>".$lista_modelos["Modelo"]."</option>"
        } 
    } else { 
        echo 
"<option value=''>No hay modelos</option>"
    } 
} else { 
echo 
"<option value=''>Selecciona marca primero</option>"


mysql_free_result($consulta_modelo);

echo 
"</select><br>";
?>
            <input name="modelo" type="text">
            <input name="editar" type="submit" value="Editar">
            <input name="borrar" type="reset" value="Borrar">
            </form>
        </td>
    </tr>
</table>
<?php
}
?>
Saludos y gracias

Última edición por Malocado; 12/05/2008 a las 07:10