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

Recuperar Valor Checkbox


joellazzari

Pergunta

Saudações a todos, preciso de uma ajuda (estou aprendendo php ainda, desculpem).

Situação: faço uma consulta no mysql, recupero as informações e as checkbox aparecem desmarcadas.

Estou tentando utilizar essa sugestão, mas não estou conseguindo:

https://www.scriptbrasil.com.br/forum/index...f=4&t=66140

vou ser mais específico, vejam só o codigo e algumas considerações:

$query = mysql_query("select * from permissoes where login = 'usuario1' ");

$retorno = mysql_fetch_array($query);

(minha tabela tem os campos 'login' e 'perm', então o resultado desse array é pra ser

usuario1 - website

usuario1 - produtos

usuario1 - banners

usuario1 - estatisticas

usuario1 - newsletter

usuario1 - usuarios

obs: website, produtos, etc são minhas permissões)

$checkbox = $retorno[1];

for ($ni = 1; $ni < 7; $ni++) {

switch ($ni) {

case website: $permissoes = "website";

break;

case produtos: $permissoes = "produtos";

break;

case banners: $permissoes = "banners";

break;

case estatisticas: $permissoes = "estatisticas";

break;

case newsletter: $permissoes = "newsletter";

break;

case usuarios: $permissoes = "usuarios";

break;

}

Esse último if é pra construir os checkbox e marcar (checked) os que existem no banco de dados, vejam só:

if ($checkbox=="$permissoes")

echo "<input name='$permissoes' id='check$ni' type='checkbox' value='$permissoes' checked>$permissoes\n";

else

echo "<input name='$permissoes' id='check$ni' type='checkbox' value='$permissoes'>$permissoes\n";

}

Problemas:

Não sei se o switch está escrito de forma correta;

Não sei se utilizo o "continue" ao invés do "break" nos case;

Não sei se este último if está correto.

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

Você poderia mudar todo esse código usando o próprio comando select, por exemplo:

Vou usar um IF, onde 1 é liberado e 0 negado :

$sSql = “ select “;

$sSql .= “ if ( website = 1 , ‘checked’,’’ ) , “;

$sSql .= “ if ( produtos = 1 , ‘checked’,’’ ) , “;

$sSql .= “ if ( banners = 1 , ‘checked’,’’ ) , “;

$sSql .= “ if ( etc = 1 , ‘checked’,’’ ) , “;

$sSql .= “ from tabela “;

$sSql .= “ where login = ‘” .$sUser. ”’ “;

$sResultado = mysql_query( $sSql );

Depois você pegaria o valor e mudaria nos checkbox

Link para o comentário
Compartilhar em outros sites

  • 0

primeiro tenta fazer isso

if ($checkbox==$permissoes)
echo "<input name='$permissoes' id='check$ni' type='checkbox' value='$permissoes' checked>$permissoes\n";
else
echo "<input name='$permissoes' id='check$ni' type='checkbox' value='$permissoes'>$permissoes\n";
}

se não der certo poste o codigo todo,

beleza

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Joel Lazzari

Obrigado pela ajuda UpTroni, acho que estou perto de resolver esse problema. Veja o código:

///INICIO DO CÓDIGO

$query = mysql_query("select perm from TABELA where login = 'usuario_teste'");

$retorno = mysql_fetch_array($query);

$checkbox = $retorno[0];

for ($ni = 1; $ni < 7; $ni++) {

switch ($ni) {

case 1: $permissoes = "website";

break;

case 2: $permissoes = "produtos";

break;

case 3: $permissoes = "banners";

break;

case 4: $permissoes = "estatisticas";

break;

case 5: $permissoes = "newsletter";

break;

case 6: $permissoes = "usuarios";

break;

}

if ($checkbox==$permissoes)

echo "<input name='$permissoes' id='check$ni' type='checkbox' value='$permissoes' checked>$permissoes\n";

else

echo "<input name='$permissoes' id='check$ni' type='checkbox' value='$permissoes'>$permissoes\n";

}

