Ir para conteúdo

Arquivado

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

ErickCordeiroA

OnChange não Funciona.

Recommended Posts

Boa noite galera...

 

Sou novo no js e estou tendo dificuldades com o famoso busca cidade...

 

tenho um select no meu php que quando seleciono o estado ele tem que me retornar as cidades referente aquele estado.

 

a função que criei para fazer isso.

function BuscarCidades(){
            var idEstado = $('#estado').val();
            if($('#cidade').val() == ""){
                $.ajax({
                    url: '../Controller/ControllerCliente.php',
                    type: 'POST',
                    dataType: 'html',
                    data: {action: 'buscaCidade', idEstado:idEstado},
                    success:function(data){
                        $('#cidade').empty().append(data);
                    }
                });
            }
        }

php do select

<div class="form-group col-md-3">
            <label for="txtUf">UF * </label>
            <select class="form-control"  name="id_estado" id="id_estado" onchange="BuscarCidades()" required>
                <option>Selecione...</option>
                <?php foreach ($rEstado as $estado): ?>
                    <option value="<?= $estado['ID_ESTADO']?>" id="estado"><?= $estado['NOME_ESTADO']; ?></option>
                <?php endforeach; ?>
            </select>
        </div>

        <div class="form-group col-md-3">
            <label for="cbCidade">Cidade * </label>
            <select class="form-control" name="id_cidade" id="id_cidade" required>
                <option>Selecione...</option>
                <?php foreach ($rCidade as $cidade): ?>
                    <option value="<?= $cidade['ID_CIDADE'] ?>" id="cidade"><?= $cidade['NOME_CIDADE'] ?></option>
                <?php endforeach; ?>
            </select>
        </div>

controller que uso no action

case 'buscarCidades':
			$idEstado = strip_tags($_REQUEST['id_estado']);
			$listaCidades = $Cliente->recuperaCidade($idEstado);
			$html = "";
			foreach ($listaCidades as $cidade) {
				$html .="<option value='".$cidade['ID_CIDADE']."'>".$cidade['NOME_CIDADE']."</option>";
			}
			echo $html;
			break;

e o php que faz o select no banco.

function recuperaEstado(){
			$queryBuscaEstado = $this->connMysql->prepare("SELECT ID_ESTADO, NOME_ESTADO FROM TBL_ESTADO ORDER BY UF_ESTADO");
			$queryBuscaEstado->execute();

			$listaEstado = array();
			while ($row = $queryBuscaEstado->fetch(PDO::FETCH_ASSOC)) {
				$listaEstado[] = array('ID_ESTADO'					=>utf8_encode($row["ID_ESTADO"]),
								 	   'NOME_ESTADO'				=>utf8_encode($row["NOME_ESTADO"]));
			}
			return $listaEstado;
		}

		function recuperaCidade($idEstado){
			$rIdEstado = strip_tags($idEstado);
			$sql = "SELECT ID_CIDADE, NOME_CIDADE FROM TBL_CIDADE WHERE ID_ESTADO =? ORDER BY NOME_CIDADE";
			$queryBuscaCidade = $this->connMysql->prepare($sql);
			$queryBuscaCidade->bindValue(1, $rIdEstado);
			$queryBuscaCidade->execute();

			$listaCidade = array();

			while ($row = $queryBuscaCidade->fetch(PDO::FETCH_ASSOC)) {
				$listaCidade[] = array( 'ID_CIDADE' 		=>utf8_encode($row["ID_CIDADE"]),
										'NOME_CIDADE' 		=>utf8_encode($row["NOME_CIDADE"]));
			}

			return $listaCidade;

		}

então o estado funciona, mas a cidade não lista..

 

desde já agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na função BuscarCidades, o que é devolvido caso o pedido AJAX seja feito com sucesso?

 

Podes usar o comando console.log(data) para verificar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara consegui achar o meu problema para não carregar as cidades, porém agora quando vou fazer o insert no banco de dados, ele sai com valor nulo(null), já não sei o motivo...

 

EDITANDO

 

não é nulo, e sim com esse erro

 

Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '9303' for key 'PRIMARY'

 

sendo que ela é uma chave estrangeira da minha tabela cidade.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Podes mostrar a parte do código que faz a inserção?

 

O que diz o erro é que estás a tentar inserir duas vezes o mesmo valor numa coluna definida como primary key.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claro.

