Insert name instead of value option id

2

Write to the Database

    //Ids
	$codEstado = filter_input(INPUT_POST, 'estado', FILTER_VALIDATE_INT);
	$codCidade = filter_input(INPUT_POST, 'cidade', FILTER_VALIDATE_INT);
	$codBairro = filter_input(INPUT_POST, 'bairro', FILTER_VALIDATE_INT);
	//Inserir no bando de dados
	$sqlBairro = "INSERT INTO cadastros (estadonome,cidadenome,bairronome) VALUES (:estadonome, :cidadenome, :bairronome)";
	$resBairro = $conexao->prepare($sqlBairro);

	$resBairro->execute(array(
		':estadonome' => $codEstado,
		':cidadenome' => $codCidade,
		':bairronome' => $codBairros
	));
	$resBairro->fetchAll();	

Selections ...

<!--Seleções cep-->
		<select name="estado" id="estado" required>
			<option value="">Selecione</option>
			<?php foreach ($estados as $estado) { ?>
				<option value="<?php echo $estado['id'] ?>"><?php echo $estado['nome'] ?></option>
			<?php } ?>
		</select>

	<label for="cidade">Cidade:</label>
	<select name="cidade" id="cidade" disabled required>
		<option value="<?php $cidade; ?>">Selecione um estado</option>
	</select>

	<label for="bairro">Bairro:</label>
	<select name="bairro" id="bairro" disabled required>
		<option value="<?php $bairro; ?>">Selecione uma cidade</option>
	</select>

Part of the code that is writing the id, remembering ... putting $ neighborhood ['name'] in place of value will not record anything ...

<?php foreach ($bairros as $bairro) { ?>
    <option value="<?php echo $bairro['id'] ?>"><?php echo $bairro['nome'] ?></option>
<?php } ?>

Everything in the code is normal, but instead of writing the name, it writes the id to the table.

Help me. Thanks!

    
asked by anonymous 23.10.2017 / 19:24

2 answers

1

In your PHP you are writing the return of input to $codBairro and when you pass the parameters you send $codBairros , the two must be equal:

//Inserir no bando de dados
$sqlBairro = "INSERT INTO cadastros (estadonome,cidadenome,bairronome) VALUES (:estadonome, :cidadenome, :bairronome)";
$resBairro = $conexao->prepare($sqlBairro);

$resBairro->execute(array(
    ':estadonome' => $codEstado,
    ':cidadenome' => $codCidade,
    ':bairronome' => $codBairro
));
$resBairro->fetchAll();

Another detail, you are trying to pass string and asking PHP to check an integer at this point:

$codBairro = filter_input(INPUT_POST, 'bairro', FILTER_VALIDATE_INT);

Try to pass POST direct, and make sure you save:

$codBairro = $_POST('bairro');

Now you can mount your options like this:

<?php foreach ($bairros as $bairro) { ?>
    <option value="<?php echo $bairro['nome'] ?>"><?php echo $bairro['nome'] ?></option>
<?php } ?>
    
23.10.2017 / 19:30
0

Thank you to anyone who helped me, I did it differently ...

		$codEstado=$_POST["estado"];
		$queryEstado = "SELECT * FROM estado WHERE id='$codEstado'";
		$stmtEstado = $conexao->prepare($queryEstado);
		$stmtEstado->execute();
		$rowEstado = $stmtEstado->fetch(PDO::FETCH_ASSOC);
		$codEstado = $rowEstado["nome"];
		
		$codCidade = $_POST['cidade'];
		$queryCidade = "SELECT * FROM cidade WHERE id='$codCidade'";
		$stmtCidade = $conexao->prepare($queryCidade);
		$stmtCidade->execute();
		$rowCidade = $stmtCidade->fetch(PDO::FETCH_ASSOC);
		$codCidade = $rowCidade["nome"];		
		
		$codBairro = $_POST['bairro'];
		$queryBairro = "SELECT * FROM bairro WHERE id='$codBairro'";
		$stmtBairro = $conexao->prepare($queryBairro);
		$stmtBairro->execute();
		$rowBairro = $stmtBairro->fetch(PDO::FETCH_ASSOC);
		$codBairro = $rowBairro["nome"];	
    
23.10.2017 / 20:45