//FIM DO CÓDIGO

Olha só, talvez ajude:

- Minha tabela tem dois campos, login e perm. Fiz a consulta sql, está funcionando perfeitamente. O resultado da consulta acima é

1

2

5

onde esse números são as permissões do usuario.

Eu queria então, através desse for, fazer ele deixar checked os campos 1, 2 e 5. Os demais campos 3, 4 e 6 deixar desmarcados).

Esse código acima (com a tua sugestão) resulta em todos os checkbox desmarcados. Olhe só o resultado quando eu peço pra visualizar o código fonte:

<input name='website' id='check1' type='checkbox' value='website'>website

<input name='produtos' id='check2' type='checkbox' value='produtos'>produtos

<input name='banners' id='check3' type='checkbox' value='banners'>banners

<input name='estatisticas' id='check4' type='checkbox' value='estatisticas'>estatisticas

<input name='newsletter' id='check5' type='checkbox' value='newsletter'>newsletter

<input name='usuarios' id='check6' type='checkbox' value='usuarios'>usuarios

Só falta mesmo ele colocar checked nos campos 1, 2 e 5.

Se puder ajudar agradeço mesmo!!

Link para o comentário
Compartilhar em outros sites

  • 0

olha só, tenta fazer isso

///INICIO DO CÓDIGO

$query = mysql_query("select perm from TABELA where login = 'usuario_teste'");
$retorno = mysql_fetch_array($query);
$checkbox = $retorno["perm"];

for ($ni = 1; $ni < 7; $ni++) { 
switch ($ni) {
case 1: $permissoes = "website";
break;
case 2: $permissoes = "produtos";
break;
case 3: $permissoes = "banners";
break;
case 4: $permissoes = "estatisticas";
break;
case 5: $permissoes = "newsletter";
break;
case 6: $permissoes = "usuarios";
break;
}
if ($checkbox==$permissoes)
echo "<input name='$permissoes' id='check$ni' type='checkbox' value='$permissoes' checked>$permissoes\n";
else
echo "<input name='$permissoes' id='check$ni' type='checkbox' value='$permissoes'>$permissoes\n";
}

//FIM DO CÓDIGO

Link para o comentário
Compartilhar em outros sites

  • 0

Desculpe te chatear!!! mas não está funcioando ainda. Eu copiei e colei esse seu código, mas o resultado de saída é o mesmo ainda: Ele traz todos as checkbox desmarcadas.

Olhe só a tabela no mysql:

CREATE TABLE `tabela` (

`login` varchar(15) NOT NULL default '',

`perm` smallint(5) unsigned NOT NULL default '0',

PRIMARY KEY (`login`,`perm`)

) TYPE=InnoDB;

INSERT INTO `tabela` VALUES ('usuario_teste', 1);

INSERT INTO `tabela` VALUES ('usuario_teste', 2);

INSERT INTO `tabela` VALUES ('usuario_teste', 3);

INSERT INTO `tabela` VALUES ('usuario_teste', 4);

INSERT INTO `tabela` VALUES ('usuario_teste', 5);

INSERT INTO `tabela` VALUES ('usuario_teste', 6);

INSERT INTO `tabela` VALUES ('web', 2);

INSERT INTO `tabela` VALUES ('web', 5);

eu coloquei depois dessa linha $checkbox = $retorno["perm"]; a instrução:

echo "$checkbox";

ele sempre traz o valor do primeiro registro encontrado, no caso acima o número 1 para o usuario_teste e 2 para o usuário 'web'.

eu acho que esse for está funcionando, pois a saída está dando certo (está executando a instrução else sempre).

parece que as permissões não estão sendo comparadas no case...

==============================================

Fiz um teste aqui, na instrução if ($checkbox==$permissoes) eu coloquei if ($checkbox==$ni)

