Ir para conteúdo

POWERED BY:

Arquivado

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

Edna Sousa

Cadastro

Recommended Posts

Bom dia gente, estou com um trabalho da faculdade e não estou conseguindo resolver, preciso apresentar hoje e estou perdida e vim pedir a ajuda de vocês, já acompanhava o fórum onde tirei bastante coisa mais agora resolvi tirar uma dúvida.

 

É assim, foi solicitado pra mim duas tabelas (materias e alunos) com as seguintes estruturas:

 

Na tabela matérias:

id_materia

materia

 

Na tabela alunos:

id_aluno

id_materia

data

 

Então como funciona, o aluno faz seu cadastro e depois ele vai selecionar as matérias favoritas então eu devo listar todas as matérias da tabela materias e com um checkbox ir marcando e salvando no banco de dados os checkbox (Essa parte já tenho o código que peguei aqui mesmo).

 

Exemplo:

Tabela materias:

ID 1 - Matemática

ID 2 - Ciências *

ID 3 - História

ID 4 - Português *

 

Tabela alunos ficaria assim:

ID_aluno - 1 | ID_materia - 2 | Data 08/11/2013

ID_aluno - 1 | ID_materia - 4 | Data 08/11/2013

 

Agora o que preciso? Mostrar apenas as matérias que determinado aluno não marcou em uma página para ele marcar posteriormente.

 

Então teria que mostrar na lista apenas:

ID 1 - Matemática

ID 3 - História

 

Deu pra entender gente, tentei explicar o máximo possível, espero uma ajudinha de vcs.

 

Bjos

 

Ninguém? Estava realmente precisando resolver isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste seu código com duvidas mais especificas e o que você esta fazendo que o pessoal lhe da orientação. Agora seu prazo esta meio apertado e se você quiser o código pronto acho difícil, no máximo penso que você consegue um orçamento para esse sistema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais eu não queria o sistema apenas uma página, um SELECT que mostre os dados como falei, é apenas um trabalho da faculdade, nada mirabolante.

 

Apenas leia abaixo e suponha:

 

1 Tabela com o registro das materias e outra onde o usuario selecionou algumas materias favoritas, por exemplo:

 

Tabela materia tem 10 itens e o usuário selecionou apenas 2 sobraram 8 itens da tabela materia correto, preciso exibir esse 8 itens restantes. Só isso... rsrs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se é "só isso" porque você está aqui agora? Viu só? Não é "só isso"... para não dizer que eu não te ajudei, a consulta mágica é NOT IN... se você tem uma lista com os IDs do aluno e quer listar todos menos os que ele já tem, basta um

WHERE alguma coisa NOT IN ($lista_dos_ids_que_o_aluno_ja_tem)

 

Agora é pegar "só isso" e pesquisar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Outro caminho seria este:

 

1) tenha nesta página um array com todas as matérias possíveis e outro array com as matérias que o usuário selecionou.

 

2) Retire as matérias selecionadas pelo usuário do outro array com todas as matérias (pode usar um foreach com a função abaixo).

 

3) Imprima com echo o array com matérias retiradas mais o checkbox. (pode usar um foreach).

 

Vou lhe dar uma função para "subtrair" um elemento do array. Vai ajudar no passo 2

 

<?php

// Esta função remove um elemento de um array
function detach($arrayMain, $Remove)
{
    $newArrayMain = array();
    
    foreach( $arrayMain as $arr) {
        
        if($arr != $RemoveMain){
           $newArrayMain[] = $arr;
        }   

    }

    return $newArrayMain; 

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa irei sim pesquisar, como sempre pesquiso mais quando digo "só isso" é que pra vcs que já são expert no assunto é bem mais fácil do que pra mim que estou começando e me esforçando pra aprender.

 

Vejo várias pessoas perguntando como faz um simples select e tem mais de 10 respostas. Mais mesmo assim obrigada pelo "só isso".

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Outro caminho seria este:

 

1) tenha nesta página um array com todas as matérias possíveis e outro array com as matérias que o usuário selecionou.

 

2) Retire as matérias selecionadas pelo usuário do outro array com todas as matérias (pode usar um foreach com a função abaixo).

 

