Ir para conteúdo
Fórum Script Brasil
  • 0

Validar campo verificando se o preenchimento está correto


marcusufsj

Pergunta

Olá pessoal, tudo jóia?

Gostaria de contar com a ajuda dos feras aqui do fórum para validar se o campo produto do meu formulário tem exatamente o mesmo registro de uma coluna do banco, é possível?

Esse formulário é adaptado de um repositório que encontrei no git, como NÃO SOU dev fui apenas adaptando para minhas necessidades com o pouco que eu sei.

A questão agora é só deixar o usuário submeter o form se o dado que ele preencheu no "produto" existir dentro de outra tabela, mais ou menos como se fosse uma verificação de login.

<style type="text/css">
<!--

.style1 {
	color: #FF0000;
	font-size: medium;
}
		
}


-->
</style>

<?php
require 'banco.php';
//Acompanha os erros de validação

// Processar so quando tenha uma chamada post
			

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $produtoErro = null;
    $quantidadeErro = null;
    $colaboradorErro = null;
    
	
    if (!empty($_POST)) {
        $validacao = True;
        $novoUsuario = False;
        if (!empty($_POST['produto'])) {
            $produto = $_POST['produto'];
        } else {
            $produtoErro = 'Insira o produto!';
            $validacao = False;
        }


        if (!empty($_POST['quantidade'])) {
            $quantidade = $_POST['quantidade'];
        } else {
            $quantidadeErro = 'Digite a quantidade!';
            $validacao = False;
        }


        if (!empty($_POST['colaborador'])) {
            $colaborador = $_POST['colaborador'];
        } else {
            $colaboradorErro = 'Digite seu nome!';
            $validacao = False;
        }
		
		}
			$setor = $_POST['setor'];	
            $observacao = $_POST['observacao'];
            $lote = $_POST['lote'];
	
	//Inserindo no Banco:
    if ($validacao) {
        $pdo = Banco::conectar();
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $sql = "INSERT INTO retirada (data, produto, quantidade, colaborador, setor, observacao, lote, valida_op) VALUES(NOW(),?,?,?,?,?,?,'valida')";
        $q = $pdo->prepare($sql);
        $q->execute(array($produto, $quantidade, $colaborador, $setor, $observacao, $lote));
        Banco::desconectar();
        header("Location: retirada.php");
    }
}
?>
<script>
	

</script>



<!DOCTYPE html>
<html lang="pt-br">

<head>
    <meta charset="utf-8">
    <!-- Latest compiled and minified CSS -->
    <link rel="stylesheet" href="assets/css/bootstrap.min.css">
	<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css">
    <title>Retirada</title>
</head>