com isso, ele consegue marcar a primeira permissão da consulta.... não é a instrução break no case?

Link para o comentário
Compartilhar em outros sites

  • 0

olha tenta isso, não tinha reparado que tinha loop

///INICIO DO CÓDIGO

$query = mysql_query("select perm from TABELA where login = 'usuario_teste'");

while ( $retorno = mysql_fetch_array($query) )

{

$checkbox = $retorno["perm"];

for ($ni = 1; $ni < 7; $ni++) {

switch ($ni) {

case 1: $permissoes = "website";

break;

case 2: $permissoes = "produtos";

break;

case 3: $permissoes = "banners";

break;

case 4: $permissoes = "estatisticas";

break;

case 5: $permissoes = "newsletter";

break;

case 6: $permissoes = "usuarios";

break;

}

if ($checkbox==$permissoes)

echo "<input name='$permissoes' id='check$ni' type='checkbox' value='$permissoes' checked>$permissoes\n";

else

echo "<input name='$permissoes' id='check$ni' type='checkbox' value='$permissoes'>$permissoes\n";

}

}

//FIM DO CÓDIGO

Link para o comentário
Compartilhar em outros sites

  • 0

Puxa vida, já te amolei pra caramba hoje.. hehehe

Quase! nesse código que me mandou por último, veja só.

Por exemplo, um usuário com tres permissões (1, 3 e 5) ele traz o seguinte resultado:

(x) website ( ) produtos ( ) banners ( ) estatisticas ( ) newsletter ( ) usuarios

( ) website ( ) produtos (x) banners ( ) estatisticas ( ) newsletter ( ) usuarios

( ) website ( ) produtos ( ) banners ( ) estatisticas (x) newsletter ( ) usuarios

Ele já está trazendo marcado os campos das checkbox correspondente às permissões, só que está escrevendo tudo de novo. Quando só tem uma permissão, por exemplo a número 2, ele escreve certo:

( ) website (x) produtos ( ) banners ( ) estatisticas ( ) newsletter ( ) usuarios

Agora, quando o usuário tem todas as permissões, ele escreve seis linhas como anterior, com uma permissão marcada em cada linha.

Nem tenho como te agradecer pela ajudar! obrigado desde já!

Link para o comentário
Compartilhar em outros sites

  • 0

tai ai grande enfim seu cod prontinho pra usar

<?php

$con = mysql_connect("localhost", "uptroni", "mypass") or die("No con");
$db  = mysql_select_db("mydb") or die ("NO db");

///INICIO DO CÓDIGO

$query = mysql_query("SELECT perm FROM tabela WHERE login = 'web'") or die("Erro");

//Bom aqui vamos passar as perm do usuario para um array

$i=1; //contador para criar array de perm.
//busca todos os dados que foram buscados em $query
while ( $retorno = mysql_fetch_assoc($query) )
{
    $checkbox[$i] = $retorno["perm"]; //passa o valor de perm para $checkbox[$i]
    $i++; //incrementa o contador
}

//Mostrar as permissões do caboclo
for ($ni=1; $ni < 7; $ni++ )
    {
        switch ($ni) 
        {
        case 1: $permissoes = "website";
            break;

        case 2: $permissoes = "produtos";
            break;

        case 3: $permissoes = "banners";
            break;

        case 4: $permissoes = "estatisticas";
            break;

        case 5: $permissoes = "newsletter";
            break;

        case 6: $permissoes = "usuarios";
            break;
        }

        

        if ( in_array("$ni", $checkbox) !== FALSE) //Se existe o valor $ni no array de permissões checka
            {
            echo "<input name='$permissoes' id='check$ni' type='checkbox' value='$permissoes' checked>$permissoes\n";
            }
        else //caso contrario não faz nada
            {
            echo "<input name='$permissoes' id='check$ni' type='checkbox' value='$permissoes'>$permissoes\n";
            }
            
    }


?>

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

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