gumetis 0 Denunciar post Postado Junho 20, 2013 Bom dia não estou conseguindo fazer um select popular para o outro alguem poderia me ajudar? Obrigado. BD. -- -------------------------------------------------------- -- -- Table structure for table `wp_tiptopmysandwich_loja` -- CREATE TABLE `wp_tiptopmysandwich_loja` ( `id` int(11) NOT NULL, `ds_nome` text COLLATE latin1_general_ci NOT NULL, `ds_endereco` text COLLATE latin1_general_ci NOT NULL, `ds_numero` text COLLATE latin1_general_ci NOT NULL, `ds_bairro` text COLLATE latin1_general_ci NOT NULL, `ds_cidade` text COLLATE latin1_general_ci NOT NULL, `ds_estado` char(2) COLLATE latin1_general_ci NOT NULL, `cep` text COLLATE latin1_general_ci NOT NULL, `ds_complemento` text COLLATE latin1_general_ci, `lat` text COLLATE latin1_general_ci NOT NULL, `lng` text COLLATE latin1_general_ci NOT NULL, `status` char(1) COLLATE latin1_general_ci DEFAULT 'A', `date_inc` timestamp NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; -- -- Dumping data for table `wp_tiptopmysandwich_loja` -- INSERT INTO `wp_tiptopmysandwich_loja` VALUES(0, 'Bourbon Shopping Pompéia', 'Rua Turiassu', '2100', '', 'São Paulo', 'SP', '', '', '', '', 'A', '2013-06-14 19:30:19'); INSERT INTO `wp_tiptopmysandwich_loja` VALUES(1, 'Jardins Oscar Freire', 'Rua Oscar Freire', '691', 'Jardim Paulista', 'São Paulo', 'SP', '01426-001', NULL, '', '', 'A', '2013-06-19 21:27:55'); INSERT INTO `wp_tiptopmysandwich_loja` VALUES(2, 'Tamboré | Shopping Tamboré', 'Avenida Piracema', '669', '', 'Tamboré', 'SP', '06460-030', NULL, '', '', 'A', '2013-06-19 17:50:36'); INSERT INTO `wp_tiptopmysandwich_loja` VALUES(3, 'Shopping Vitória', 'Avenida Américo Buaiz', '200', 'Enseada do Suá', 'Vitória', 'ES', '29050-420', '', '', '', 'A', '2013-06-14 19:30:38'); php. if($_REQUEST["acao"] == 'buscarcidade' ){ $result = array(); $uf = $_REQUEST["uf"]; if(empty($uf)) { $result['type'] = "error"; }else { foreach ( $mys->getComboCidade($uf) as $obj ) { $result['cidades'] = $obj->ds_cidade; } $result['type'] = "success"; } } if($_REQUEST["acao"] == 'buscarcomboloja' ){ $result = array(); $uf = $_REQUEST["uf"]; $cidade = $_REQUEST["cidade"]; if(empty($cidade)) { $result['type'] = "error"; }else { $result['lojas'] = $mys->getComboLojas($uf, $cidade); $result['type'] = "success"; /*foreach ( $mys->getComboLojas($uf, $cidade) as $obj ) { $result['lojas'] = $obj->ds_cidade; }*/ } } public function getComboEstado(){ global $wpdb; $result = $wpdb->get_results( "SELECT ds_estado FROM ".$wpdb->prefix."mysandwich_loja group by ds_estado; "); $wpdb->flush(); return $result; } public function getComboCidade($uf){ global $wpdb; //echo "SELECT ds_cidade FROM ".$wpdb->prefix."mysandwich_loja where ds_estado = ".$uf." group by ds_cidade;"; $result = $wpdb->get_results( "SELECT ds_cidade FROM ".$wpdb->prefix."mysandwich_loja where ds_estado = '$uf' group by ds_cidade; "); $wpdb->flush(); return $result; } public function getComboLojas($uf, $cidade){ global $wpdb; $result = $wpdb->get_results( "SELECT * FROM ".$wpdb->prefix."mysandwich_loja where ds_estado = '$uf' AND ds_cidade = '$cidade' "); $wpdb->flush(); return $result; } Obs: Quando popula os dados do select UF do está nao popula as informações do banco só traz uma por ex: Correto. SP | São Paulo | Jundiai Informação trazida hj está errada. SP | Jundiai Obrigado Erick Compartilhar este post Link para o post Compartilhar em outros sites
mangakah 217 Denunciar post Postado Junho 20, 2013 Não deveria ser $result['cidades'][] = $obj->ds_cidade; ao invés de: $result['cidades'] = $obj->ds_cidade; ? Compartilhar este post Link para o post Compartilhar em outros sites
gumetis 0 Denunciar post Postado Junho 20, 2013 Não deveria ser $result['cidades'][] = $obj->ds_cidade; ao invés de: $result['cidades'] = $obj->ds_cidade; ? Boa tarde, mangakah Obrigado pela resposta.. Então já tinha colocado isso mais ai a consulta sai assim São Paulo | Jundiai - Tudo dentro do mesmo select... Eh estranho nao to conseguindo fazer isso... :-( Compartilhar este post Link para o post Compartilhar em outros sites
mangakah 217 Denunciar post Postado Junho 20, 2013 Poste a parte do código que insere os dados no elemento SELECT. Compartilhar este post Link para o post Compartilhar em outros sites
gumetis 0 Denunciar post Postado Junho 20, 2013 Opa entaum essa é a funcao... if($_REQUEST["acao"] == 'buscarcidade' ){ $result = array(); $uf = $_REQUEST["uf"]; if(empty($uf)) { $result['type'] = "error"; }else { foreach ( $mys->getComboCidade($uf) as $obj ) { $result['cidades'] = $obj->ds_cidade; } $result['type'] = "success"; } } public function getComboEstado(){ global $wpdb; $result = $wpdb->get_results( "SELECT ds_estado FROM ".$wpdb->prefix."mysandwich_loja group by ds_estado; "); $wpdb->flush(); return $result; } Compartilhar este post Link para o post Compartilhar em outros sites
mangakah 217 Denunciar post Postado Junho 20, 2013 Não. Falo da parte HTML/JavaScript que insere os elementos <option> no <select>. Compartilhar este post Link para o post Compartilhar em outros sites
gumetis 0 Denunciar post Postado Junho 20, 2013 ahhh perfeito... tah ai $html .= '<div id="selecionaloja" class="selecionaloja"> <select name="uf" id="uf" class="iten_selecionaloja"> <option value="">...</option>'; foreach ( $mys->getComboEstado() as $obj ) { $html .= '<option value="'.$obj->ds_estado.'">'.$obj->ds_estado.'</option>'; } $html .= '</select> <select name="cidade" id="cidade" class="iten_cidade"> <option value="">...</option> </select> <select name="loja" id="loja" class="iten_loja"> <option value="">...</option> </select> </div>'; Compartilhar este post Link para o post Compartilhar em outros sites
mangakah 217 Denunciar post Postado Junho 20, 2013 Eh... ainda não... aí mostra como o <select> "uf" é alimentado, mas não como o mesmo é feito com o <select> "cidade". É com JavaScript, né? Então como está esse código? Compartilhar este post Link para o post Compartilhar em outros sites
gumetis 0 Denunciar post Postado Junho 20, 2013 Tipo vc diz isso? jQuery("#uf").change(function(){ // obtendo o valor do atributo value da tag option var valorUf = jQuery("#uf option:selected").val(); // exibindo uma janela com o valor selecionado if(valorUf != ''){ jQuery.ajax({ type : "post", dataType : "json", url : mysandwichAjax.ajaxurl, data : {action: "mysandwich_script", acao: 'buscarcidade', uf: valorUf}, success: function(response) { //console.log(response); //Object {cidades: "Tamboré", type: "success", sql: "SELECT São Paulo, Jundiai"} if(response.type == "success") { var options = "<option value=''>...</option>"; jQuery.each(response, function(key, value){ if(value != 'success' ){ options += '<option value="' + value + '">' + value + '</option>'; } }); jQuery("#cidade").html(options); } else { alert("Erro"); } } }); }else{ alert('Selecione uma Estado'); } return false; }); jQuery("#cidade").change(function(){ // obtendo o valor do atributo value da tag option var valorCidade = jQuery("#cidade option:selected").val(); var valorUf = jQuery("#uf option:selected").val(); // exibindo uma janela com o valor selecionado //alert(valorUf+' ------> '+valorCidade); if(valorCidade != ''){ jQuery.ajax({ type : "post", dataType : "json", url : mysandwichAjax.ajaxurl, data : {action: "mysandwich_script", acao: 'buscarcomboloja', cidade: valorCidade, uf:valorUf}, success: function(response) { if(response.type == "success") { //alert('---->'+response.lojas); var options = "<option value=''>...</option>"; jQuery.each(response.lojas, function(key, value){ //options += '<option value="' + value.lat + ', ' + value.lng + '">' + value.ds_nome + '</option>'; options += '<option value="' + value.id + '">' + value.ds_nome + '</option>'; }); jQuery("#loja").html(options); } else { alert("Erro"); } } }); }else{ alert('Selecione uma Cidade'); } return false; }); jQuery("#loja").change(function(){ // obtendo o valor do atributo value da tag option var valorEndereco = jQuery("#loja option:selected").val(); var vlr = jQuery("#loja option:selected").val(); var valorLoja = jQuery("#loja option:selected").val(); //alert('(' + valorEndereco + ')'); //alert(valorLoja); //alert(lojasLatLng); map.setCenter(this.position); map.setZoom(16); map.panTo(lojasLatLng[valorLoja]); //map.panTo(lojasLatLng[vlr]); return false; }); é isso ai? Compartilhar este post Link para o post Compartilhar em outros sites
mangakah 217 Denunciar post Postado Junho 20, 2013 Sim, isso aí. Antes dessa linha: jQuery("#cidade").html(options); Coloque umconsole.log(options); E poste aqui o que sai no console. (tem que disparar o evento de selecionar "uf" antes, claro) Compartilhar este post Link para o post Compartilhar em outros sites
gumetis 0 Denunciar post Postado Junho 20, 2013 opa... <option value=''>...</option><option value="Tamboré">Tamboré</option> Compartilhar este post Link para o post Compartilhar em outros sites
mangakah 217 Denunciar post Postado Junho 20, 2013 Eu notei uma coisa agora... que eu me lembre, não é possível resgatar um valor de uma variável definida fora da função no jQuery.each, portanto você não deveria ser capaz de usar a variável options dentro desse each, devendo usar um laço for convencional para colocar os valores na variável options. Mas parece que ele está retornando ao menos um valor, né? Então é estranho... jQuery.each(response, function(key, value){ } Veja também se o response está vindo ok: console.log(response); Compartilhar este post Link para o post Compartilhar em outros sites
gumetis 0 Denunciar post Postado Junho 20, 2013 olha soh tah sim vindo igual... Object {cidades: "Tamboré", type: "success"} Object {cidades: "Tamboré", type: "success"} Compartilhar este post Link para o post Compartilhar em outros sites
mangakah 217 Denunciar post Postado Junho 20, 2013 Então só está vindo uma cidade... Remova isso: $result['type'] = "success"; Serve para que? Tem certeza que o array está como eu sugeri no post #2??? Compartilhar este post Link para o post Compartilhar em outros sites
gumetis 0 Denunciar post Postado Junho 20, 2013 Opa entaum tirei é esse aqui né ... if($_REQUEST["acao"] == 'buscarcidade' ){ $result = array(); $uf = $_REQUEST["uf"]; if(empty($uf)) { $result['type'] = "error"; }else { //id, ds_titulo, ds_texto, ds_ingredientes, id_image, id_categoria foreach ( $mys->getComboCidade($uf) as $obj ) { $result['cidades'] = $obj->ds_cidade; } //$result['type'] = "success"; } } Deu erro... não vai... Opa tenho sim.... entaum está bem confuso isso não manjo muito de prog rsrs Compartilhar este post Link para o post Compartilhar em outros sites
gumetis 0 Denunciar post Postado Junho 20, 2013 Opa, agora sim, com a sua alteração... Object cidades: Array[2] 0: "São Paulo" 1: "Tamboré" length: 2 __proto__: Array[0] type: "success" __proto__: Object --- Object cidades: Array[2] 0: "São Paulo" 1: "Tamboré" length: 2 __proto__: Array[0] type: "success" __proto__: Object Compartilhar este post Link para o post Compartilhar em outros sites