Jump to content
mbmesquita

Não consigo acrescentar INPUT text no meu formulário

Recommended Posts

Bom dia amigos, estou com o seguinte problema:

Já tenho um form que está funcionando perfeitamente, envia todos os dados para o banco e tudo mais, só que preciso acrescentar um INPUT de text (para as pessoas escreverem comentários) nesse mesmo form, e quando coloco esse input e faço o envio pela página php, ele me informar um erro na parte das checkbox, gostaria de saber como fazer sem dar o erro.

 

a parte do código que já funciona é essa:

<?php
$id_usuario 		= $_SESSION['id_usuario'];
$cidade 			= $_POST['cidade2'];
$saloes 			= $_POST['saloes_ava'];
$valorapx 			= $_POST['valorapx'];
$atendimento	 	= $_POST['atendimento'];
$servico 			= $_POST['servico1'];
$tde 				= $_POST['tde'];
$ambiente 			= $_POST['ambiente'];


		$opcao='';
		for($i=0; $i <= count($_POST['servicosava']); $i++){
		$opcao+= $_POST['servicosava'][$i]. ' ';
		}

    $sql = " INSERT INTO feedback_recebido3 (id_usuario, cidade2, saloes_ava, servicosava, valorapx, atendimento, servico1, tde, ambiente)values($id_usuario,'$cidade', '$saloes', '".$opcao."', '$valorapx', '$atendimento', '$servico', '$tde', '$ambiente') ";


if(mysqli_query($conexao, $sql)){
	header('Location: feedsucesso.php') ;
} else {
echo 'Erro ao tentar inserir o registro';
}

?>

 

 

E outra questão, tenho essas checkbox que são nomes, que são enviadas e só recebo os values delas no banco de dados, na verdade só recebo as somas desses values.

Gostaria de saber se tem como eu receber além dessa soma, os nomes das checkbox que foram selecionadas?

 

Desde já agradeço.

Share this post


Link to post
Share on other sites

essa é a parte do input que quer adicionar:

 

<label for="comentario">Comentários</label>
	<input type="text" name="comentario" id="comentario" placeholder="Opcional"><br>

já havia criado a coluna na mesma tabela do banco e tudo mais, mas ao inserir esse input no arquivo de envio php, ele dá erro na parte da soma das checkbox, e retirando a parte do envio desse comentario, o form envia tudo correto.

 

Na parte das checkbox eu já tenho o value, que estão em valores númerais, mas queria receber além desses valores, os nomes, também. no html as checkbox estão assim:

<label for="servicosava1" >Serviços</label>
		<input type="checkbox" name="servicosava[]" onclick="verificar()" value="3" />Corte <br />
		<input type="checkbox" name="servicosava[]" onclick="verificar()" value="4" />Escova <br />
		<input type="checkbox" name="servicosava[]" onclick="verificar()" value="3" />Chapinha <br />
		<input type="checkbox" name="servicosava[]" onclick="verificar()" value="5" />Pintura <br />
		<input type="checkbox" name="servicosava[]" onclick="verificar()" value="5" />Hidratação <br />
		<input type="checkbox" name="servicosava[]" onclick="verificar()" value="9" />Progressiva <br />
		<input type="checkbox" name="servicosava[]" onclick="verificar()" value="10" />Outra Química <br />
		<input type="checkbox" name="servicosava[]" onclick="verificar()" value="3" />Unha <br />
		<input type="checkbox" name="servicosava[]" onclick="verificar()" value="4" />Depilação <br />
		<input type="checkbox" name="servicosava[]" onclick="verificar()" value="10" />Penteado <br />
		<input type="checkbox" name="servicosava[]" onclick="verificar()" value="10" />Maquiagem <br />
		<input type="checkbox" name="servicosava[]" onclick="verificar()" value="3" />Sombrancelha <br />

 

Share this post


Link to post
Share on other sites

tu tem vários checkbox com mesmos values aí dá conflito e não vi a parte do POST onde pega o comentario

Share this post


Link to post
Share on other sites
25 minutos atrás, marsolim disse:

tu tem vários checkbox com mesmos values aí dá conflito e não vi a parte do POST onde pega o comentario

 

Sim, mas elas não geram conflito não, após selecionadas elas simplesmente se somam e cai no banco de dados somadas, até então está tudo ok.

 

Eu preciso é adicionar os comentários sem que dê erro na soma das checkbox, porque do jeito que tá, o form funciona perfeitamente.

 

com o POST dos comentários fica assim:

