Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Hoje tenho um sistema de upload de arquivo onde o usuario seleciona para qual turma esta enviando o arqivo.
EX. Turma 421
Cada upload é feito para uma turma por vez...
Me pediram para mudar o sistema, para o usuario selecionar mais de uma turma por upload...
EX. Turma 421, Turma 422
Como eu faço para salvar isso no BD em registros separados ?
EX.
1 - TURMA 421 - ARQUIVO123.doc
2 - TURMA 422 - ARQUIVO123.doc
vo salvar as mesmas informações, só mudando a turma....
estou totalmente PERDIDO na solução deste problema....
hoje eu passo os dados do formulario e faço o INSERT no BD e tudo OK !
eu tinha pensando em concatenar as turmas e salvar tudo no mesmo registro
1 - TURMA 421, 422, 423 - ARQUIVO123.doc
dai eu só teria que mudar a página que exibe os arquivos para os alunos....
como eu montaria o select para baseado no cadastro do aluno usar o like para buscar a turma ?
idéia:
**select arquivo from upload where turma like (select turma from aluno where codigo_aluno = abc123)**
*(assim não funciona porque não esta montado corretamente, ñ achei a forma correta de montar este SELECT)*E suponha que depois peçam que seja possível remover a associação do arquivo e de determinada turma...
Além disso, a pergunta que você fez foi "Como eu faço para salvar isso no BD em registros separados ?"
Sem saber como está a base fica difícil de montar um SQL certo...
>
E suponha que depois peçam que seja possível remover a associação do arquivo e de determinada turma...
Além disso, a pergunta que você fez foi "Como eu faço para salvar isso no BD em registros separados ?"
Sem saber como está a base fica difícil de montar um SQL certo...
é verdade, eu não tinha pensando na possibilidade de depois ter que tirar o arquivo de uma turma...
meu BD esta da seguinte forma:
tabela_upload:
id
cod_professor
turma
serie
arquivo
data
tabela_aluno:
id
cod_aluno
turma
serie
atualmente o select da pagina de download, faz um inner join da tabela upload com a do aluno atraves da turma.
estou procurando a melhor solução... o concatenar na hora de salvar e usar o like na consulta foi uma idéia que passou aqui....
Se você quer ter os arquivos enviados para as turmas onde o aluno tem registro:
SELECT up.*
FROM tabela_upload AS up
INNER JOIN tabela_aluno AS al
USING (turma)
WHERE al.cod_aluno = '<CODIGO>' AND al.turma LIKE '%<TURMA>%'
É isso?
Qual é o banco de dados?
Carlos Eduardo
no formulário de envio, crie checkboxes baseado nas turmas:
...
<label>Selecione o arquivo: <input type="file" name="arquivo" /></label>
<fieldset>
<legend>Selecione as turmas</legend>
<?php
$sql = mysql_query('SELECT `turma` FROM `tabela_upload`');
while(false !== ($row = mysql_fetch_assoc($sql))) echo "\t\t<label><input type=\"checkbox\" name=\"turmas[]\" value=\"{$row['turma']}\" /> Turma {$row['turma']}</label>";
?>
</fieldset>
...
// daqui pra trás, você já processou o arquivo enviado e armazenou o caminho na variável $arq_end
$values = '';
foreach($_POST['turmas'] as $turma) $values .= '("'.$arq_end.'","'.$turma.'"), ';
$values = substr($values, 0, -2);
$sql = mysql_query('INSERT INTO `tabela_upload` VALUES '.$values);>
Se você quer ter os arquivos enviados para as turmas onde o aluno tem registro:
SELECT up.*
FROM tabela_upload AS up
INNER JOIN tabela_aluno AS al
USING (turma)
WHERE al.cod_aluno = '<CODIGO>' AND al.turma LIKE '%<TURMA>%'
É isso?
quase... acredito que estou errando na hora de montar o like... porque eu preciso buscar na tabela upload só as turmas que são iguais as do aluno no caso seria...up.turma like '%<al.codigo>%' essa parte que não esta certa...
>
no formulário de envio, crie checkboxes baseado nas turmas:
// daqui pra trás, você já processou o arquivo enviado e armazenou o caminho na variável $arq_end
$values = '';
foreach($_POST['turmas'] as $turma) $values .= '("'.$arq_end.'","'.$turma.'"), ';
$values = substr($values, 0, -2);
$sql = mysql_query('INSERT INTO `tabela_upload` VALUES '.$values);
estou dando uma estudada no foreach....
Repito a pergunta, já que não tive resposta. Qual o banco de dados? MySQL? SQL Server?
Carlos Eduardo
>
Repito a pergunta, já que não tive resposta. Qual o banco de dados? MySQL? SQL Server?
Carlos Eduardo
Matias o banco é MySQL... desculpa não ter respondido antes...
Certo. Como o seu problema é na montagem da query, vou mover para o fórum de MySQL.
Tópico Movido
PHP http://forum.imasters.com.br/public/style_emoticons/default/seta.gif MySQL
ta tudo errado gerando redundancia
você upa o arquivo pro banco, ao ser upado ele gera uma chave qualquer atraves de auto_increment
essa chave se relaciona as turmas em outra tabela
banco.arquivos
1 | arquivo.doc
banco.turmas_arquivos
401 | 1
402 | 1
403 | 1
e acaba com esse bacalhauzao de php ai
Você pode usar um select multiple com name = "turmas[]" e no php usar o foreach p/ iterar e p/ cada turma,inserir o registro no banco de dados.