Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Eduardo Villa

[Resolvido] Recuperando valor do CHECKBOX

Recommended Posts

Galera preciso de ajuda.

Ai vai uma breve explicação:

 

Tenho um formulário:

<form...>

<input id=copiar name=copiar onclick=\"desmarca(this);\" type=checkbox>

<input id=mover name=mover onclick=\"desmarca(this);\" type=checkbox>

 

<input type=submit class=botao value=Executar>

</form>

 

E logo abaixo tenho a listagem dos usuário fora do formulário:

<input name=usuario type=checkbox value=".$email['id']."> | Nome | E-mail

 

Preciso fazer o seguinte:

Quando a pessoa selecionar o checkbox "copiar" ou o "mover" + marcar um usuário da lista e clicar no botão ocorrerá um evento de UPDATE no banco de dados...

 

Não estou conseguindo recuperar os valores dos usuários marcados...

Alguém pode me ajudar. Valew

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiramente, não sei se você fez isso rapidamente agora, mas use aspas no HTML.

E note que no nome eu coloquei um [], por se tratar de vários usuários, então se usa um array[]

<input name="usuario[]" type="checkbox" value='".$email['id']."'>

Segundo, para resgatar os usuários é assim:

 

$usuarios = $_POST['usuario']; // Normal, como se fosse pegar um campo texto.

Terceiro, você precisa separar por vírgula para por no Update!

$sql = 'update tabela set campo = 'valor' where id in ('.implode(',', $usuarios).')';

Compartilhar este post


Link para o post
Compartilhar em outros sites

UnDead, não deu certo cara... Devo ter errado em alguma coisa:

 

<form action='emails.php?funcao=acao' name=acao id=acao method=post enctype=multipart/form-data>

<input id=copiar name=copiar onclick=\"desmarca(this);\" type=checkbox> Copiar para aqui...

<input id=mover name=mover onclick=\"desmarca(this);\" type=checkbox> Mover para aqui...

<input type=submit class=botao value=Executar></td>

</form>

 

 

LISTA COM CHECKBOX DOS USUÁRIOS:

<input name=\"usuario[]\" type=\"checkbox\" value=".$email['id'].">

 

 

CASO RECUPERE OS DADOS:

$funcao = $_GET['funcao'];

 

if($funcao == "acao"){

if(isset($_POST["copiar"]) || ($_POST["usuario"])){

$usuarios = $_POST['usuario'];

$sql = "UPDATE usuarios SET nome = 'valor' WHERE id IN ('.implode(',', $usuarios).')";

}elseif(isset($_POST["mover"]) || ($_POST["usuario"])){

echo "marcado1";

}else{

echo "desmarcado";

}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Posta o seu código como está. Sem separá-lo aqui.

E coloca as Tags [c o d e][/c o d e] (tudo junto) para entender melhor.

Compartilhar este post


Link para o post
Compartilhar em outros sites


echo "<div id=contorno>

<label>Selecione a ação e o usuário desejado:</label><br />

<form action=\"emails.php?funcao=acao\" name=acao id=acao method=post enctype=multipart/form-data>

<table border=0 class=dados width=100%>

<tr>

<td><input id=copiar name=copiar onclick=\"desmarca(this);\" type=checkbox> Copiar para

<select name=grupo>";

$sql = mysql_query("SELECT * FROM grupos_copy WHERE empresa=".$_SESSION['id']." ORDER BY id ASC");

while($grupo = mysql_fetch_array($sql)){

echo "<option value=".$grupo['id'].">".$grupo['titulo']."</option>";

}

echo "</select></td>

</tr>

<tr>

<td><input id=mover name=mover onclick=\"desmarca(this);\" type=checkbox> Mover para

<select name=grupo>";

$sql = mysql_query("SELECT * FROM grupos_copy WHERE empresa=".$_SESSION['id']." ORDER BY id ASC");

while($grupo = mysql_fetch_array($sql)){

echo "<option value=".$grupo['id'].">".$grupo['titulo']."</option>";

}

echo "</select></td>

</tr>

<tr>

<td><input type=submit class=botao value=Executar></td>

</tr>

</table>

</form>

<script language=\"javascript\">

function desmarca(obj){

if(obj.checked == true){

if(obj.id == 'copiar'){

document.getElementById('mover').disabled = true;

}else{

document.getElementById('copiar').disabled = true;

}

}else{

document.getElementById('copiar').disabled = false;

document.getElementById('mover').disabled = false;

}

}

</script>

</div>";

 

 

$grupo = $_GET['grupo'];

$area = $_GET['area'];

$pesquisa = $_GET['pesquisa'];

 

 

echo "<label><a href=emails.php?funcao=inserir>Adicionar Contato</a></label><br />

<div id=contorno>

<table border=0>

<tr>

<td class=tabela width=5%></td>

<td class=tabela width=5%></td>

<td class=tabela width=5%></td>

<td class=tabela width=83%>Nome/E-mail</td>

</tr>";

if($grupo != ""){

$query = mysql_query("SELECT * FROM emails WHERE empresa=".$_SESSION['id']." AND grupo='$grupo' ORDER BY nome ASC");

}elseif($area != ""){

$query = mysql_query("SELECT * FROM emails WHERE empresa=".$_SESSION['id']." AND area='$area' ORDER BY nome ASC");

}elseif($pesquisa != ""){

$query = mysql_query("SELECT * FROM emails WHERE empresa=".$_SESSION['id']." AND (nome like'%$pesquisa%') OR (email like'%$pesquisa%') ORDER BY nome ASC");

}else{

$query = mysql_query("SELECT * FROM emails WHERE empresa=".$_SESSION['id']." ORDER BY nome ASC");

}

while($email = mysql_fetch_array($query)){

echo "<tr>

<td class=dados><center><input name=\"usuario[]\" type=\"checkbox\" value='".$email['id']."'><center></td>

<td class=dados><center><a href=emails.php?funcao=editar&id=".$email['id']."><img border=0 height=14 src=imagens/editar.png width=14 /></a><center></td>

<td class=dados><center>";

if($email['status'] == "sim"){

echo "<a href=emails.php?funcao=status&id=".$email['id']."&tabela=emails><img border=0 height=14 src=imagens/sim.png width=14 /></a>";

}else{

echo "<a href=emails.php?funcao=status&id=".$email['id']."&tabela=emails><img border=0 height=14 src=imagens/nao.png width=14 /></a>";

}

echo "<center></td>

<td class=dados>".$email['nome']." - ".$email['email']."</td>

</tr>";

}

echo "</table>";

echo "</div>";

 

 

 

$funcao = $_GET['funcao'];

 

if($funcao == "acao"){

if(isset($_POST["copiar"]) || ($_POST["usuario"])){

$usuarios = $_POST['usuario'];

$sql = "UPDATE usuarios SET nome = 'valor' WHERE id IN (".implode(',', $usuarios).")";

}elseif(isset($_POST["mover"]) || ($_POST["usuario"])){

echo "marcado1";

}else{

echo "desmarcado";

}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

não entendi muito bem a rotina mas, cuidado com essa linha

if(isset($_POST["copiar"]) || ($_POST["usuario"])){

quando 'usuário' não for escolhido, retornará empty() e não FALSE, então essa sua checagem está obsoleta, ela não serve pra nada, já que $_POST['usuario'] SEMPRE será lido como TRUE

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso dessa linha eu quero saber quando os dois forem marcados.

E porque você afirma que $_POST['usuario'] SEMPRE será lido como TRUE?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá algum erro quando você executa ?

Tipo uma coisa que você não faz é não colocar aspas no HTML.

 

TEM que por!

Só um exemplo:

<form action=\"emails.php?funcao=acao\" name=acao id=acao method=post enctype=multipart/form-data>
<table border=0 class=dados width=100%>

Com aspas

<form action=\"emails.php?funcao=acao\" name='acao' id='acao' method='post' enctype='multipart/form-data'>
<table border='0' class='dados width='100%'>

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso dessa linha eu quero saber quando os dois forem marcados.

E porque você afirma que $_POST['usuario'] SEMPRE será lido como TRUE?

 

a menos que você faça uma comparação estrita (===), as seguintes igualdades são estabelecidas

 

0, '0' retornam FALSE

 

-1 retorna NULL

 

qualquer coisa >0 ou <-1 retorna TRUE

 

QUALQUER TEXTO retorna TRUE inclusive 'FALSE'/'false';

 

-----

 

quando você quer saber quando os dois estão marcados, você utiliza o operador lógico AND/E (&&), você quer saber:

se "(copiar está definido) E (nome está definido)" ...

 

valores não definidos em formulários, retornam '', o que passa no verificador isset afinal, ela está definida, mas está vazia

 

faça a checagem assim:

if(isset($_POST['copiar']) && !empty($_POST['nome']))

 

se "(copiar está definida) E (nome não está em branco)" ...

 

-----

 

pelo que entendi da sua função Javascript, OU você move, OU você copia, não é mais fácil utilizar radio buttons ao invés de checkboxes??

 

<form action=...>
   <fieldset>
       <legend>O que deseja fazer?</legend>
       <label><input type="radio" name="acao" value="copiar" />Copiar</label>
       <label><input type="radio" name="acao" value="mover" />Mover</label>
   </fieldset>
...
</form>

 

if(!isset($_POST['acao'])) die('Você não escolheu nenhuma ação!');
if($_POST['acao'] == 'mover') { script mover }
elseif($_POST['acao'] == 'copiar') { script copiar }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Evandro assim:

if(isset($_POST['copiar']) || ($_POST['usuario'])){

echo "marcado";

}elseif(isset($_POST['mover']) || ($_POST['usuario'])){

echo "marcado1";

}else{

echo "desmarcado";

}

 

Consigo saber se os dois foram marcados ou não, mas o que não estou conseguindo é pegar o valor do checkbox dos usuários

<input name=\"usuario[]\" type=\"checkbox\" value='".$email['id']."'>

Compartilhar este post


Link para o post
Compartilhar em outros sites

UnDead,

quando eu uso FOREACH da erro:

Warning: Invalid argument supplied for foreach() in /home/httpd/vhosts/agenciarroba.com.br/httpdocs/sistemanews/emails.php on line 127

 

if($funcao == "acao"){

if(isset($_POST['copiar']) || ($_POST['usuario'])){

foreach($_POST['usuario'] as $users){ //LINHA 127

echo $users."<br>";

}

}elseif(isset($_POST['mover']) || ($_POST['usuario'])){

echo "marcado1";

}else{

echo "desmarcado";

}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites


<?php

 

echo "<div id='contorno'>

<label>Selecione a ação e o usuário desejado:</label><br />

<form action='emails.php?funcao=acao' name='acao' id='acao' method='post' enctype='multipart/form-data'>

<table border='0' class='dados' width='100%'>

<tr>

<td><input id='copiar' name='copiar' onclick='desmarca(this);' type='checkbox'> Copiar para

<select name=grupo>";

 

$sql = mysql_query("SELECT * FROM grupos_copy WHERE empresa=".$_SESSION['id']." ORDER BY id ASC");

while($grupo = mysql_fetch_array($sql)){

echo "<option value='".$grupo['id']."'>".$grupo['titulo']."</option>";

}

 

echo "</select></td>

</tr>

<tr>

<td><input id='mover' name='mover' onclick='desmarca(this);' type='checkbox'> Mover para

<select name=grupo>";

$sql = mysql_query("SELECT * FROM grupos_copy WHERE empresa=".$_SESSION['id']." ORDER BY id ASC");

while($grupo = mysql_fetch_array($sql)){

echo "<option value='".$grupo['id']."'>".$grupo['titulo']."</option>";

}

 

echo "</select></td>

</tr>

<tr>

<td><input type='submit' class='botao' value='Executar'></td>

</tr>

</table>

</form>

<script language='javascript'>

function desmarca(obj){

if(obj.checked == true){

if(obj.id == 'copiar'){

document.getElementById('mover').disabled = true;

}else{

document.getElementById('copiar').disabled = true;

}

}else{

document.getElementById('copiar').disabled = false;

document.getElementById('mover').disabled = false;

}

}

</script>

</div>";

 

 

$grupo = $_GET['grupo'];

$area = $_GET['area'];

$pesquisa = $_GET['pesquisa'];

 

 

echo "<label><a href='emails.php?funcao=inserir'>Adicionar Contato</a></label><br />

<div id=contorno>

<table border='0'>

<tr>

<td class='tabela' width='5%'></td>

<td class='tabela' width='5%'></td>

<td class='tabela' width='5%'></td>

<td class='tabela' width='83%'>Nome/E-mail</td>

</tr>";

if($grupo != ""){

$query = mysql_query("SELECT * FROM emails WHERE empresa=".$_SESSION['id']." AND grupo='$grupo' ORDER BY nome ASC");

}elseif($area != ""){

$query = mysql_query("SELECT * FROM emails WHERE empresa=".$_SESSION['id']." AND area='$area' ORDER BY nome ASC");

}elseif($pesquisa != ""){

$query = mysql_query("SELECT * FROM emails WHERE empresa=".$_SESSION['id']." AND (nome like'%$pesquisa%') OR (email like'%$pesquisa%') ORDER BY nome ASC");

}else{

$query = mysql_query("SELECT * FROM emails WHERE empresa=".$_SESSION['id']." ORDER BY nome ASC");

}

while($email = mysql_fetch_array($query)){

echo "<tr>

<td class='dados'><center><input name='usuario[]' type='checkbox' value='".$email['id']."'><center></td>

<td class='dados'><center><a href='emails.php?funcao=editar&id=".$email['id']."'><img border='0' height='14' src='imagens/editar.png' width='14' /></a><center></td>

<td class='dados'><center>";

if($email['status'] == "sim"){

echo "<a href='emails.php?funcao=status&id=".$email['id']."&tabela=emails'><img border='0' height='14' src='imagens/sim.png' width='14' /></a>";

}else{

echo "<a href='emails.php?funcao=status&id=".$email['id']."&tabela=emails'><img border='0' height='14' src='imagens/nao.png' width='14' /></a>";

}

echo "<center></td>

<td class='dados'>".$email['nome']." - ".$email['email']."</td>

</tr>";

}

echo "</table>";

echo "</div>";

 

 

 

$funcao = $_GET['funcao'];

 

if($funcao == "acao")

{

if(isset($_POST["copiar"]) || isset($_POST["usuario"]))

{

$usuarios = $_POST['usuario'];

if(is_array($usuarios))

$sql = "UPDATE usuarios SET nome = 'valor' WHERE id IN (".implode(',', $usuarios).")";

else

$sql = "UPDATE usuarios SET nome = 'valor' WHERE id = $usuarios";

 

}

elseif(isset($_POST["mover"]) || ($_POST["usuario"]))

{

echo "marcado1";

}

else

{

echo "desmarcado";

}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

usuario não está sendo transmitido como array.

 

remova o loop da linha 127 e em seu lugar adicione

var_dump($_POST);

 

o campo 'usuário' deve estar em formato string, provavelmente (se não estiver em branco)

Compartilhar este post


Link para o post
Compartilhar em outros sites

UnDead, fiz a mudança que você mandou:

if(isset($_POST["copiar"]) || isset($_POST["usuario"]))
                {
           $usuarios = $_POST['usuario'];
                   if(is_array($usuarios))
              $sql = "UPDATE usuarios SET nome = 'valor' WHERE id IN (".implode(',', $usuarios).")";
                   else
                      $sql = "UPDATE usuarios SET nome = 'valor' WHERE id = $usuarios";
                          
        }

ele passa, mas não faz a alteração...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Imprima a SQL na tela e veja se está certa.

echo $sql = "UPDATE usuarios SET nome = 'valor' WHERE id IN (".implode(',', $usuarios).")";

Escolha mais de um usuário para o teste.

Compartilhar este post


Link para o post
Compartilhar em outros sites

imprimi na tela o UPDATE e mostra assim :

UPDATE usuarios SET nome = 'sim' WHERE id=

 

não está pegando o valor do usuario

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.