<body>
<div class="container">
    <div clas="span10 offset1">
        <div class="card">
            <div class="card-header">
                <h3 class="well"> Cadastro de retirada </h3>
									
            </div>
            <div class="card-body">
                <form class="form-horizontal" action="retirada.php" method="post">

                    <div class="control-group  <?php echo !empty($produtoErro) ? 'error ' : ''; ?>">
                        <label class="control-label">Produto:</label><span class="style1">*</span>
                        <div class="controls">
                            <input size="50" class="form-control" name="produto" id="produto" type="text" placeholder="Escaneie o cód. do produto"
                                   value="<?php echo !empty($produto) ? $produto : ''; ?>">
                            <?php if (!empty($produtoErro)): ?>
                                <span class="text-danger"><?php echo $produtoErro; ?></span>
                            <?php endif; ?>
                        </div>
                    </div>

                    <div class="control-group <?php echo !empty($quantidadeErro) ? 'error ' : ''; ?>">
                        <label class="control-label">Quantidade:</label><span class="style1">*</span>
                        <div class="controls">
                            <input size="80" class="form-control" name="quantidade" type="number" placeholder="Digite a quantidade"
                                   value="<?php echo !empty($quantidade) ? $quantidade : ''; ?>">
                            <?php if (!empty($quantidadeErro)): ?>
                                <span class="text-danger"><?php echo $quantidadeErro; ?></span>
                            <?php endif; ?>
                        </div>
                    </div>

                    <div class="control-group <?php echo !empty($colaboradorErro) ? 'error ' : ''; ?>">
                        <label class="control-label">Colaborador:</label><span class="style1">*</span>
                        <div class="controls">
                            <input size="35" class="form-control" name="colaborador" type="text" placeholder="Digite seu nome"
                                   value="<?php echo !empty($colaborador) ? $colaborador : ''; ?>">
                            <?php if (!empty($colaboradorErro)): ?>
                                <span class="text-danger"><?php echo $colaboradorErro; ?></span>
                            <?php endif; ?>
                        </div>
                    </div>

                    <div class="control-group">
                        <label class="control-label">Setor:</label>
                        <div class="controls">
                            <input size="40" class="form-control" name="setor" type="text" placeholder="Setor de destino">                      
                        </div>
                    </div>
					
					 <div class="control-group">
                        <label class="control-label">Observações:</label>
                        <div class="controls">
                            <input size="40" class="form-control" name="observacao" type="text" placeholder="Observações">                      
                        </div>
                    </div>
					
					 <div class="control-group">
                        <label class="control-label">Lote(APENAS para PCR):</label>
                        <div class="controls">
                            <input size="40" class="form-control" name="lote" type="text" placeholder="Lote do(s) kit(s) de amplificação">                      
                        </div>
                    </div>
					</br><h6 class="well" >Campos com <span class="style1">*</span> são obrigatórios</h6>

                   
                    <div class="form-actions">
						<br/>
                        
                        <button type="submit" class="btn btn-success">Adicionar</button>
                        <a href="index.php" type="btn" class="btn btn-default">Voltar</a>
						
                    </div>
                </form>
				<div class="row">
                
				<table align="center">					
							<th align="center">Últimas retiradas:</th>   					     
				</table>
				<table class="table table-striped">							
                    <thead>	
                        <tr>
							<th scope="col">Id</th>
							<th scope="col">Data(A-M-D H:M:S)</th>
                            <th scope="col">Produto</th>
                            <th scope="col">Quantidade</th>
                            <th scope="col">Colaborador</th>                           
                            <th scope="col"></th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php
                        
                        $pdo = Banco::conectar();
                        $sql = 'SELECT * FROM retirada WHERE valida_op LIKE "valida" ORDER BY data DESC LIMIT 7';
						date_default_timezone_set('America/Sao_Paulo');
						

                        foreach($pdo->query($sql)as $row)
							
                        {
                            echo '<tr>';
			                echo '<th scope="row">'. $row['id'] . '</th>';
							echo '<td>'. $row['data'] . '</td>';
                            echo '<td>'. $row['produto'] . '</td>';
                            echo '<td align="center">'. $row['quantidade'] . '</td>';
                            echo '<td align="center">'. $row['colaborador'] . '</td>';                       	            
                            echo '<td width=250>';
							
                            /* echo '<a class="btn btn-primary" href="read.php?id='.$row['id'].'">Info</a>';
                            echo ' '; */
							
                           /* echo '<a align="center" class="btn btn-success" href="?id='.$row['id'].'">Finalizar</a>'; */
							
							echo ' ';
							
                            echo '&emsp;&emsp;<a align="right" class="btn btn-danger" href="deleteret.php?id='.$row['id'].'">CANCELAR</a>';
							
                            echo '</td>';
                            echo '</tr>';
                        }
                        Banco::desconectar();
                        ?>
                    </tbody>
                </table>
            </div>
            </div>
        </div>
    </div>
</div>
	
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"
        integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49"
        crossorigin="anonymous"></script>
<!-- Latest compiled and minified JavaScript -->
<script src="assets/js/bootstrap.min.js"></script>


</body>

</html>

 

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Esse é um belo código, o problema é como testar. Na base da tentativa e erro, eu criei no banco de dados astudy a tabela retirada com a estrutura que está na foto anexo nessa mensagem. E também modifiquei o código para que seja possível testá-lo. Para testar, o nome do arquivo tem que ser necessariamente retirada.php:

<style type="text/css">
.style1 {color: #FF0000;font-size: medium;}
</style>
<script>
    function alerta(){alert("procedimento ainda não definido")}
</script>
<?php
$pdo = new PDO("mysql:host=localhost;dbname=astudy","root","");
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $produtoErro = null;
    $quantidadeErro = null;
    $colaboradorErro = null;
    if (!empty($_POST)) {$validacao = True;$novoUsuario = False;
        if (!empty($_POST['produto'])) {$produto = $_POST['produto'];
        } else {$produtoErro = 'Insira o produto!';$validacao = False;}
        if (!empty($_POST['quantidade'])) {$quantidade = $_POST['quantidade'];
        } else {$quantidadeErro = 'Digite a quantidade!';$validacao = False;}
        if (!empty($_POST['colaborador'])) {$colaborador = $_POST['colaborador'];
        } else {$colaboradorErro = 'Digite seu nome!';$validacao = False;}}
    $setor = $_POST['setor'];	
    $observacao = $_POST['observacao'];
    $lote = $_POST['lote'];
    if ($validacao) {
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $sql = "INSERT INTO retirada (data, produto, quantidade, colaborador, setor, observacao, lote, valida_op) VALUES(NOW(),?,?,?,?,?,?,'valida')";
        $q = $pdo->prepare($sql);
        $q->execute(array($produto, $quantidade, $colaborador, $setor, $observacao, $lote));
        header("Location: retirada.php");}}?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css" 
    rel="stylesheet" integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" 
    crossorigin="anonymous">