<?php
$id_usuario 		= $_SESSION['id_usuario'];
$cidade 			= $_POST['cidade2'];
$saloes 			= $_POST['saloes_ava'];
$valorapx 			= $_POST['valorapx'];
$atendimento	 	= $_POST['atendimento'];
$servico 			= $_POST['servico1'];
$tde 				= $_POST['tde'];
$ambiente 			= $_POST['ambiente'];
$coment				= $_POST['comentarios'];


		$opcao='';
		for($i=0; $i <= count($_POST['servicosava']); $i++){
		$opcao+= $_POST['servicosava'][$i]. ' ';
		}

    $sql = " INSERT INTO feedback_recebido3 (id_usuario, cidade2, saloes_ava, servicosava, valorapx, atendimento, servico1, tde, ambiente, comentarios)values($id_usuario,'$cidade', '$saloes', '".$opcao."', '$valorapx', '$atendimento', '$servico', '$tde', '$ambiente', '$coment') ";


if(mysqli_query($conexao, $sql)){
	header('Location: feedsucesso.php') ;
} else {
echo 'Erro ao tentar inserir o registro';
}

?>

 

Share this post


Link to post
Share on other sites
23 minutos atrás, marsolim disse:

tenta trocar $opcao = '' por $opcao = 0

 

teste desse jeito e me retorna esse erro:

 

Notice: Undefined index: comentarios in C:\xampp\htdocs\aa_beauty_feedback_at\inclui_feed.php on line 34

Notice: Undefined offset: 3 in C:\xampp\htdocs\aa_beauty_feedback_at\inclui_feed.php on line 42
Erro ao tentar inserir o registro

Share this post


Link to post
Share on other sites

e onde é que tá esse campo atendimento? no seu for tem um com nome comentario e não atendimento

Share this post


Link to post
Share on other sites

O operador deveria ser .= invés de += .

Não seria isso?

 

		$opcao='';
		for($i=0; $i <= count($_POST['servicosava']); $i++){
		$opcao .= $_POST['servicosava'][$i]. ' ';
		}

 

Share this post


Link to post
Share on other sites
23 minutos atrás, marsolim disse:

e onde é que tá esse campo atendimento? no seu for tem um com nome comentario e não atendimento

 

tem um com atendimento sim, são campos diferentes, mas existe os 2.

 

17 minutos atrás, Prog disse:

O operador deveria ser .= invés de += .

Não seria isso?

 


		$opcao='';
		for($i=0; $i <= count($_POST['servicosava']); $i++){
		$opcao .= $_POST['servicosava'][$i]. ' ';
		}

 

 

Obrigado pela resposta Prog, antes eu estava fazendo com .= mas ele caia no banco sem a soma, por exemplo: caia 3 9 10

ai troquei para += e agora ta caindo corretamente, 22 , pois eu retorno esses dados já somados para um painel de usuário.

 

Eu só não estou entendendo porque dá erro quando adiciono o campo comentário, sendo que sem esse campo o form funciona corretamente e envia tudo correto para o banco de dados..

Share this post


Link to post
Share on other sites

e o nome do campo é comentario ou comentarios? verifica se não tá fazendo confusão com os nomes, e só pra desencargo, esse campo tá dentro do das tags <form> e </form>?

Share this post


Link to post
Share on other sites

Olha só...

 

Se você precisa somar valores numéricos, esta linha esta errada:

 

$opcao+= $_POST['servicosava'][$i]. ' ';

 

Tente:

 

$opcao=0;
for($i=0; $i <= count($_POST['servicosava']); $i++){
$opcao += (int)$_POST['servicosava'][$i];
}

 

Qual erro dá no seu código?

  • +1 1

Share this post


Link to post
Share on other sites
8 minutos atrás, marsolim disse:

e o nome do campo é comentario ou comentarios? verifica se não tá fazendo confusão com os nomes, e só pra desencargo, esse campo tá dentro do das tags <form> e </form>?

 

Isso faz sentido, no código que ele postou está "comentario" e "comentarios".

Share this post


Link to post
Share on other sites
1 hora atrás, marsolim disse:

e o nome do campo é comentario ou comentarios? verifica se não tá fazendo confusão com os nomes, e só pra desencargo, esse campo tá dentro do das tags <form> e </form>?

 

Sim, está tudo dentro do form e realmente tinha confundido os nomes mas já arrumei e continua dando o mesmo erro.

 

59 minutos atrás, Prog disse:

Olha só...

 

Se você precisa somar valores numéricos, esta linha esta errada:

 


$opcao+= $_POST['servicosava'][$i]. ' ';

 

Tente:

 


$opcao=0;
for($i=0; $i <= count($_POST['servicosava']); $i++){
$opcao += (int)$_POST['servicosava'][$i];
}

 

