Ir ao conteúdo

Posts recomendados

Postado

Como deixo a seleção do radio marcada após o usuario escolher "yes" ou "no" e mandar a informação pra tabela usuario em PhpMyAdmin.

Minha tabela dentro da "users" se chama "compound" é varchar,255, none.

Deixa eu ver se consigo explicar melhor, o que eu preciso é deixar no html é a opção " compound(mesmo nome da tablela)" e ao lado, os inputs"sim" e o outro "não", mas de forma que a pessoa escolha e que a opção não suma depois de dar F5, e que a opção escolhida fosse diretamente salva na DB no Phpmyadmin(compound).

 <div class="container" style="width:500px;">  
                <h3 class="text-center">Compound</h3>  
                <div class="radio">  
                     <input type="radio" name="compound" value="yes" />Yes <br />  
                     <input type="radio" name="compound" value="no" />No <br />  
                </div>  
                <div id="result"></div>  
           </div>  
           <br /> 

OBS: Poderia ser um checkbox também, tendo somente a opção de marcar

  • Moderador
Postado

@Bob2019 Olá, seja bem vindo  em nosso Clube do Hardware.

 

Creio que tem alguns meios de fazer isso de formas distintas.  

1)utilizar o local storage do usuário 

2)usar o php  e se quiser de forma mais dinâmica o jquery pode ser usado também.

 

Particularmente, acho mais interessante usar o local storage do usuário, mas se você pretende usar um banco de dados, antes precisa alterar o campo que vai conter o valor do radio button.  

Eu trocaria de varchar, para tinyint.   onde o zero será não, e o 1 será o sim. Assim fica mais fácil de lidar do que em texto.

 

Você vai ter que implementar um jeito de ao clicar no botão sim, faz um update set no campo da tabela,  e se apertar em não depois faz um novo update set.

 

E manter isso puxando o dado no banco, lembrando daquela premissa de que o valor no campo for zero, aplica um checked no elemento "no"

 

 

 

 

Postado
8 horas atrás, DiF disse:

@Bob2019 Olá, seja bem vindo  em nosso Clube do Hardware.

 

Creio que tem alguns meios de fazer isso de formas distintas.  

1)utilizar o local storage do usuário 

2)usar o php  e se quiser de forma mais dinâmica o jquery pode ser usado também.

 

Particularmente, acho mais interessante usar o local storage do usuário, mas se você pretende usar um banco de dados, antes precisa alterar o campo que vai conter o valor do radio button.  

Eu trocaria de varchar, para tinyint.   onde o zero será não, e o 1 será o sim. Assim fica mais fácil de lidar do que em texto.

 

Você vai ter que implementar um jeito de ao clicar no botão sim, faz um update set no campo da tabela,  e se apertar em não depois faz um novo update set.

 

E manter isso puxando o dado no banco, lembrando daquela premissa de que o valor no campo for zero, aplica um checked no elemento "no"

 

 

 

 

 

Olá,  Alterei o campo na db(compound) de varchar para  tinyint.  Mas como conseguiria enviar essas  informações do html até a db? desculpe mas sou leigo no assunto,

gostaria de tentar adicionar isto da melhor forma

Postado

Eu uso php:

 

Se você não sabe nada sobre php, esse site é gringo mais é muito bom: https://www.w3schools.com/php/default.asp

 

se você já tem uma noção então você faz assim, faz um formulario (tipo get ou post depende de você) no input de radio você faz assim:

<input type="radio" name="genero" value="mulher">Mulher
<input type="radio" name="genero" value="homen">Homen
<input type="radio" name="genero" value="outro">Outro

ok ate ai, agora vamos pro php, você pode fazer ele interno ou externo, se for fazer interno o action do form deixe assim

<form action="" method="post">

vamos pro php: crie uma conexão com o banco de dados, e pegar os dados para enviar ao banco de dados

!!! NÃO COPIE O CÓDIGO, ESTOU MOSTRANDO UMA DAS OPÇÕES TEM MAIS ESSA É A QUE EU ESCOLHO, você PODE FAZER ASSIM MAIS ESTUDE PARA APRENDER  !!!

<?php
$server = "nomedoserver";
$usuariodb = "usuariodatabase";
$senhadb = "senhadatabase";

$conn = new mysqli($server, $usuariodb, $senhadb);//faz a conexão

