Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: DJmixmancar en 13 Enero 2011, 17:21 pm



Título: 3 campos con dropdown ajax. Help
Publicado por: DJmixmancar en 13 Enero 2011, 17:21 pm
Hola. saludos. bueno tengo un problema. e tratado de solucionar solo , tengo como 1 dia completo no doy.

el problema . cuando seleciona un pais filtra  los destino depende al pais selecionado. ahi va bien
cuando selecciona cadena. para que filtre.
seleciona cadena mientras. que pais = y destino = .

le metido varible arriba abajo al final. pero nada

me dado cuenta. que cuando seleciono la primera crea la variable $val. cuando seleciono el segundo combo box la varible se imprimir pero . cambia de pais a destino. se pieder. e tratodo de mantener. pero no nada me resulta,
Aqui dejo el codigo completo.



file:state.php
Citar
<?
     //set IE read from page only not read from cache
     header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
     header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
     header ("Cache-Control: no-cache, must-revalidate");
     header ("Pragma: no-cache");
     
     header("content-type: application/x-javascript; charset=tis-620");
     
     $data=$_GET['data'];
     $val=$_GET['val'];
     
     //set database
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "147";
$dbname    = "test";
mysql_pconnect($dbhost,$dbuser,$dbpass) or die ("Unable to connect to MySQL server"); 
     
 
     if ($data=='pais') {  // first dropdown
          echo "<select name='pais' onChange=\"dochange('destino', this.value)\">\n";
          echo "<option value='0'>==== Selecione Pais ====</option>\n";
          $result=mysql_db_query($dbname,"select `id`, `paisname` , `codigo3` from pais order by `paisname`");
          while(list($id, $name)=mysql_fetch_array($result)){
               echo "<option value=\"$id\" >$name</option> \n" ;            
          }
      
     } else if ($data=='destino') { // second dropdown

        echo "<select name='destino' onChange=\"dochange('cadena', this.value)\">\n";
          echo "<option value='0'>====Selecione Destino ====</option>\n"; 
       
          $result=mysql_db_query($dbname,"SELECT `id`, `city` FROM destino WHERE `id_pais` = '$val' ORDER BY `city` ");
          while(list($id, $name)=mysql_fetch_array($result)){       
               echo "<option value=\"$id\" >$name</option> \n" ;           
          }
    }         
     else if ($data=='cadena') { // second dropdown
        echo "<select name='cadena' >\n";
          echo "<option value='0'>====choose cities ====</option>\n";     
          $result=mysql_db_query($dbname,"SELECT `id`, `nombres` FROM cadena WHERE `id_pais` = '$val'  AND id_destino '$val' = ORDER BY `id` ");
          while(list($id, $name)=mysql_fetch_array($result)){       
               echo "<option value=\"$id\" >$name</option> \n" ;       
          }
     }
     echo "</select>\n"; 

?>

file:state_dropdown.php
Citar
<a href="http://php-ajax-code.blogspot.com/"><img src="images/php_ajax_code.gif" border=0></a><br>
<br>
This is sample Ajax DropDown Menu When you select state in first dropdown menu<br>
the second dropdown menu will change automatic and display cites in the state selection
<br><br>
<?     
     echo "<form name=sel>\n";
     echo "Pais : <font id=pais><select>\n";
     echo "<option value='0'>============</option> \n" ;
     echo "</select></font>\n";
     
     echo "Destino : <font id=destino><select>\n";
     echo "<option value='0'>=== Seleccione ===</option> \n" ;
     echo "</select></font>\n";
        
     echo "Cadena : <font id=cadena><select>\n";
     echo "<option value='0'>=== Seleccione ===</option> \n" ;
     echo "</select></font>\n";
?>

<script language=javascript>
function Inint_AJAX() {
   try { return new ActiveXObject("Msxml2.XMLHTTP");  } catch(e) {} //IE
   try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {} //IE
   try { return new XMLHttpRequest();          } catch(e) {} //Native javascript
   alert("XMLHttpRequest not supported");
   return null;
};

function dochange(src, val) {
     var req = Inint_AJAX();
     req.onreadystatechange = function () {
          if (req.readyState==4) {
               if (req.status==200) {
                    document.getElementById(src).innerHTML=req.responseText; //retuen value
               }
          }
     };
     req.open("GET", "state.php?data="+src+"&val="+val); //make connection
     req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=iso-8859-1"); // set Header
     req.send(null); //send value
}

window.onLoad=dochange('pais', -1);         // value in first dropdown
</script>

<br><br>source from : <a href="http://php-ajax-code.blogspot.com/">php-ajax-code.blogspot.com</a>


data: test.sql
Citar
-- phpMyAdmin SQL Dump
-- version 2.10.3
-- http://www.phpmyadmin.net
--
-- Servidor: localhost
-- Tiempo de generación: 13-01-2011 a las 11:13:57
-- Versión del servidor: 5.0.51
-- Versión de PHP: 5.2.6

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Base de datos: `test`
--

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

--
-- Estructura de tabla para la tabla `cadena`
--

CREATE TABLE `cadena` (
  `id` int(11) NOT NULL auto_increment,
  `id_destino` int(11) default NULL,
  `id_pais` int(11) default NULL,
  `nombres` varchar(20) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;

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

INSERT INTO `cadena` VALUES (1, 1, 1, 'tarata');
INSERT INTO `cadena` VALUES (2, 1, 1, 'sama');
INSERT INTO `cadena` VALUES (3, 2, 1, 'erer');
INSERT INTO `cadena` VALUES (4, 2, 1, 'werewr');
INSERT INTO `cadena` VALUES (5, 2, 2, 'oiuouio');

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

--
-- Estructura de tabla para la tabla `destino`
--

CREATE TABLE `destino` (
  `id` int(11) NOT NULL auto_increment,
  `id_pais` int(11) NOT NULL default '0',
  `city` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`id`),
  KEY `id_pais` (`id_pais`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;

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

INSERT INTO `destino` VALUES (1, 1, 'Bariloche');
INSERT INTO `destino` VALUES (2, 1, 'Buenos Aires');
INSERT INTO `destino` VALUES (3, 1, 'Calafate');
INSERT INTO `destino` VALUES (4, 1, 'Cordoba');
INSERT INTO `destino` VALUES (5, 1, 'Mar del Plata');
INSERT INTO `destino` VALUES (6, 1, 'Mensoza');
INSERT INTO `destino` VALUES (7, 1, 'Puerto de Iguazu');
INSERT INTO `destino` VALUES (8, 1, 'Puerto Madryn');
INSERT INTO `destino` VALUES (9, 1, 'Ushuaia');
INSERT INTO `destino` VALUES (10, 2, 'Aruba');

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

--
-- Estructura de tabla para la tabla `pais`
--

CREATE TABLE `pais` (
  `id` int(11) NOT NULL auto_increment,
  `paisname` varchar(255) NOT NULL,
  `codigo3` char(3) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=22 ;

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

INSERT INTO `pais` VALUES (1, 'Argentina', '0');
INSERT INTO `pais` VALUES (2, 'Aruba', '0');
INSERT INTO `pais` VALUES (3, 'Bahamas', '0');
INSERT INTO `pais` VALUES (4, 'Bolivia', '0');
INSERT INTO `pais` VALUES (5, 'Brasil', '0');
INSERT INTO `pais` VALUES (6, 'Chile', '0');
INSERT INTO `pais` VALUES (7, 'Colombia', '0');
INSERT INTO `pais` VALUES (8, 'Costa Rica', '0');
INSERT INTO `pais` VALUES (9, 'Cuba', '0');
INSERT INTO `pais` VALUES (10, 'Ecuador', '0');
INSERT INTO `pais` VALUES (11, 'Estados Unidos', '0');
INSERT INTO `pais` VALUES (12, 'Guatemala', '0');
INSERT INTO `pais` VALUES (13, 'Jamaica', '0');
INSERT INTO `pais` VALUES (14, 'Mexico', '0');
INSERT INTO `pais` VALUES (15, 'Nicaragua', '0');
INSERT INTO `pais` VALUES (16, 'Panama', '0');
INSERT INTO `pais` VALUES (17, 'Peru', '0');
INSERT INTO `pais` VALUES (18, 'Puerto rico', '0');
INSERT INTO `pais` VALUES (19, 'Republica Dominicana', '0');
INSERT INTO `pais` VALUES (20, 'Uruguay', '0');
INSERT INTO `pais` VALUES (21, 'Venezuela', '0');