Qual erro dá no seu código?

 

Obrigado pelo toque Prog, arrumei e funcionou da mesma forma que antes, mas acredito que assim seja mais correto mesmo.

 

Mas fiz tudo certo e ajustei os nomes do comentario, e continua dando o mesmo erro, esse aqui:

 


Notice: Undefined offset: 3 in C:\xampp\htdocs\aa_beauty_feedback_at\inclui_feed.php on line 42
Erro ao tentar inserir o registro

Share this post


Link to post
Share on other sites

e quem é line 42? o que ela carrega? quais suas aspirações, seus anseios, seus desejos? 

Share this post


Link to post
Share on other sites

Simples. Basta você olhar para o seu for, você pede para ele somar enquanto for menor ou igual.

Troque para menor apenas.

 

Motivo do erro: Digamos que você tenha 3 retornado pelo count

o for vai contar de 0 - 2 (o que é 3), caso você coloque menor ou igual ele vai somar de 0 - 3, ou seja ele vai tentar receber um quadro inexistente.

Até mais.

 

11 minutos atrás, mbmesquita disse:

for($i=0; $i < count($_POST['servicosava']); $i++)
{

 $opcao += (int)$_POST['servicosava'][$i];
}

 

  • +1 1

Share this post


Link to post
Share on other sites
30 minutos atrás, marsolim disse:

e quem é line 42? o que ela carrega? quais suas aspirações, seus anseios, seus desejos? 

 

essa é a linha 42:

$opcao += (int)$_POST['servicosava'][$i];

eu só quero simplesmente que o meu form continue funcionando e que eu consiga enviar para o banco de dados com o input de comentarios, só isso.

 

27 minutos atrás, jamesbond disse:

Simples. Basta você olhar para o seu for, você pede para ele somar enquanto for menor ou igual.

Troque para menor apenas.

 

Motivo do erro: Digamos que você tenha 3 retornado pelo count

o for vai contar de 0 - 2 (o que é 3), caso você coloque menor ou igual ele vai somar de 0 - 3, ou seja ele vai tentar receber um quadro inexistente.

Até mais.

 

 

 

beleza, tirei o = e deixei só o menor < mas ele passou a parte do código e retornou o erro

 

Erro ao tentar inserir registro, caiu no else

 

if(mysqli_query($conexao, $sql)){
	header('Location: feedsucesso.php') ;
} else {
echo 'Erro ao tentar inserir o registro';
}

 

Share this post


Link to post
Share on other sites

Tu pode dar um print no comando de INSERT e colar aqui pra gente ver?

Ou... Tirar o mysqli_query() do IF e colar a mensagem de erro que está aparecendo.

Share this post


Link to post
Share on other sites

 

1 minuto atrás, Prog disse:

Tu pode dar um print no comando de INSERT e colar aqui pra gente ver?

ai Prog

$sql = " INSERT INTO feedback_recebido3 (id_usuario, cidade2, saloes_ava, servicosava, valorapx, atendimento, servico1, tde, ambiente, comentarios)values($id_usuario,'$cidade', '$saloes', '".$opcao."', '$valorapx', '$atendimento', '$servico', '$tde', '$ambiente', '$coment') ";


if(mysqli_query($conexao, $sql)){
	header('Location: feedsucesso.php') ;
} else {
echo 'Erro ao tentar inserir o registro';
}

agora ele passa direto e para no else.

Share this post


Link to post
Share on other sites

Tire todo o IF e rode apenas mysqli_query(); faça um print no $sql também.

 

Exemplo:

 

$sql = " INSERT INTO feedback_recebido3 (id_usuario, cidade2, saloes_ava, servicosava, valorapx, atendimento, servico1, tde, ambiente, comentarios)values($id_usuario,'$cidade', '$saloes', '".$opcao."', '$valorapx', '$atendimento', '$servico', '$tde', '$ambiente', '$coment') ";

print $sql;
mysqli_query($conexao, $sql);

/*if(mysqli_query($conexao, $sql)){
	header('Location: feedsucesso.php') ;
} else {
echo 'Erro ao tentar inserir o registro';
}*/

 

  • +1 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By EstilloWeb
      Está ocorrendo um erro em meu comando MySQL na ordenação dos resultados. O código é o seguinte:
      $sql_imos4 = "Select DISTINCT imovel FROM propostas ORDER BY id DESC"; $exe_imos4 = mysqli_query($conexao, $sql_imos4); O objetivo é listar uma única vez um imóvel com proposta, mesmo que haja dois ou mais registros, sempre ordenado mais recente. O que está ocorrendo quando o imóvel tem mais de uma proposta cadastrada, a ordenação está sendo feita pelo ID da proposta mais antiga.
      Exemplo:
      imóvel ref. 4528 tem duas propostas, sendo que a mais recente tem o ID 235 porém aparece na listagem abaixo do imóvel ref. 4325, que tem uma só proposta e ID 230.
      O resultado deveria estar invertido neste caso.
      Onde pode estar o erro? Agradeço a ajuda.
    • By tii3030
      Olá, gostaria de saber qual a melhor maneira de selecionar e verificar a senha hash(senha) em um banco de dados e comparar com a senha inserida pelo usuário em um formulário de login. É mais adequado armazenar no BD o salt ? No exemplo abaixo eu criei o hash da senha antes de selecionar no banco:
      <?php include('conf.php'); $email = 'lala@123.com'; $senha = 'lala.123'; $custo = '08'; $salt = 'Cf1f11ePArKlBJomM0F6aJ'; $hash = crypt($senha, '$2a$' . $custo . '$' . $salt . '$'); $query_select = "SELECT email, password FROM usuarios WHERE email = '$email' AND password = '$hash'"; $select = mysqli_query($conexao,$query_select); if (mysqli_num_rows($select) == 1) { echo "Login Permitido"; } else { echo "Login ou senha invalidos"; } ?> Já neste exemplo eu selecionei o hash no banco para depois comparar com a senha inserida no formulário utilizando o password_verify():
      <?php #----------------- INCLUDING FILE --> "conf.php" include('conf.php'); if (isset($_POST['submit'])) { $email = mysqli_real_escape_string($conexao, $_POST['email']); $password = mysqli_real_escape_string($conexao, $_POST['password']); $query_select_email = "SELECT email FROM usuarios WHERE email = '$email'"; $select_email = mysqli_query($conexao,$query_select_email); $query_select_password = "SELECT password FROM usuarios"; $select_password = mysqli_query($conexao,$query_select_password); while($array = mysqli_fetch_array($select_password)) { $logarray = $array['password']; if (password_verify($password, $logarray) && mysqli_num_rows($select_email) == 1) { echo "Login permitido"; } } } ?> Aceito qualquer dica relacionado a segurança e para melhorar o código, desde já agradeço.
    • By tii3030
      Olá pessoal, desenvolvi um pequeno código em PHP com a função de verificar e validar usuário e senha de um formulário, juntamente com o meu banco de dados MySql.
      Gostaria de saber como aprimorar o meu código para torna-lo mais seguro e mais próximo de algo "profissional". Lembrando que minha senha no banco está criptografada (PASSWORD_BCRYPT).
       
      <?php
          #----------------- INCLUDING FILE --> "conf.php"
          include('conf.php');
              if (isset($_POST['submit'])) {
             
      #--------------------------------INPUTS ---------------------------------------------#
                  $email = mysqli_real_escape_string($conexao, $_POST['email']);
                  $password = mysqli_real_escape_string($conexao, $_POST['password']);
      #-----------------------#----------------------#-----------------_#-------------------#
                  $query_select_email = "SELECT email FROM usuarios WHERE email = '$email'";
                  $select_email = mysqli_query($conexao,$query_select_email);
                  $query_select_password = "SELECT password FROM usuarios";
                  $select_password = mysqli_query($conexao,$query_select_password);
                  while($array = mysqli_fetch_array($select_password)) {
                  $logarray = $array['password'];
                  
                      if (password_verify($password, $logarray)) {
                          if (mysqli_num_rows($select_email) == 1) {
                              
                          $_SESSION['email'] = $email;
                          header('location: XXX.html');
                          exit();
                          }
                      }
                      else {
                          echo "Loguin ou senha incorretos";
                      }
                  $logarray = '0';
                  }
              }
      ?>
    • By michelmir
      Olá!
       
      Recentemente fiz uma postagem aqui no fórum a respeito de se carregar valores em um input text baseando-se na opção selecionada em uma select box, onde obtive uma solução. Por conta disso resolvi adicionar um complemento neste  meu código onde o mesmo deve carregar valores corretamente dentro de uma input text utilizando o plugin TypeAhead.js e o evento onchange do Jquery.
       
      Como forma de demonstrar a minha dúvida em funcionamento, criei uma página como forma de testar a solução. O que ocorre é que quando seleciona uma opção no select box  "Categorias", o Ajax manda um request para o php script onde o mesmo retorna os valores corretamente em JSON conforme a imagem do console do navegador Chrome abaixo:
       
       
       
      Até aqui os valores relacionados com a opção selecionada no select box "Categorias" são carregados corretamente porém se eu não atualizar a página "F5" e ao mesmo tempo eu selecionar alguma outra opção dentro do select box, o input text carrega além dos valores relacionados, todos os valores não relacionados com a opção selecionada ou seja, o input text somente carrega os valores corretamente se eu atualizar a página em questão.
       
      Abaixo uma imagem demonstrando os valores carregados em uma input text quando seleciono uma outra opçao no select box quando não se atualiza a página. Todos os valores não relacionados também são carregados:
       

       
      Abaixo publico o html e os scripts Ajax, Typeahead e PHP que estou utilizando neste projeto:
       
      HTML
      <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta charset="utf-8"> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"> <!-- jQuery library --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <!-- jQuery UI library --> <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css"> <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-3-typeahead/4.0.2/bootstrap3-typeahead.min.js"></script> </head> <body> <div class="container"> <br> <h1>DYNAMIC TWITTER TYPEAHEAD</h1> <br> <div class="row"> <?php // Include the database config file include_once 'dbConfig.php'; // Fetch all the country data $query = "SELECT * FROM categorias ORDER BY categoria ASC"; $result = $db->query($query); ?> <!-- categoria dropdown --> <div class="col-md-4"> <select id="categoriaFK" name="categoriaFK" class="form-control"> <option value="">seleciona categoria</option> <?php if($result->num_rows > 0){ while($row = $result->fetch_assoc()){ echo '<option value="'.$row['categoriaID'].'">'.$row['categoria'].'</option>'; } }else{ echo '<option value="">Categoria não encontrada</option>'; } ?> </select> </div> <div class="col-md-4" id="prod"> <div ><input type="text" name="produtos" id="produtos" class="form-control input-lg typeahead" autocomplete="off" placeholder="" /></div> </div> <div class="col-md-4"> <div id="imagem" name="imagem"></div> </div> </div> </div> </body> </html>  
      No script abaixo, o Ajax envia um request para o script PHP que por sua vez retorna os valores em JSON para o Ajax que envia para o TypeAhead e carrega o input text com valores relacionados. Após selecionar uma opção no input text, o Jquery envia um valor relacionado para a div "#imagem" :
       
      $(document).ready(function(){ var produtos; var nomes = []; // array var lista = {}; // objeto $('#categoriaFK').on('change', function(){ var queryID = $(this).val(); $.ajax({ url:"fetch.php", method:"POST", data:{categoria:queryID}, dataType:"json", success:function(data){ console.log(data); $.each(data, function(i, optionHtml){ $('#produtos').append(optionHtml); }); $("#imagem").empty(''); $(".typeahead").val(''); produtos = data; } }); $('.typeahead').typeahead({ source: function(query, result) { $.each(produtos, function(idx, item){ if(!~nomes.indexOf(item.nomeProduto)) nomes.push(item.nomeProduto); lista[item.nomeProduto] = item.imagem; }); return result(nomes); }, afterSelect: function (data) { var img = lista[data]; $('#imagem').html(img); }, }); }); });  
      Abaixo, o php script que seleciona os valores baseando-se no valor selecionado do select box e os envia em formato JSON para o Ajax:
       
      <?php require_once 'dbConfig.php'; if(!empty($_POST["categoria"])){ $query = " SELECT * FROM produtos WHERE categoriaFK = ".$_POST['categoria']." "; $result = $db->query($query); $data = array (); if ( $result->num_rows > 0 ) { while($row = $result->fetch_assoc ()) { $data[] = $row; } header("Content-type: application/json; charset=utf-8 cache-control: no-cache, no-store, must-revalidate"); echo json_encode($data); exit(); } } ?> No caso como mencionado acima, nesta página que criei demonstra o funcionamento de todo o código acima, porém acredito que devo modificar o script para que o mesmo carregue valores corretamente quando seleciono alguma opção no select box "Categorias" sem precisar atualizar a página para que o mesmo carregue corretamente. 
       
      Como posso proceder? Desde já agradeço a atenção de todos.
    • By noxer
      Boa tarde, Preciso atribuir o valor de uma textarea para uma var e a exibir em um p. Fiz bem simples usando js/jquery mas agora preciso fazer em php.
       
      Ja tentei $variavel = $_POST['nomedocampo']; mas não obtive resultado
       
       
      Segue o trecho em js
      <textarea class="wapf-input" ></textarea> <button class="sendPDF">PDF</button> <p class="geratedPDF"></p>  
      $('.sendPDF').on('click', toPDF) function toPDF() { var textareaValue = $('.wapf-input').val() $('.geratedPDF').text(textareaValue) }
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.