if ($conn->connect_error) {
    die("Conexão falhou: " . $conn->connect_error);//ve se a conexão não deu erro
} 
/*aqui agora vai depender de você, se você vai fazer a verificação se os dados estão em branco essas coisas la no site explica bem isso
ai é com você, e quais mensagen de erro essas coisas assim eu vou te mostrar somete do input de radio*/

$generoerror = "";//cria a variavel de erro

if(empty($_POST['genero']){
  $generoerror = "Escolha uma opção";//da a mensagem de erro se tiver vazio
}else{
  $genero = $_POST['genero'];//armazena a opção do usuario na variavel
}

$datainsert = "INSERT INTO nomedatabela (genero)
VALUES ($genero)";//esse é o mysqli para enviar ao banco de dados, mysqli é a linguagem de gerenciamento do banco de dados
// no mysqli você manipula o banco de dados
   
if (mysqli_query($conn, $datainsert)){
  echo("Dados cadastrados");//envia os dados para o banco de dados
}else{
  echo("Ocorreu um erro, tente novamente, se o erro continuar entre em contato em: [email protected]");//da essa mensagem se der algum erro
}

mysqli_close($conn);//fecha a conexão
   
?>

essa é a minha escolha tem outras mais cada um com a sua

 

espero ter ajudado.

Postado

Fiz como dito, editei com minhas configurações e deu erro, logo apos adicionei o campo($banco), aconteceu o mesmo erro

no HTML PUS :

<form action="" method="post">
<td>Compound</td> 
<input type="radio" name="compound" value="yes">Yes
<input type="radio" name="compound" value="no">No
</form>

e no top da pág adicionei o código abaixo:

<?php
$server = "xxxxxxxxxxxx";
$banco = "xxxxxxxxxxxx";
$usuariodb = "xxxxxxxxxxxx";
$senhadb = "xxxxxxxxxxxx";

$conn = new mysqli($server, $banco, $usuariodb, $senhadb);

if ($conn->connect_error) {
    die("Conexão falhou: " . $conn->connect_error);
} 

$compounderror = "";

if(empty($_POST['compound']){
  $compounderror = "Escolha uma opção";
}else{
  $compound = $_POST['compound'];
}

$datainsert = "INSERT INTO compound
VALUES ($compound)";
   
if (mysqli_query($conn, $datainsert)){
  echo("Dados cadastrados");
}else{
  echo("Ocorreu um erro, tente novamente, se o erro continuar entre em contato em: [email protected]");
}

mysqli_close($conn);
   
?>

 

  • Moderador
Postado

@Bob2019 Posso estar errado, mas a sua sintaxe de insert tá faltando coisa.

 

$datainsert = "INSERT INTO compound (compound)
VALUES ($compound)";

 

Ademais, eu ainda acho que a melhor escolha é gravar este dado exclusivamente em uma local store, por ser mais rápida de acessar e manipular. Lembrando que você diz, que a pessoa pode mudar a qualquer momento.

 

 

Postado

ops faltou uma barra aqui:

if(empty($_POST['genero']){
  $generoerror = "Escolha uma opção";//da a mensagem de erro se tiver vazio
}else{
  $genero = $_POST['genero'];//armazena a opção do usuario na variavel
}

fica assim:

if(empty($_POST['genero'])){
  $generoerror = "Escolha uma opção";//da a mensagem de erro se tiver vazio
}else{
  $genero = $_POST['genero'];//armazena a opção do usuario na variavel
}

erro meu na hora de digitar o código

adicionado 0 minutos depois

@DiF ta não

  • Moderador
Postado

@Bob2019 Sim, aquela sintaxe estava errada.

Não se pode omitir o nome do campo.

 

A sintaxe de insert deve respeitar:

O nome da tabela e o nome do campo.

Do jeito que estavas fazendo, não estava informando o campo.

INSERT into [tabela] (campo) VALUES (dado)

 

Logo, a sintaxe correta da sua query tem que ser:

INSERT into compound (compound) values ("$compound")

 

Eu recomendo que você não use a forma orientada a objetos, já que você é iniciante.

 

Devo perguntar mais uma vez,  esse dado que você quer guardar, precisa essencialmente que fique em um banco de dados? 

 

Respondendo sua pergunta anterior, como vai usar o BD com o campo em tinyint?  Simples como falei anteriormente este tipo espera zero ou 1.

 

QUANDO estiver com zero, é falso, e 1 é true,   ou seja, ele age como um valor booleano.

Logo, de início você define como zero, valor padrão,  e se a pessoa clicar em yes,  altera para 1. 

Como antes dito, é muito mais fácil comparar números do que strings.

 

Naturalmente a lógica que você vai usar é:

o valor padrão no banco de dados é zero e não nulo.

Quando clicar em yes, e confirmar, você  só precisa fazer um UPDATE set na no campo destinado e não um insert.

 

Para trazer o valor de volta ao dar um F5, você tem que fazer a consulta, pegar o resultado e comparar exemplo extremamente simples:

 

<div class="radio">
    <?php
       include 'conexao.php';
  
       $select = mysqli_query($conexao, "SELECT compound FROM users WHERE ID = 1");
       
       $user = mysqli_fetch_object($select);
       if($user->compound == 0):
          echo "<input type='radio' name='compound' checked/>No";
       else:
          echo "<input type='radio' name='compound' checked/>yes"; 
       endif;
  
</div> 

Basicamente, o exemplo acima faz a verificação do campo na tabela, se o valor dela for zero, a opção NO será "checkada". senão será a yes.

 

Porque eu coloquei um where id = 1?   bem, isso é só para fins de ilustração. No caso o valor do ID será o mesmo do usuário logado no seu sistema. E tem que ser feito assim, porque senão, a mesma opção será para todos os usuários.

 

E se você ainda quiser um dinamismo a mais, em tempo real,  precisará usar o ajax, que por sinal seria uma boa escolha, embora  eu ainda prefiro, como disse anteriormente, tratar disso sempre pelo lado do cliente, ou seja, guardar esse dado em um local storage ou até mesmo em cookie.

Isso é o mesmo caso dos sites que tem sistema de login persistente, onde você marca a opção " lembrar login" 

 

Postado

Fiz as alterações e apresentou outro erro:

1467310143_pagerro.thumb.png.e628eb495503ab73c5e6664731ea8988.png

 

Simplesmente criei o php com o script do amigo acima colocando em "conexao.php" e alterando a linha onde você disse

anterior era: 

$datainsert = "INSERT INTO compound
VALUES ($compound)";

alterei para:

INSERT into compound (compound) values ("$compound")

 

e no html pus o codigo que deu de exemplo, este:

 

<div class="radio">
    <?php
       include 'conexao.php';
  
       $select = mysqli_query($conexao, "SELECT compound FROM users WHERE ID = 1");
       
       $user = mysqli_fetch_object($select);
       if($user->compound == 0):
          echo "<input type='radio' name='compound' checked/>";
       else:
          echo "<input type='radio' name='compound' checked/>"; 
       endif;
  ?>
</div> 

adicionando apenas o "?>" acima do "</div>" logo após veio esse erro da imagem.

 

lembrando que a tabela "compound" está em tinyint. 

  • Moderador
Postado

@Bob2019 Preciso chamar sua atenção, que todos os códigos apresentados aqui são exemplos.  Não pode copiá-los e achar vai funcionar. 

Aparentemente você tem que interpretar os erros que aparecem.  Na postagem anterior, estava apresentando erro de acesso  negado e mais um monte de variáveis,

no segundo erro, é problema de arquivo não encontrado.

 

Não sei por onde você está desenvolvendo, mas me parece que você está usando o modelo MVC de "model view controller"  muito comum em CMS, como worpress, joomla e outros.

 

Como você mesmo disse, é iniciante, então recomendo que faça testes de estudo. crie um formulário simples, um arquivo php simples e teste.

 

Ademais, se você seguiu as dicas, não pode usar o insert into, pois o campo tinyint já vai possuir um valor padrão que é zero.

Então tens que usar o update set.

 

Do jeito que estas fazendo, toda vez que fazer uma alteração de escolha, vai gerar um novo registro, o que vai impossibilitar de recuperar o valor, pois aí você tem que ter o valor ID do registro.

 

Pelo que eu notei no tópico, é um erro típico de iniciantes, em outras palavras colocar a carroça na frente dos bois.

Por sugestão, não use frameworks, CMS e nem nada do tipo.  Use o php de forma procedural e aperfeiçoe. Depois você parte para algo mais complexo.

 

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!