function salvar($idCliente, $nomeCliente, $dataNasc, $cpfCliente, $sexoCliente, $telCliente, $celCliente, $endCliente, $numCliente, $bairroCliente, $cidadeCliente, $cepCliente, $emailCliente, $senhaCliente){

			if ($idCliente) {
				$alterarCliente = $this->connMysql->prepare("UPDATE TBL_CLIENTE SET NOME_CLIENTE = ?
																				,   END_CLIENTE = ?
																				,	NUM_END_CLIENTE = ?
																				,	BAIRRO_CLIENTE = ?
																				,	ID_CIDADE = ?
																				,	CEP_CLIENTE = ?
																				,	TEL_CLIENTE = ?
																				,	CEL_CLIENTE = ?
																				,	CPF_CLIENTE = ?
																				,	SEXO_CLIENTE = ?
																				,	DT_NASC_CLIENTE = ?
																				, 	EMAIL_CLIENTE = ?
																				,	SENHA_CLIENTE = ?
																				,	ID_NIVEL_ACESSO = 2
															WHERE ID_CLIENTE = ?");
				$alterarCliente->bindParam(1, $nomeCliente, PDO::PARAM_STR);
				$alterarCliente->bindParam(2, $endCliente, PDO::PARAM_STR);
				$alterarCliente->bindParam(3, $numCliente, PDO::PARAM_STR);
				$alterarCliente->bindParam(4, $bairroCliente, PDO::PARAM_STR);
				$alterarCliente->bindParam(5, $cidadeCliente, PDO::PARAM_INT);
				$alterarCliente->bindParam(6, $cepCliente, PDO::PARAM_STR);
				$alterarCliente->bindParam(7, $telCliente, PDO::PARAM_STR);
				$alterarCliente->bindParam(8, $celCliente, PDO::PARAM_STR);
				$alterarCliente->bindParam(9, $cpfCliente, PDO::PARAM_STR);
				$alterarCliente->bindParam(10, $sexoCliente, PDO::PARAM_STR);
				$alterarCliente->bindParam(11, $dataNasc, PDO::PARAM_STR);
				$alterarCliente->bindParam(12, $emailCliente, PDO::PARAM_STR);
				$alterarCliente->bindParam(14, $idCliente, PDO::PARAM_INT);
				$resultadoAlteracao = $alterarCliente->execute();

				return $idCliente;
			} else {

				$inserirCliente = $this->connMysql->prepare("INSERT INTO TBL_CLIENTE ( NOME_CLIENTE
																					 , END_CLIENTE
																					 , NUM_END_CLIENTE
																					 , BAIRRO_CLIENTE
																					 , ID_CLIENTE
																					 , CEP_CLIENTE
																					 , TEL_CLIENTE
																					 , CEL_CLIENTE
																					 , CPF_CLIENTE
																					 , SEXO_CLIENTE
																					 , DT_NASC_CLIENTE
																					 , EMAIL_CLIENTE
																					 , SENHA_CLIENTE
																					 , ID_NIVEL_ACESSO)
															VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,2) ");
				$inserirCliente->bindParam(1, $nomeCliente, PDO::PARAM_STR);
				$inserirCliente->bindParam(2, $endCliente, PDO::PARAM_STR);
				$inserirCliente->bindParam(3, $numCliente, PDO::PARAM_STR);
				$inserirCliente->bindParam(4, $bairroCliente, PDO::PARAM_STR);
				$inserirCliente->bindParam(5, $cidadeCliente, PDO::PARAM_INT);
				$inserirCliente->bindParam(6, $cepCliente, PDO::PARAM_STR);
				$inserirCliente->bindParam(7, $telCliente, PDO::PARAM_STR);
				$inserirCliente->bindParam(8, $celCliente, PDO::PARAM_STR);
				$inserirCliente->bindParam(9, $cpfCliente, PDO::PARAM_STR);
				$inserirCliente->bindParam(10, $sexoCliente, PDO::PARAM_STR);
				$inserirCliente->bindParam(11, $dataNasc, PDO::PARAM_STR);
				$inserirCliente->bindParam(12, $emailCliente, PDO::PARAM_STR);
				$inserirCliente->bindParam(13, $senhaCliente, PDO::PARAM_STR);
				$resultadoInsert = $inserirCliente->execute();

				return $idCliente;

			}

		}

 

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.