joellazzari Postado Agosto 12, 2006 Denunciar Share Postado Agosto 12, 2006 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=66140vou 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 serusuario1 - websiteusuario1 - produtosusuario1 - bannersusuario1 - estatisticasusuario1 - newsletterusuario1 - usuariosobs: 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 More sharing options...
0 Tenko Postado Agosto 12, 2006 Denunciar Share Postado Agosto 12, 2006 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 More sharing options...
0 joellazzari Postado Agosto 24, 2006 Autor Denunciar Share Postado Agosto 24, 2006 obrigado pela dica amigo.... mas não consegui resolver dessa forma também.estou com esse problema pendurado aqui Link para o comentário Compartilhar em outros sites More sharing options...
0 UpTroni Postado Agosto 24, 2006 Denunciar Share Postado Agosto 24, 2006 primeiro tenta fazer issoif ($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 More sharing options...
0 Guest Joel Lazzari Postado Agosto 24, 2006 Denunciar Share Postado Agosto 24, 2006 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ÓDIGOOlha só, talvez ajude:- Minha tabela tem dois campos, login e perm. Fiz a consulta sql, está funcionando perfeitamente. O resultado da consulta acima é125onde 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'>usuariosSó 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 More sharing options...
0 UpTroni Postado Agosto 24, 2006 Denunciar Share Postado Agosto 24, 2006 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 More sharing options...
0 joellazzari Postado Agosto 24, 2006 Autor Denunciar Share Postado Agosto 24, 2006 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 More sharing options...
0 UpTroni Postado Agosto 24, 2006 Denunciar Share Postado Agosto 24, 2006 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 More sharing options...
0 joellazzari Postado Agosto 24, 2006 Autor Denunciar Share Postado Agosto 24, 2006 Puxa vida, já te amolei pra caramba hoje.. heheheQuase! 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 ( ) usuariosEle 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 ( ) usuariosAgora, 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 More sharing options...
0 UpTroni Postado Agosto 25, 2006 Denunciar Share Postado Agosto 25, 2006 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 More sharing options...
0 joellazzari Postado Agosto 25, 2006 Autor Denunciar Share Postado Agosto 25, 2006 Nem sei como te agradecer, muito obrigado mesmo. Agora está funcionando que é uma beleza!Desculpa se fui meio chato, mas isso estava me segurando aqui! Link para o comentário Compartilhar em outros sites More sharing options...
0 UpTroni Postado Agosto 25, 2006 Denunciar Share Postado Agosto 25, 2006 hauhauhauhauhaué isso ai, qualquer coisa posta ai denovohauhauhau :D Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
joellazzari
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