<title>Retirada</title>
</head>
<body>
<div class="container">
<div clas="span10 offset1">
<div class="card">
<div class="card-header">
    <h3 class="well"> Cadastro de retirada </h3>
</div>
<div class="card-body">
    <form class="form-horizontal" action="retirada.php" method="post">
    <div class="control-group  <?php echo !empty($produtoErro) ? 'error ' : ''; ?>">
    <label class="control-label">Produto:</label><span class="style1">*</span>
    <div class="controls">
    <input size="50" class="form-control" name="produto" id="produto" type="text" placeholder="Digite o produto"
        value="<?php echo !empty($produto) ? $produto : ''; ?>">
    <?php if (!empty($produtoErro)): ?>
        <span class="text-danger"><?php echo $produtoErro; ?></span>
    <?php endif; ?>
    </div></div>
    <div class="control-group <?php echo !empty($quantidadeErro) ? 'error ' : ''; ?>">
    <label class="control-label">Quantidade:</label><span class="style1">*</span>
    <div class="controls">
    <input size="80" class="form-control" name="quantidade" type="number" placeholder="Digite a quantidade"
        value="<?php echo !empty($quantidade) ? $quantidade : ''; ?>">
    <?php if (!empty($quantidadeErro)): ?>
        <span class="text-danger"><?php echo $quantidadeErro; ?></span>
    <?php endif; ?>
    </div></div>
    <div class="control-group <?php echo !empty($colaboradorErro) ? 'error ' : ''; ?>">
    <label class="control-label">Colaborador:</label><span class="style1">*</span>
    <div class="controls">
    <input size="35" class="form-control" name="colaborador" type="text" placeholder="Digite seu nome"
        value="<?php echo !empty($colaborador) ? $colaborador : ''; ?>">
    <?php if (!empty($colaboradorErro)): ?>
        <span class="text-danger"><?php echo $colaboradorErro; ?></span>
    <?php endif; ?>
    </div></div>
    <div class="control-group">
    <label class="control-label">Setor:</label>
    <div class="controls">
    <input size="40" class="form-control" name="setor" type="text" placeholder="Setor de destino">                      
    </div></div>
    <div class="control-group">
    <label class="control-label">Observações:</label>
    <div class="controls">
    <input size="40" class="form-control" name="observacao" type="text" placeholder="Observações">                      
    </div></div>
    <div class="control-group">
    <label class="control-label">Lote(APENAS para PCR):</label>
    <div class="controls">
    <input size="40" class="form-control" name="lote" type="text" placeholder="Lote do(s) kit(s) de amplificação">                      
    </div></div>
    </br><h6 class="well" >Campos com <span class="style1">*</span> são obrigatórios</h6>
    <div class="form-actions">
    <br/>
    <button type="submit" class="btn btn-success">Adicionar</button>
    <a type="btn" class="btn btn-default" onclick=alerta()>Voltar</a>
    </div>
</form>
<div class="row">
<table align="center">					
<th align="center">Últimas retiradas:</th>   					     
</table>
<table class="table table-striped">							
<thead>	
<tr>
<th scope="col">Id</th>
<th scope="col">Data(A-M-D H:M:S)</th>
<th scope="col">Produto</th>
<th scope="col">Quantidade</th>
<th scope="col">Colaborador</th>                           
<th scope="col"></th>
</tr>
</thead>
<tbody>
<?php
$sql = 'SELECT * FROM retirada WHERE valida_op LIKE "valida" ORDER BY data DESC LIMIT 7';
date_default_timezone_set('America/Sao_Paulo');
foreach($pdo->query($sql)as $row){
    echo "
    <tr><th scope=row>". $row['id'] ."
	<td>". $row['data'] ."
    <td>". $row['produto'] ."
    <td align=center>". $row['quantidade'] ."
    <td align=center>". $row['colaborador'] ."                     	            
    <td width=250>
	<a align=right class='btn btn-danger'  onclick=alerta()>CANCELAR</a>";}?>
</tbody></table></div></div></div></div></div></div></body></html>

Eu ainda não tenho a menor experiência com validação e autenticação, mas estudando esse código eu aprendi a ver o problema de misturar JavaScript, HTML e PHP numa só página: o problema está nas aspas. No caso desse código, eu tive que criar uma função de alerta em separado, não dava para embutir aonde ele foi necessário (ou seja, no botao Voltar e Cancelar).

Screenshot_1.png

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...