3) Imprima com echo o array com matérias retiradas mais o checkbox. (pode usar um foreach).

 

Vou lhe dar uma função para "subtrair" um elemento do array. Vai ajudar no passo 2

 

<?php

// Esta função remove um elemento de um array
function detach($arrayMain, $Remove)
{
    $newArrayMain = array();
    
    foreach( $arrayMain as $arr) {
        
        if($arr != $RemoveMain){
           $newArrayMain[] = $arr;
        }   

    }

    return $newArrayMain; 

}

Se for para usar este caminho é mais simples pegar os dois arrays e usar array_diff para ter a diferença entre ambos, que será o que o usuário ainda não tem. Mas isso é só complicar o que dá pra fazer direto na query.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Raouni:

No passo 1) posso pegar os dois arrays com dois selects, uma para a tabela matéria e outra para a tabela alunos;

No passo 2) no $arrayMain seria o array das matérias e $Remove seria as matérias que o aluno já havia escolhido;

 

Seria assim?

 

Muito obrigada pela sua atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

#ESerra

Não conhecia a função array_diff, Obrigado!

 

#Edna

Seria isso mesmo se você usar a array_diff como sugeriu nosso amigo acima. Então $Remove seria outro array com as matérias que o aluno já havia escolhido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou pesquisar agora sobre o NOT IN que o ESerra informou e sobre o array_diffi, e qualquer coisa vou postar meus erros ou acertos pra vcs analisarem viu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pq foi mudado o titulo do meu post para Cadastro? Estranho... Mais tudo bem.

 

Bom fiz o select como o ESerra falou e ele roda legal mais eu inserindo as IDs manualmente, exemplo:

$sql = mysql_query("SELECT *
                    FROM materias
                    WHERE id_materia NOT IN ('1','5')");

Dessa forma ele não mostra as materias com os Ids 1 e 5 mais não estou conseguindo fazer pegar dinamicamente esse ids na tabela alunos.

 

Como poderia fazer isso por favor?

Compartilhar este post


Link para o post
Compartilhar em outros sites


$sql = mysql_query("SELECT id_materia, materia, tbl2.id_materia, data FROM materias as tbl1 INNER JOIN alunos as tbl2 ON tbl1.id_materia = tbl2.id_materia");

 

 


Tente essa query...

Prevejo algum idiota tentando corrigir estupidamente aqui mas tudo bem.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Edgar dessa forma mostra tudo da tabela alunos independente de qual aluno seja, teria que ser apenas de determinado aluno.

 

Assim:

Tabela materias

ID 1 - Matemática
ID 2 - Ciências *
ID 3 - História
ID 4 - Português *

ID 5 - Geografia

Tabela alunos ficaria assim:
ID_aluno - 1 | ID_materia - 2 | Data 08/11/2013
ID_aluno - 1 | ID_materia - 4 | Data 08/11/2013

 

Então mostraria assim (apenas as materias que o aluno não selecionou):

ID 1 - Matemática
ID 3 - História

ID 5 - Geografia

 

Entendeu?

 

O select que o ESerra me passou até vai mais não sei como colocar dinamicamente, um array talvez?



É gente não foi dessa vez que puderam me ajudar, até cheguei ao resultado com esse select:

$sql = mysql_query("SELECT id_materia,materia
                        FROM materia
                        WHERE id_materia NOT IN ('1','5')");

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

echo $row['materia'].'<br>';
}

mais note que coloquei os valores 1 e 5 manualmente, não dinamicamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Edna, segue uma solução para vc resolver esse problema:

 

$sql = mysql_query("SELECT id_materia,materia
                        FROM materia
                        WHERE id_materia NOT IN (SELECT id_materia FROM materias_escolhidas WHERE id_usuario = '1')");

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

echo $row['materia'].'<br>';
}

Neste exemplo supõe-se que a id do usuário seja 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa eu sabia que eu poderia contar com esse fórum, muito obrigada mesmo leonardohipolito você me salvou mesmo, nossa estou aliviada.

 

Me desculpem a todos se fiz, falei algo de errado mais é que estava precisando demais e não vai mais parar de visitar o fórum.

 

Bjo a todos...

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.