sNniffer 1 Denunciar post Postado Novembro 25, 2014 Tenho o seguinte código: $last_category = ''; while($resultado = mysql_fetch_array($query)) { if($last_category !== $resultado['nome_categoria']) { echo '<h4>'. $resultado['nome_categoria'] .'</h4>'; $last_category = $resultado['nome_categoria']; } echo "<div class='checkbox' style='display:inline; margin-left:10px'> <label> <input type='checkbox' name='servicos[]' value=".$resultado['id']." />". $resultado['nome'] ."<br> </label> </div>"; } Está exibindo normalmente as subcategorias e categorias como tópico, mas, gostaria de adicionar uma condição de verificação com outra tabela chamada Clientes_sub_categoria, mas, não sei como começar, preciso que no momento em que é criado o checkbox, seja verificado na tabela clientes_sub_categoria (id,id_cliente,id_sub_categoria), se existe a relação entre o id do cliente e o id da subcategoria que no caso é $resultado['id']. E caso haja esta relaçao na tabela,o checkbox seja marcado. Como posso fazer isso? Compartilhar este post Link para o post Compartilhar em outros sites
calcio 2 Denunciar post Postado Novembro 26, 2014 Quer fazer consulta em 3 tabelas ou quer só que o Checkbox já venha marcado com o valor consultado? Compartilhar este post Link para o post Compartilhar em outros sites
William Avelar 15 Denunciar post Postado Novembro 26, 2014 Simples, você fazer uma consulta pegando as informações na tabela clientes_sub_categoria que vai ficar na variável $cliente, depois você compara o campo dos id's, se forem os mesmos o botão ira conter o atributo checked, que faz ele vir selecionado como padrão. $last_category = ''; $cliente = mysql_fetch_row($query2); while($resultado = mysql_fetch_array($query)) { if($last_category !== $resultado['nome_categoria']) { echo '<h4>'. $resultado['nome_categoria'] .'</h4>'; $last_category = $resultado['nome_categoria']; } $checked = ($cliente['id_sub_categoria'] == $resultado['id']) ? 'checked' : '' ; echo " <div class='checkbox' style='display:inline; margin-left:10px'> <label> <input type='checkbox' name='servicos[]' ".$checked." value=".$resultado['id']." />". $resultado['nome'] ."<br> </label> </div>"; } Espero ter ajudado, Abraço. Compartilhar este post Link para o post Compartilhar em outros sites
sNniffer 1 Denunciar post Postado Dezembro 19, 2014 Boa noite, desculpe a demora no retorno. Tá dando Undefined Index ao usar o comando mysql_fetch_row Compartilhar este post Link para o post Compartilhar em outros sites
sNniffer 1 Denunciar post Postado Dezembro 27, 2014 Opa, ainda estou tentando resolver este problema, seguindo a sugestão do Willian Avelar, ao usar a linha com 'mysql_fetch_row' me retorna 'Undefined index: id_sub_categoria', ao trocar pelo 'mysql_fetch_assoc', os dados são exibidos, mas, o fundamento do projeto é: Nas tabelas: empresa_sub_categoria:id, id_empresa, id_sub_categoria sub_categoria: id, id_categoria, nome categoria: id, nome Uma empresa pode ter várias subcategorias, com o código que estou usando, me passado pelo Willian, são exibidos todas, mas, é checkado apenas um checkbox. $last_category = '';$query = mysql_query("SELECT categoria.*, sub_categoria.* FROM categoria INNER JOIN sub_categoria ON categoria.id = sub_categoria.id_categoria");while($resultado = mysql_fetch_array($query)) { if($last_category !== $resultado['nome_categoria']) { echo '<h4>'. $resultado['nome_categoria'] .'</h4>'; $last_category = $resultado['nome_categoria']; } $query2= mysql_query("SELECT * from empresa_sub_categoria where id_empresa=$empresa"); $empresa_sub = mysql_fetch_assoc($query2); $checked = ($empresa_sub['id_sub_categoria'] == $resultado['id']) ? 'checked' : '' ; echo " <div class='checkbox' style='display:inline; margin-left:10px'> <label> <input type='checkbox' name='servicos[]' ".$checked." value=".$resultado['id']." />". $resultado['nome'] ."<br> </label> </div> "; } Alguem :cry: Compartilhar este post Link para o post Compartilhar em outros sites
WictorP 9 Denunciar post Postado Fevereiro 7, 2015 $sql = "SELECT * FROM tabela1 um, tabela2 dois, tabela3 tres WHERE um.id=dois.catId AND tres.id=um.userId"; Segue o exemplo ai, pode ir dando WHERE entre tabelas... Compartilhar este post Link para o post Compartilhar em outros sites
sNniffer 1 Denunciar post Postado Fevereiro 21, 2015 Certo WictorP, como posso fazer um sql destes e após comparar os valores? Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Fevereiro 21, 2015 Vai ser bem mais fácil você fazer tudo na mesma query. Mostra pra gente como está a $query atual e como está a tabela que você quer relacionar. Você provavelmente vai ter que fazer ou uma subquery ou um JOIN. Compartilhar este post Link para o post Compartilhar em outros sites
sNniffer 1 Denunciar post Postado Fevereiro 21, 2015 Bom, inicialmente a $query principal está: $last_category = ''; $query = mysql_query("SELECT categoria.*, sub_categoria.* FROM categoria INNER JOIN sub_categoria ON categoria.id = sub_categoria.id_categoria"); while($resultado = mysql_fetch_array($query)) { if($last_category !== $resultado['nome_categoria']) { echo '<h4>'. $resultado['nome_categoria'] .'</h4>'; $last_category = $resultado['nome_categoria']; } $query2= mysql_query("SELECT * from empresa_sub_categoria where id_empresa=$empresa"); $empresa_sub = mysql_fetch_assoc($query2); $checked = ($empresa_sub['id_sub_categoria'] == $resultado['id']) ? 'checked' : '' ; echo " <div class='checkbox' style='display:inline; margin-left:10px'> <label> <input type='checkbox' name='servicos[]' ".$checked." value=".$resultado['id']." />". $resultado['nome'] ."<br> </label> </div> "; } Tenho 3 tabelas, a tabela 'categoria', 'sub_categoria' e 'empresa_sub_categoria'. Tabelas: Categoria: id, nome Sub_categoria: id, id_categoria, nome Empresa_sub_categoria: id, id_empresa, id_sub_categoria Um empresa pode ter várias sub_categorias. Nesta tela são exibidos todas as categorias com suas sub_categorias, e deve checar o input caso o id_sub_categoria for igual a sub_categoria. Ficou meio confuso? Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Fevereiro 22, 2015 Se eu entendi bem, basta modificar a primeira query para checar se o registro relacionado EXISTE na tabela empresa_sub_categoria, algo assim: SELECT categoria.*, sub_categoria.*, (EXISTS(SELECT id FROM empresa_sub_categoria WHERE id_empresa=$empresa AND id_sub_categoria = sub_categoria.id)) AS registroExiste FROM.... Agora você pode acessar o valor através da chave $resultado['registroExiste'] Compartilhar este post Link para o post Compartilhar em outros sites
sNniffer 1 Denunciar post Postado Fevereiro 24, 2015 lucaswxp, eu fiz o sql do jeitinho que voce disse, o código ficou assim $last_category = ''; $query = mysql_query(" SELECT categoria.*, sub_categoria.*, (EXISTS(SELECT id FROM empresa_sub_categoria WHERE id_empresa=$empresa AND id_sub_categoria = sub_categoria.id)) AS registroExiste FROM categoria INNER JOIN sub_categoria ON categoria.id = sub_categoria.id_categoria"); while($resultado = mysql_fetch_array($query)) { if($last_category !== $resultado['nome_categoria']) { echo '<h4>'. $resultado['nome_categoria'] .'</h4>'; $last_category = $resultado['nome_categoria']; } $checked = ($resultado['registroExiste'] == $resultado['id']) ? 'checked' : '' ; echo " <div class='checkbox col-lg-3 col-md-3 col-sm-3 col-xs-12' style='display:inline; '> <label> <input type='checkbox' name='servicos[]' ".$checked." value=".$resultado['id']." />". $resultado['nome'] ."<br> </label> </div> "; } Mas, está ocorrendo a mesma coisa, ou seja, está checando apenas o primeiro registro. Vlw mesmo Compartilhar este post Link para o post Compartilhar em outros sites
Snowden 94 Denunciar post Postado Fevereiro 24, 2015 $query = mysql_query("SELECT categoria.*, sub_categoria.*, # retorna string 'checked' caso exista registro, caso contrário NULL IF(empresa_sub_categoria.id IS NULL, NULL, 'checked') AS isChecked FROM categoria INNER JOIN sub_categoria ON categoria.id = sub_categoria.id_categoria # verifica se conincide ou não os id empresa e sub_cat. LEFT JOIN empresa_sub_categoria ON sub_categoria.id = empresa_sub_categoria.id_sub_categoria"); while($resultado = mysql_fetch_array($query)) { ... // no input checkbox, imprime direto o resultado echo "<input type='checkbox' name='servicos[]' ".$resultado['isChecked']." value=".$resultado['id']." />"; ... } Compartilhar este post Link para o post Compartilhar em outros sites
sNniffer 1 Denunciar post Postado Fevereiro 25, 2015 Show Hugo, funcionou, mas, trouxe checado todos os itens da tabela, tem como fazer mais uma restrição no sql, para trazer todas subcategorias e checar as que são apenas de determinada empresa: empresa_sub_categoria.id_empresa Vlw Compartilhar este post Link para o post Compartilhar em outros sites
sNniffer 1 Denunciar post Postado Março 2, 2015 Resolvido: $query = mysql_query("SELECT categoria.*, sub_categoria.*, # retorna string 'checked' caso exista registro, caso contrário NULL IF(empresa_sub_categoria.id IS NULL, NULL, 'checked') AS isChecked FROM categoria INNER JOIN sub_categoria ON categoria.id = sub_categoria.id_categoria # verifica se conincide ou não os id empresa e sub_cat. LEFT JOIN empresa_sub_categoria ON sub_categoria.id = empresa_sub_categoria.id_sub_categoria and empresa_sub_categoria.id_empresa = $empresa"); Vlw Hugo Compartilhar este post Link para o post Compartilhar em outros sites