mrbomber 0 Denunciar post Postado Junho 8, 2009 Galera montei um sistema de permissao de usuarios multinivel dinamico, usando como base o phpsecurepages - na verdade so paroveitei uma tabela e o form dele... localmente usando o xampp funciona q é uma maravilha... mandei pra o servidor e da o erro; Warning: in_array() [function.in-array]: Wrong datatype for second argument in /home/camaravc/public_html/x/estrutura/users/alterar_form.php on line 72 meu alterar_form.php; <? $id = $_GET[id]; $sql = mysql_query("SELECT * FROM phpsp_users where primary_key='$id'"); $dados=mysql_fetch_array($sql); ?> <form action="?pg=../estrutura/users/alterar_db.php" method="post"> <input type=hidden name="id" value="<? echo $id; ?>"> <h3>Alteração de Usuário</h3> <table width="440" border="0" align="center" cellpadding="2" cellspacing="0"> <tr><td colspan="2" align="right" style="border-bottom:1px solid #cccccc">*Campos Obrigatórios</td> </tr> <tr> <td width="140" align="right" valign="middle" style="border-bottom:1px solid #cccccc"><strong>*Nome:</strong></td> <td width="320" valign="middle" style="border-bottom:1px solid #cccccc"> <strong> <input name='nome' type='text' id="nome" value="<? echo $dados[nome]?>" size=45> </strong></td> </tr> <tr> <td width="140" align="right" valign="middle" style="border-bottom:1px solid #cccccc">*Login:</td> <td width="320" valign="middle" style="border-bottom:1px solid #cccccc"> <? if($usernivel == "1" OR $usernivel == "2") {?> <input name='bu' type='text' value="<? echo $dados[user]?>" disabled size=45> <input name='user_login' type="hidden" value="<? echo $dados[user]?>" size=45> <? } else {?> <input name='user_login' type='text' value="<? echo $dados[user]?>" size=45> <? }?> </td> </tr> <tr> <td width="140" align="right" valign="middle" style="border-bottom:1px solid #cccccc">*Senha:</td> <td width="320" valign="middle" style="border-bottom:1px solid #cccccc"> <strong> <input name='user_senha' type='password' id="user_senha" value="<? echo "$dados[password]";?>" size=45> </strong></td> </tr> <? if($usernivel == "1") {?> <tr> <td align="right" valign="middle" style="border-bottom:1px solid #cccccc">*Nivel:</td> <td valign="middle" style="border-bottom:1px solid #cccccc"> <input name='usuario_nivel' type='radio' value='1' <? if($dados[userlevel] == "1") { echo "checked";}?>> Usuário Master</td> </tr> <tr> <td align="right" valign="middle" style="border-bottom:1px solid #cccccc">Permissão:</td> <td valign="middle" style="border-bottom:1px solid #cccccc"> <? /* o parâmetro $string, é o WHERE `idRepresentante` = 2, por exemplo, ai o método só retorna todos os check, e marca apenas os que forem relacionados ao representante de id 2. Se você não passar nada, o método preenche a lista de checks, toda desmarcada. */ $listagem = "SELECT * FROM menu order by id"; $query = mysql_query($listagem); $sqlxx = ("SELECT id_menu FROM permissao WHERE primary_key = $primary_key "); // o 1 aqui, você troca pelo id do usuário corrente $consulta2 = mysql_query($sqlxx); if(mysql_num_rows($consulta2)!=0) // só realiza o fech, se existir resposta, para não retornar erro, caso não tenha NENHUM favorito { while($dadosRel = mysql_fetch_assoc($consulta2)) { $vetorFav[] = $dadosRel['id_menu']; // aqui eu guardo tudo oque tá no banco, relacionado à tal usuário no $vetorFav } } while ($linha=mysql_fetch_array($query)){ $id = $linha["id"]; $projeto = $linha["nome"]; if( in_array( $linha['id'], $vetorFav ) ) //confere se existe o id_empre atual do loop, dentro de $vetorFav $checked = 'checked="checked" '; // se tiver, é pq precisa mostrar marcado else $checked = ''; // caso contrário, não precisa por nada.. e imprime um "VAZIO" no input echo '<input type="checkbox" value="'.$id.'" name="vereador[]" '.$checked.'/>'.$projeto.'<br />'; }//fecha while ?> </td> </tr> <? } else {?> <input name='usuario_nivel' type='hidden' value='3'><br> <? }?> </table> <table align="center"> <tr> <td width="436" colspan="2"> <p align="center"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"> <input type='submit' value='Alterar'> </font></p></td> </tr> </table> <? if($usernivel == "1"){ echo "<input name='nivel2' type='hidden' value='$dados[userlevel]'>";}?> </form> o que pode esta acontecendo? Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Junho 9, 2009 A consulta está retornado algo ?? while($dadosRel = mysql_fetch_assoc($consulta2)) { echo $dadosRel['id_menu'], '<br />'; $vetorFav[] = $dadosRel['id_menu']; // aqui eu guardo tudo oque tá no banco, relacionado à tal usuário no $vetorFav } Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Junho 9, 2009 Cara, tenta fazer o seguinte... Antes da função in_array, dá um print_r pra ver se ficou um array mesmo. echo '<pre>'; print_r($vetorFav); echo '</pre>'; if( in_array( $linha['id'], $vetorFav ) ) Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
mrbomber 0 Denunciar post Postado Junho 9, 2009 sim retorna e retorna com o erro essa classe foi ate tu que me passou aqui uma vez.. achoq foi William.... so q assim... so retorna desmarcado e com o erro Warning: in_array() [function.in-array]: Wrong datatype for second argument in /home/camaravc/public_html/x/estrutura/users/alterar_form.php on line 72 Cpanel Warning: in_array() [function.in-array]: Wrong datatype for second argument in /home/camaravc/public_html/x/estrutura/users/alterar_form.php on line 72 Newsletter Warning: in_array() [function.in-array]: Wrong datatype for second argument in /home/camaravc/public_html/x/estrutura/users/alterar_form.php on line 72 Conteúdo Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Junho 9, 2009 Uia :lol: bacana.. eu tava reconhecendo o código.. e principalmente aquele comentário ali no começo dele.. hehe Faz oque o @Carlos disse, mas posta tb a estrutura dessas tabelas, pq só vai falhar o in_array, se o laço não funcionar, e pra isso a query que deve estar com problemas. Compartilhar este post Link para o post Compartilhar em outros sites
mrbomber 0 Denunciar post Postado Junho 9, 2009 local funciona q é uma maravilha... mas no servidor.... olha so o q acontece local, matias_rezende: : Array ( [0] => 4 [1] => 5 [2] => 10 [3] => 20 [4] => 25 [5] => 30 [6] => 35 [7] => 50 [8] => 60 [9] => 70 [10] => 80 [11] => 81 [12] => 82 [13] => 84 [14] => 85 [15] => 86 [16] => 87 [17] => 88 [18] => 98 [19] => 99 [20] => 100 [21] => 191 ) Newsletter Array ( [0] => 4 [1] => 5 [2] => 10 [3] => 20 [4] => 25 [5] => 30 [6] => 35 [7] => 50 [8] => 60 [9] => 70 [10] => 80 [11] => 81 [12] => 82 [13] => 84 [14] => 85 [15] => 86 [16] => 87 [17] => 88 [18] => 98 [19] => 99 [20] => 100 [21] => 191 ) Conteúdo no servidor buga... so aparece o erro... minhas tables: -- -- Estrutura da tabela `menu` -- CREATE TABLE IF NOT EXISTS `menu` ( `id` int(3) NOT NULL AUTO_INCREMENT, `nome` varchar(20) NOT NULL DEFAULT '', `url` varchar(255) NOT NULL DEFAULT '', `subcat` char(3) NOT NULL DEFAULT 'sim', `target` varchar(15) NOT NULL DEFAULT '_top', `nivel` char(2) NOT NULL DEFAULT '', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=194; -- -------------------------------------------------------- -- -- Estrutura da tabela `permissao` -- CREATE TABLE IF NOT EXISTS `permissao` ( `primary_key` int(255) NOT NULL, `id_menu` int(255) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8; seria algumaconfiguracao no php.ini do servidor web? mas o mais estranho, q como eu ja havia pego aqui William, e havia usado em outro modulo do sistema funciona legal... so q fui implementar ai e nao funcionou.... Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Junho 9, 2009 A conexão com o banco de dados está certa ? troque isso: $consulta2 = mysql_query($sqlxx); por: $consulta2 = mysql_query($sqlxx)or die( mysql_error() ); Compartilhar este post Link para o post Compartilhar em outros sites
mrbomber 0 Denunciar post Postado Junho 9, 2009 sim a consulta ta certa nao da erro na consulta... olha so os prints: LOCAL: online: os mesmos arquivos q estao local estao online.... Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Junho 9, 2009 Pergunta idiota a minha, mas... existem dados na base de dados do servidor??? Provavelmente é isto, já que só cria o array $vetorFav se a qtde de linhas for diferente de zero... Senão tiver resultado, pula isto, não cria o array e aí o parâmetro fica errado na função in_array. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
mrbomber 0 Denunciar post Postado Junho 9, 2009 sim... tem dados e pra tirar a prova, ja deletei e refiz as tabelas.... as tabelas phpsp_users e permissao tem dados e os primary_key batem certo Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Junho 9, 2009 Olha, vamos tentar algumas coisas... Pra ver se está entrando no IF e no while... if(mysql_num_rows($consulta2)!=0) // só realiza o fech, se existir resposta, para não retornar erro, caso não tenha NENHUM favorito { echo 'AQUI 1'; $x = 2; while($dadosRel = mysql_fetch_assoc($consulta2)) { echo '<br/>AQUI'.$x.'<br/>'.$dadosRel['id_menu']; $vetorFav[] = $dadosRel['id_menu']; // aqui eu guardo tudo oque tá no banco, relacionado à tal usuário no $vetorFav $x++; } } Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Junho 9, 2009 Troca: while ($linha=mysql_fetch_array($query)){ $id = $linha["id"]; $projeto = $linha["nome"]; if( in_array( $linha['id'], $vetorFav ) ) //confere se existe o id_empre atual do loop, dentro de $vetorFav $checked = 'checked="checked" '; // se tiver, é pq precisa mostrar marcado else $checked = ''; // caso contrário, não precisa por nada.. e imprime um "VAZIO" no input echo '<input type="checkbox" value="'.$id.'" name="vereador[]" '.$checked.'/>'.$projeto.'<br />'; }//fecha whilepor: while ($linha=mysql_fetch_array($query)) { if( mysql_num_rows($consulta2)!=0 ) { if( in_array( $linha['id'], $vetorFav ) ) //confere se existe o id_empre atual do loop, dentro de $vetorFav $checked = 'checked="checked" '; // se tiver, é pq precisa mostrar marcado else $checked = ''; // caso contrário, não precisa por nada.. e imprime um "VAZIO" no input } echo '<input type="checkbox" value="'.$linha['id'].'" name="vereador[]" '.$checked.'/>'.$linha['nome'].'<br />'; }//fecha whileEu tava desenvolvendo esse método qndo postei pra ti então..resolvi o problema depois de você ter pego.. VÊ ai Compartilhar este post Link para o post Compartilhar em outros sites
mrbomber 0 Denunciar post Postado Junho 9, 2009 local: AQUI 1 AQUI2 4 AQUI3 5 AQUI4 10 AQUI5 20 AQUI6 25 AQUI7 30 AQUI8 35 AQUI9 50 AQUI10 60 AQUI11 70 AQUI12 80 AQUI13 81 AQUI14 82 AQUI15 84 AQUI16 85 AQUI17 86 AQUI18 87 AQUI19 88 AQUI20 98 AQUI21 99 AQUI22 100 AQUI23 online so o erro...... ah sim... cadastra certinho... so na hor ade mostrar q ta bugando.... e o checked local tb nao funfa... mesmo nao estando relacionando ele marca tudo Compartilhar este post Link para o post Compartilhar em outros sites
mrbomber 0 Denunciar post Postado Junho 9, 2009 isso William... o erro.... pimba! resolveu so o checked q nao ta funcionando... ta cadastrando certim... mas nao mostra o checked Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Junho 9, 2009 Tá, não 'resolvemos' o erro.. apenas ocultamos ele. porque então significa que não está passando do if.. por isso parou de dar o erro... e isso é ruim.. pois se tem dados, deveria entrar nele. Vamos ver parte por parte: $listagem = "SELECT * FROM `menu` "; E $sqlxx = "SELECT id_menu FROM `permissao` WHERE `primary_key` = {$primary_key} "; echo $sqlxx; $consulta2 = mysql_query($sqlxx) or die(mysql_error());diga oque retorna.Se não funcionar, aparentemente não tem nada relacionado mesmo no banco. Compartilhar este post Link para o post Compartilhar em outros sites
mrbomber 0 Denunciar post Postado Junho 9, 2009 hummmm e o + estranho: local printa checked em tds os chekboxes... (sendo q so era pra printar alguns) ja online..... nao printa nenhum... (tambem no mesmo raciocio, de acordo com o banco de dados era pra printar alguns) Compartilhar este post Link para o post Compartilhar em outros sites
mrbomber 0 Denunciar post Postado Junho 9, 2009 retornou isso: Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Junho 9, 2009 Roda isso aqui no banco: SELECT * FROM `menu` JOIN `permissao` ON menu.id = permissao.id_menu se retornar conjunto vazio, é pq realmente não tem nada relacionado. Compartilhar este post Link para o post Compartilhar em outros sites
mrbomber 0 Denunciar post Postado Junho 9, 2009 listou normal William... vai entender... hehehe Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Junho 9, 2009 E com: SELECT * FROM `menu` JOIN `permissao` ON menu.id = permissao.id_menu WHERE `primary_key` = 15 ? Não tô vendo erros no código... =X Deve ser pq ele é meu... espera mais alguém ai.. Compartilhar este post Link para o post Compartilhar em outros sites