Update PHP [RESOLVIDO]

1. Update PHP [RESOLVIDO]

Roberto Costa
asparion

(usa CentOS)

Enviado em 13/01/2021 - 17:13h

Boa tarde amigos VOL

Gostaria de uma ajuda no seguinte:
Quando nao ha seleção no Checkbox na hora de atualizar, ele esta salvando em branco no banco e subscrevendo o que esta salvo.
Como faz para caso nao seje selecionado checkbox ele nao faça updade

Segue:


if(!empty($_POST['acessorios']) && count($_POST['acessorios']) ){
$acessorios = implode(',', $_POST['acessorios']);
$new_acessorios = $acessorios;
}

<input type="checkbox" name="acessorios[]" value="Carregador">Carregador<br>
<input type="checkbox" name="acessorios[]" value="Fone de Ouvido">Fone de Ouvido<br>
<input type="checkbox" name="acessorios[]" value="Bateria">Bateria<br>
<input type="checkbox" name="acessorios[]" value="Cabo de Dados">Cabo de Dados<br>
<input type="checkbox" name="acessorios[]" value="Manual de Instrução">Manual de Instrução<br>
<input type="checkbox" name="acessorios[]" value="Monitor">Monitor<br>
<input type="checkbox" name="acessorios[]" value="Adaptador Wi-Fi">Adaptador Wi-Fi<br>
<input type="checkbox" name="acessorios[]" value="Nenhum dos Itens">Nenhum dos Itens<hr>


Valeu abraços


  


2. MELHOR RESPOSTA

Ruan
ru4n

(usa Debian)

Enviado em 13/01/2021 - 22:30h

Tenta assim:
<?php

$id = $_GET['id'];

$sql = mysqli_query($conexao, "SELECT * FROM tb_computers WHERE id='$id' ");
while ($dado = $sql->fetch_assoc()){
}

$acessorios = null;

if(!empty($_POST['acessorios']) && count($_POST['acessorios']) ){
$acessorios = implode(',', $_POST['acessorios']);
}

if (isset ($_POST['salvar'])){

$update = null;

if($acessorios) {
$update = mysqli_query($conexao, "UPDATE tb_computers SET acessorios='$acessorios', WHERE id = '$id'");
}

if(!$update){
echo "<script>alert ('Ocorreu um erro ao Atualizar!');</script><script>location.href='index.php'</script>";
}else{
echo "<script>location.href='index.php'</script>";
}
}
?>


3. Re: Update PHP [RESOLVIDO]

Ruan
ru4n

(usa Debian)

Enviado em 13/01/2021 - 17:27h

Deixe marcado a opção selecionada que vem do banco, fazendo uma verificação em cada input. Se for a opção selecionada, passe o atributo checked.


4. Re: Update PHP

Roberto Costa
asparion

(usa CentOS)

Enviado em 13/01/2021 - 17:28h

Não entendi, só quero que o $_POST não passe informação em branco para o banco substituindo o que já esta salvo.


5. Re: Update PHP

Ruan
ru4n

(usa Debian)

Enviado em 13/01/2021 - 22:10h

asparion escreveu:

Não entendi, só quero que o $_POST não passe informação em branco para o banco substituindo o que já esta salvo.


O attributo checked marca as opções desejadas. Veja em:
https://www.w3schools.com/tags/att_input_checked.asp

No caso, vc verificaria qual opção está salva no banco, e com esse dado, vc faria uma verificação dentro do input para deixar a opção selecionada, evitando sempre em deixar a opção em branco.

Por exemplo:
<input type="checkbox" name="acessorios[]" value="Monitor" <?php if(in_array('Monitor', $acessorios)) echo 'checked'; ?>>Monitor<br> 

Outra coisa: vc tá fazendo update quando essa variável $new_acessorios não existe? Pelo trecho postado, essa variável é criada somente quando existir algum valor dentro de $_POST['acessorios'] ...
if(!empty($_POST['acessorios']) && count($_POST['acessorios']) ){
$acessorios = implode(',', $_POST['acessorios']);
$new_acessorios = $acessorios;
}

ps: poderia usar somente $acessorios.
Não tem sentido a próxima linha:
$new_acessorios = $acessorios; 



6. Re: Update PHP

Roberto Costa
asparion

(usa CentOS)

Enviado em 13/01/2021 - 22:18h

Segue Codigo Completo



$id = $_GET['id'];

$sql = mysqli_query($conexao, "SELECT * FROM tb_computers WHERE id='$id' ");
while ($dado = $sql->fetch_assoc()){
}
?>

<?php

if(!empty($_POST['acessorios']) && count($_POST['acessorios']) ){
$acessorios = implode(',', $_POST['acessorios']);
$new_acessorios = $acessorios;
}

if (isset ($_POST['salvar'])){

$update = mysqli_query($conexao, "UPDATE tb_computers SET acessorios='$new_acessorios' WHERE id = '$id'");

if($update == ''){
echo "<script>alert ('Ocorreu um erro ao Atualizar!');</script><script>location.href='index.php'</script>";
}else{
echo "<script>location.href='index.php'</script>";
}
}
?>

<tr>
<td><label>Acessórios:</label></td>
<td>
<input type="checkbox" name="acessorios[]" value="Carregador">Carregador<br>
<input type="checkbox" name="acessorios[]" value="Fone de Ouvido">Fone de Ouvido<br>
<input type="checkbox" name="acessorios[]" value="Bateria">Bateria<br>
<input type="checkbox" name="acessorios[]" value="Cabo de Dados">Cabo de Dados<br>
<input type="checkbox" name="acessorios[]" value="Manual de Instrução">Manual de Instrução<br>
<input type="checkbox" name="acessorios[]" value="Monitor">Monitor<br>
<input type="checkbox" name="acessorios[]" value="Adaptador Wi-Fi">Adaptador Wi-Fi<br>
<input type="checkbox" name="acessorios[]" value="Nenhum dos Itens">Nenhum dos Itens<hr>
</td>
</tr>


se eu selecionar apenas 1 e salvar, e depois voltar e nao selecionar nenhum ele apaga no banco o que foi salvo, subscreve vazio entendeu :-(



7. Re: Update PHP [RESOLVIDO]

Roberto Costa
asparion

(usa CentOS)

Enviado em 13/01/2021 - 23:06h

Deu certo, quando seleciono e salvo ele atualiza, tudo certo

mais quando deixo em branco ele nao subscreve, ta certo nao esta salvando em branco, a unica coisa e que esta mostrando esse alerta dai

echo "<script>alert ('Ocorreu um erro ao Atualizar!');</script><script>location.href='index.php'</script>";


porem esta ok ficou certo o que eu queria

vlw obrigado


8. Re: Update PHP [RESOLVIDO]

Ruan
ru4n

(usa Debian)

Enviado em 13/01/2021 - 23:19h

asparion escreveu:

Deu certo, quando seleciono e salvo ele atualiza, tudo certo

mais quando deixo em branco ele nao subscreve, ta certo nao esta salvando em branco, a unica coisa e que esta mostrando esse alerta dai

echo "<script>alert ('Ocorreu um erro ao Atualizar!');</script><script>location.href='index.php'</script>";


Sim, não mudei a regra do seu código. Apenas validei se a variável $acessorios possui algum valor, e caso não, impede a execução da query de update.

Do jeito em que estava, quando não selecionava nenhuma opção no formulário, a variável $new_acessorios não era inicializada, e a query seguinte era executada:
UPDATE tb_computers SET acessorios='',  WHERE id = '1' 

Ou seja, a coluna acessórios no banco recebia um valor vazio.








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts