Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gumetis

Populando um select [Cidade]

Recommended Posts

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

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

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

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

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

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

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

Sim, isso aí.

 

Antes dessa linha:

jQuery("#cidade").html(options);
Coloque um
console.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

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

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

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

Opa, agora sim, com a sua alteração...

 

Object
  1. cidades: Array[2]
    1. 0: "São Paulo"
    2. 1: "Tamboré"
    3. length: 2
    4. __proto__: Array[0]
  2. type: "success"
  3. __proto__: Object
---
Object
  1. cidades: Array[2]
    1. 0: "São Paulo"
    2. 1: "Tamboré"
    3. length: 2
    4. __proto__: Array[0]
  2. type: "success"
  3. __proto__: Object

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.