Ir para conteúdo

POWERED BY:

Arquivado

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

Lorena_rio

Envio de emails por grupo

Recommended Posts

Oi pessoal, estou precisando de uma ajuda, não sou expert em php/mysql mas dou um jeitinho.

Tenho um sistema de notas que estou adaptando para cursos livres. Ele envia emails para todos os professores quanto para todos os alunos, porém eu precisava que ele enviasse os emails para cada turma, e não para todos os alunos. segue as tabelas para verem a associação.

 

CREATE TABLE IF NOT EXISTS `alunos` (
`id_aluno` int(10) NOT NULL AUTO_INCREMENT,
`aluno` varchar(255) NOT NULL,
`foto` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`endereco` varchar(255) NOT NULL,
`cep` varchar(255) NOT NULL,
`telefone` varchar(30) NOT NULL,
`pai` varchar(255) NOT NULL,
`mae` varchar(255) NOT NULL,
`sexo` varchar(255) NOT NULL,
`nascimento` varchar(255) NOT NULL,
`cpf` varchar(255) NOT NULL,
`matricula` varchar(255) NOT NULL,
`id_serie` varchar(30) NOT NULL,
`login` varchar(30) NOT NULL,
`senha` varchar(20) NOT NULL,
PRIMARY KEY (`id_aluno`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=33 ;

 

 

 

CREATE TABLE IF NOT EXISTS `series` (
`id_serie` int(10) NOT NULL AUTO_INCREMENT,
`serie` varchar(255) NOT NULL,
PRIMARY KEY (`id_serie`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;

--
-- Extraindo dados da tabela `series`
--

INSERT INTO `series` (`id_serie`, `serie`) VALUES
(1, 'TURMA A'),
(2, 'TURMA B'),
(3, 'TURMA C'),
(4, 'TURMA D'),

 

 

No cadastro o sistema insere a série no cadastro do aluno em id_serie como abaixo na tabela alunos.

 

printph.jpg

 

Nesse caso tenho a coluna email e na coluna id_serie eu tenho a referência da tabela series. No caso aqui eu tenho 3 alunos indicando 1 que é da TURMA A e 1 aluno indicando 3 que é da TURMA C.

 

Então, eu estou querendo enviar não para todos, mas sim quando eu for enviar poder direcionar a coluna ALUNO e a coluna ID_SERIE, assim eu envio um newsletter só para os alunos daquela determinada turma. E nesse caso também não sei como fazer um DropDow para chamar a turma.

 

Abaixo o código php que faz a operação:

 

<p align="center"><b>EMAIL PARA ALUNOS</b></p>
<? if ($_POST[acao] == "enviar") {
$sql = mysql_query("SELECT * FROM alunos");
$i = 1;
while ($coluna = mysql_fetch_array($sql)) {
$headers = "Content-type: text/html; charset=iso-8859-1\r\n";
$headers.= "From:$_POST[form_nome]<$_POST[form_email]>";
if (@mail($coluna,$_POST[form_assunto],$_POST[form_mensagem],$headers)) { echo "$i. <font color=blue>$coluna - enviado</font><br>"; }
else { echo "$i. <font color=red>$coluna - falhou</font><br>"; }
flush(); $i++;
} ?>

 

<td width="110">DE:</td>
<td><input name="form_nome" type="text" size="35"></td>
</tr>
<tr>
<td>EMAIL:</td>
<td><input name="form_email" type="text" id="form_email" size="35"></td>
</tr>
<tr>
<td>ASSUNTO:</td>
<td><input name="form_assunto" type="text" id="form_assunto" size="35"></td>
</tr>
<tr>
<td>MENSAGEM:</td>
<td><textarea name="form_mensagem" id="form_mensagem" cols="70" rows="12"></textarea></td>
</tr>
<tr align="right">
<td colspan="2"><input name="acao" type="hidden" id="acao" value="enviar">
<input type="submit" name="Submit" value="Enviar Mensagem"></td>
</tr>
</table>
</form>

 

No SELECT está assim: ("SELECT * FROM alunos"); que envia para todos, tentei algumas alternativas porém ele vai para a página de envio mas sem listar os emails, e também não dispara nenhum.

 

Grata a quem poder me ajudar.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Selecione os alunos por série. Mudando um pouco sua logica de enviar o e-mail:

if(!empty($_POST['acao']) && $_POST['acao'] == 'enviar'){
	$sql = '';
	
	if(!empty($_POST['id_serie'])){
		$sql = 'SELECT id_aluno,aluno,email
			FROM alunos
			WHERE id_serie = %d';
			
		$sql = sprintf($sql, $_POST['id_serie']);
	} else {
		$sql = 'SELECT id_aluno,aluno,email FROM alunos';
	}
	
	$result = mysql_query($sql) or die(mysql_error());
	
	while($coluna = mysql_fetch_assoc($result)){
		// envia o email para os endereços selecionados
	}
}

// aqui, selecionamos as series disponives para selecionar uma no form
$series = array();
$result = mysql_query("SELECT id_serie,serie FROM series ORDER BY serie ASC");

while($row = mysql_fetch_assoc($result)){
	$series[] = $row;
}

 

E no seu form, adicione em algum lugar a combo:

 

<select name="id_serie" id="id_serie">
	<option value="">-- Selecione uma Série </option>
	<?php
	foreach($series as $row){
		printf('<option value="%d">%s</option>',$row['id_serie'], $row['serie']);
	}
	?>
</select>

 

@braços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentei, mas foi um show de erros, vou passar o código completo para ver se melhora.

 

 

<tr>
<td width="165" valign="top" bgcolor="#CFCFCF">
<? include ("menu.php")?><br>
</td>
<td width="585" valign="top">
<p align="center"><b>EMAIL PARA ALUNOS</b></p>


<? if ($_POST[acao] == "enviar") {
$sql = mysql_query("SELECT * FROM alunos");
$i = 1;
while ($coluna = mysql_fetch_array($sql)) {
$headers = "Content-type: text/html; charset=iso-8859-1\r\n";
$headers.= "From:$_POST[form_nome]<$_POST[form_email]>";
if (@mail($coluna,$_POST[form_assunto],$_POST[form_mensagem],$headers)) { echo "$i. <font color=blue>$coluna - enviado</font><br>"; }
else { echo "$i. <font color=red>$coluna - falhou</font><br>"; }
flush(); $i++;
} ?>

<p align="center"><a href="<?=$_SERVER['SCRIPT_NAME']?>">VOLTAR</a></p>
<? } else { ?><p align="center"><? echo mysql_num_rows(mysql_query("SELECT * FROM alunos"))?> ALUNOS CADASTRADOS NO BANCO DE DADOS.</p>
<form name="form1" method="post" action="<?=$_SERVER['SCRIPT_NAME']?>">
<table width="500" border="1" align="center" cellpadding="2" cellspacing="0" bordercolor="#FFE4C4">
<tr>
<td width="110">DE:</td>
<td><input name="form_nome" type="text" size="35"></td>
</tr>
<tr>
<td>EMAIL:</td>
<td><input name="form_email" type="text" id="form_email" size="35"></td>
</tr>
<tr>
<td>ASSUNTO:</td>
<td><input name="form_assunto" type="text" id="form_assunto" size="35"></td>
</tr>
<tr>
<td>MENSAGEM:</td>
<td><textarea name="form_mensagem" id="form_mensagem" cols="70" rows="12"></textarea></td>
</tr>
<tr align="right">
<td colspan="2"><input name="acao" type="hidden" id="acao" value="enviar">
<input type="submit" name="Submit" value="Enviar Mensagem"></td>
</tr>
</table>
</form>
<? } ?><br>
</td>
</tr>
<tr align="right" bgcolor="#CFCFCF">
<td colspan="2"><b><a href="www.xxxx.com.br" target="_blank">MEUS CURSOS</a></b></td>
</tr>
</table>
</body>
</html>
<? } mysql_close()?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste quais foram os erros.

 

Não utilize apenas

 

<? ?>

você terá ou já está tendo problemas por conta disso, na maioria dos servidores não passa...

 

Pegue o ábto de utilizar:

 

<?php ?>

 

Não utilize o " @ " para enibir avisos ou erros da função: if (@mail($c

 

Erros ou avisos servem justamente para te dizer onde está o erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendo, mas os erros que estão aparecndo não estão sendo indicados, ele apenas diz: erro na linha tal, e por aí vai. Aí eu deleto o <? } else { ?> ele diz que o erro é na última linha, aí deleto o <? } mysql_close()?> ele volta a funcionar, porém não a função de enviar, já que eu deletei essas funções.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, seguinte, você no mínimo deve estar tentando enviar email de sua máquina local, e provavelmente não vai conseguir. salvo se você tiver um servidor de email rodando...

 

Quando utilizar a função mysql_close(); é necessário passar o como parâmetro a conexão de entrada.

 

 

 

mysql_close($var_da_conexao_mysql);

Rode o script e me diga qual o erro.

 

 

 

 

<tr>
<td width="165" valign="top" bgcolor="#CFCFCF">
<?php include("menu.php"); ?><br>
</td>
<td width="585" valign="top">
<p align="center"><b>EMAIL PARA ALUNOS</b></p>


<?php if($_POST['acao'] == "enviar") {
$sql = mysql_query("SELECT * FROM alunos")or die(mysql_error());
$i = 1;
while ($coluna = mysql_fetch_array($sql)) {
$headers = "Content-type: text/html; charset=iso-8859-1\r\n";
$headers.= "From:".$_POST['form_nome']."<".$_POST['form_email'].">";
if (mail($coluna['email'],$_POST['form_assunto'],$_POST['form_mensagem'],$headers)) { echo "$i. <font color=blue>".$coluna['email']." - enviado</font><br>"; }
else { echo "$i. <font color=red>".$coluna['email']." - falhou</font><br>"; }
flush(); $i++;
} ?>

<p align="center"><a href="<?php print $_SERVER['SCRIPT_NAME']; ?>">VOLTAR</a></p>
<? } else { ?><p align="center"><? echo mysql_num_rows(mysql_query("SELECT * FROM alunos"))?> ALUNOS CADASTRADOS NO BANCO DE DADOS.</p>
<form name="form1" method="post" action="<?php print $_SERVER['SCRIPT_NAME']; ?>">
<table width="500" border="1" align="center" cellpadding="2" cellspacing="0" bordercolor="#FFE4C4">
<tr>
<td width="110">DE:</td>
<td><input name="form_nome" type="text" size="35"></td>
</tr>
<tr>
<td>EMAIL:</td>
<td><input name="form_email" type="text" id="form_email" size="35"></td>
</tr>
<tr>
<td>ASSUNTO:</td>
<td><input name="form_assunto" type="text" id="form_assunto" size="35"></td>
</tr>
<tr>
<td>MENSAGEM:</td>
<td><textarea name="form_mensagem" id="form_mensagem" cols="70" rows="12"></textarea></td>
</tr>
<tr align="right">
<td colspan="2"><input name="acao" type="hidden" id="acao" value="enviar">
<input type="submit" name="Submit" value="Enviar Mensagem"></td>
</tr>
</table>
</form>
<?php } ?><br>
</td>
</tr>
<tr align="right" bgcolor="#CFCFCF">
<td colspan="2"><b><a href="www.xxxx.com.br" target="_blank">MEUS CURSOS</a></b></td>
</tr>
</table>
</body>
</html>
<?php } ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não alaete, acho que vc não entendeu meu questionamento lá em cima. O sistema funciona perfeitamente, e dispara os emails na boa. O que preciso é selecionar por grupos para enviar por turmas, esse está sendo o problema. O hufersil tentou passar uma solução, porém aí é que vem os erros. Mas acho que eu deveria ter postado o código inteiro para ele antes.

 

Não está localmente, está pelo uolhost, e funciona perfeito, fazer a mudança para enviar por turmas é que está sendo o trabalho, essa associação ou mudando alguns parametros no código original é que aparecem os erros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, entendi, acabei desviando o fôco pois vi que você falou que deu "erro" no post #6

 

 

Então, você precisa no caso, de um combox puxando as series do banco de dados para seleção, após isso, você gostaria de "marcar" alguns alunos pertencentes a aquela série ? ou enviar para todos os alunos daquela série ?

 

Tipo, você quer enviar para todos os alunos daquela turma, ou quer selecionar o aluno desejado ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, o código está funcional, quando eu troco a parte que o hufersil falou da o erro.

 

79811077.jpg

 

E troco pelo código que ele passou

 

27881447.jpg

 

E vou na aba referente aos alunos ele aparece esse erro:

 

Parse error: syntax error, unexpected T_ELSE in /home/cursos/public_html/curso/newsletter_alunos.php on line 68

 

 

Sim, respondendo, eu queria enviar para todos os alunos daquela série. Como está ele envia para todos os alunos de todas as séries que estão no banco de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, veja se funciona do jeito que você quer, a lógica é essa:

 

 






<tr>
<td width="165" valign="top" bgcolor="#CFCFCF">
<?php include("menu.php"); ?><br>
</td>
<td width="585" valign="top">
<p align="center"><b>EMAIL PARA ALUNOS</b></p>


<?php if($_POST['acao'] == "enviar") {

$series = isset($_POST['serie']) ? $_POST['serie'] : false;

$sql = mysql_query("SELECT * FROM alunos WHERE id_serie =".$series)or die(mysql_error());
$i = 1;
while ($coluna = mysql_fetch_array($sql)) {
$headers = "Content-type: text/html; charset=iso-8859-1\r\n";
$headers.= "From:".$_POST['form_nome']."<".$_POST['form_email'].">";
if (mail($coluna['email'],$_POST['form_assunto'],$_POST['form_mensagem'],$headers)) { echo "$i. <font color=blue>".$coluna['email']." - enviado</font><br>"; }
else { echo "$i. <font color=red>".$coluna['email']." - falhou</font><br>"; }
flush(); $i++;
} ?>

<p align="center"><a href="<?php print $_SERVER['SCRIPT_NAME']; ?>">VOLTAR</a></p>
<? } else { ?><p align="center"><? echo mysql_num_rows(mysql_query("SELECT * FROM alunos"))?> ALUNOS CADASTRADOS NO BANCO DE DADOS.</p>
<form name="form1" method="post" action="<?php print $_SERVER['SCRIPT_NAME']; ?>">
<table width="500" border="1" align="center" cellpadding="2" cellspacing="0" bordercolor="#FFE4C4">
<tr>
<td width="110">DE:</td>
<td><input name="form_nome" type="text" size="35"></td>
</tr>
<tr>
<td>Série:
<select name="series">
<?php
$selectSerie = mysql_query("SELECT * FROM serie ORDER BY id_serie DESC")or die(mysql_error());
if(mysql_num_rows($selectSerie) > 0)
{
while($ver = mysql_fetch_array($selectSerie))
{
?>
<option value="<?php print $ver['id_serie']; ?>"><?php print $ver['serie']; ?></option>
<?php
}
}
?>
</select>
</td>
</tr>
<tr>
<td>EMAIL:</td>
<td><input name="form_email" type="text" id="form_email" size="35"></td>
</tr>
<tr>
<td>ASSUNTO:</td>
<td><input name="form_assunto" type="text" id="form_assunto" size="35"></td>
</tr>
<tr>
<td>MENSAGEM:</td>
<td><textarea name="form_mensagem" id="form_mensagem" cols="70" rows="12"></textarea></td>
</tr>
<tr align="right">
<td colspan="2"><input name="acao" type="hidden" id="acao" value="enviar">
<input type="submit" name="Submit" value="Enviar Mensagem"></td>
</tr>
</table>
</form>
<?php } ?><br>
</td>
</tr>
<tr align="right" bgcolor="#CFCFCF">
<td colspan="2"><b><a href="www.xxxx.com.br" target="_blank">MEUS CURSOS</a></b></td>
</tr>
</table>
</body>
</html>
<?php } ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos lá, coloquei esse seu, porém dessa forma ele não aparece os campos de baixo: nome, email e mensagem. e no select ele não puxou as séries. coloquei o select original aí ele voltou ao normal e puxou as séries, mas quando eu envio agora ele aparece essa mensagem:

 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

 

Creio que sua lógica funcionou, agora é ver pq os campos sumiram e ele não conseguiu puxar as séries. porém essa mensagem do envio agora está relacionada a parte de cima que vc modificou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, eu estava meio "zureta" ontem, tô doente, minha mente ta "Lerda" rsrsrsr... esqueci algumas coisas no script, vamos ver se funciona agora.

 

 

 

 

 

<tr>
<td width="165" valign="top" bgcolor="#CFCFCF">
<?php include("menu.php"); ?><br>
</td>
<td width="585" valign="top">
<p align="center"><b>EMAIL PARA ALUNOS</b></p>


<?php
if($_POST['acao'] == "enviar")
{

$series = isset($_POST['series']) ? $_POST['series'] : false;

$sql = mysql_query("SELECT * FROM alunos WHERE id_serie ='".$series."'")or die(mysql_error());

$i = 1;

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

$headers = "Content-type: text/html; charset=iso-8859-1\r\n";
$headers.= "From:".$_POST['form_nome']."<".$_POST['form_email'].">";

if(mail($coluna['email'],$_POST['form_assunto'],$_POST['form_mensagem'],$headers))
{

echo "$i. <font color=blue>".$coluna['email']." - enviado</font><br>";

}else{

echo "$i. <font color=red>".$coluna['email']." - falhou</font><br>";

}

flush();
$i++;

}
?>
<p align="center"><a href="<?php print $_SERVER['SCRIPT_NAME']; ?>">VOLTAR</a></p>
<?php
}else{
?>
<p align="center">
<?php
$quant = mysql_query("SELECT * FROM alunos")or die(mysql_error());

$quantidade = mysql_num_rows($quant);

print $quantidade;

?> ALUNOS CADASTRADOS NO BANCO DE DADOS.</p>

<form name="form1" method="post" action="<?php print $_SERVER['SCRIPT_NAME']; ?>">
<table width="500" border="1" align="center" cellpadding="2" cellspacing="0" bordercolor="#FFE4C4">
<tr>
<td width="110">DE:</td>
<td><input name="form_nome" type="text" size="35"></td>
</tr>
<tr>
<td>Série:

</td>
<td><select name="series">
<?php
$selectSerie = mysql_query("SELECT * FROM serie ORDER BY id_serie DESC")or die(mysql_error());
if(mysql_num_rows($selectSerie) > 0)
{
while($ver = mysql_fetch_array($selectSerie))
{
?>
<option value="<?php print $ver['id_serie']; ?>"><?php print $ver['serie']; ?></option>
<?php
}
}
?>
</select></td>
</tr>
<tr>
<td>EMAIL:</td>
<td><input name="form_email" type="text" id="form_email" size="35"></td>
</tr>
<tr>
<td>ASSUNTO:</td>
<td><input name="form_assunto" type="text" id="form_assunto" size="35"></td>
</tr>
<tr>
<td>MENSAGEM:</td>
<td><textarea name="form_mensagem" id="form_mensagem" cols="70" rows="12"></textarea></td>
</tr>
<tr align="right">
<td colspan="2"><input name="acao" type="hidden" id="acao" value="enviar">
<input type="submit" name="Submit" value="Enviar Mensagem"></td>
</tr>
</table>
</form>
<?php } ?><br>
</td>
</tr>
<tr align="right" bgcolor="#CFCFCF">
<td colspan="2"><b><a href="www.xxxx.com.br" target="_blank">MEUS CURSOS</a></b></td>
</tr>
</table>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

rsrs. estamos tentando e agradeço essa ajuda.

 

Tentei, mas está praticamente como antes, ele não aparece os campos nome, email e mensagem. E no Drop ele não puxa série nenhuma.

 

Estou quase desistindo. Até achei quer poderia ser uma coisa mais simples.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é realmente simples Lorena, relaxe... mais que tem algo estranho aí tem, não era pra dar errado.

 

DESISTIR ? Coisa feia mulher... "vumbora pra frente".

 

Execute o código abaixo e me diga.

 

 



<tr>
<td width="165" valign="top" bgcolor="#CFCFCF">
<?php include("menu.php"); ?><br>
</td>
<td width="585" valign="top">
<p align="center"><b>EMAIL PARA ALUNOS</b></p>


<?php
if($_SERVER['REQUEST_METHOD']=='POST' and isset($_POST['acao']) and $_POST['acao']=='enviar')
{

$series = isset($_POST['series']) ? $_POST['series'] : false;

$sql = mysql_query("SELECT * FROM alunos WHERE id_serie ='".$series."'")or die(mysql_error());

$i = 1;

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

$headers = "Content-type: text/html; charset=iso-8859-1\r\n";
$headers.= "From:".$_POST['form_nome']."<".$_POST['form_email'].">";

if(mail($coluna['email'],$_POST['form_assunto'],$_POST['form_mensagem'],$headers))
{

echo $i."<font color=blue>".$coluna['email']." - enviado</font><br>";

}else{

echo $i."<font color=red>".$coluna['email']." - falhou</font><br>";

}
flush();
$i++;
}
?>
<p align="center"><a href="<?php print $_SERVER['SCRIPT_NAME']; ?>">VOLTAR</a></p>

<p align="center">
<?php
}else{
$quant = mysql_query("SELECT * FROM alunos")or die(mysql_error());

$quantidade = mysql_num_rows($quant);

print $quantidade;

?> ALUNOS CADASTRADOS NO BANCO DE DADOS.</p>

<form name="form1" method="post" action="<?php print $_SERVER['SCRIPT_NAME']; ?>">
<table width="500" border="1" align="center" cellpadding="2" cellspacing="0" bordercolor="#FFE4C4">
<tr>
<td width="110">DE:</td>
<td><input name="form_nome" type="text" size="35"></td>
</tr>
<tr>
<td>Série:

</td>
<td><select name="series">
<?php
$selectSerie = mysql_query("SELECT * FROM serie ORDER BY id_serie DESC")or die(mysql_error());
if(mysql_num_rows($selectSerie) > 0)
{
while($ver = mysql_fetch_array($selectSerie))
{
?>
<option value="<?php print $ver['id_serie']; ?>"><?php print $ver['serie']; ?></option>
<?php
}
}
?>
</select>
</td>
</tr>
<tr>
<td>EMAIL:</td>
<td><input name="form_email" type="text" id="form_email" size="35"></td>
</tr>
<tr>
<td>ASSUNTO:</td>
<td><input name="form_assunto" type="text" id="form_assunto" size="35"></td>
</tr>
<tr>
<td>MENSAGEM:</td>
<td><textarea name="form_mensagem" id="form_mensagem" cols="70" rows="12"></textarea></td>
</tr>
<tr align="right">
<td colspan="2"><input name="acao" type="hidden" id="acao" value="enviar">
<input type="submit" name="Submit" value="Enviar Mensagem"></td>
</tr>
</table>
</form>
<br>
</td>
</tr>
<tr align="right" bgcolor="#CFCFCF">
<td colspan="2"><b><a href="www.xxxx.com.br" target="_blank">MEUS CURSOS</a></b></td>
</tr>
</table>
<?php
}
?>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alaerte, ele deu erro logo de cara, mas estava faltando o <?php } ?> na última linha, porém ele ficou como antes. Nada dos campos e nenhuma série no Drop. Então, resolvi agora deixar bem claro o código funcional, o que está original sem erros, ele puxa as séries, indica o número de alunos naquela série, porém quando envia os emaisl ele envia a todos. Os emails chegam direitinho, porém vai para todos. Aqui vou explicar os blocos certinho. Eu não estou conseguindo fazer é a associação da ação enviar com o drop puxando as turmas. Então vamos lá agora bem claro. Nossa, vou te dar um beijo quando isso terminar.

 

Na fotos abaixo indico os campos bem separado para facilidade do entendimento e eliminação do que não precisa mexer.

 

Basicamente nas linhas 45 e 46 é aonde ele envia para as turmas, então é o chave de tudo, e nele que tenho de associar ao Drop do Select na segunda seta vermelha, para ele puxar as turmas que é selecinada lá e enviar as mesmas.

 

Nas linhas 49 a 57 é aonde ele indica ao destinatário o nome e email de quem enviou. Nesse campo tenhu dívidas se tem algum relacionamento com o enviar e as linhas 56 e 57 é quando ele vai para a outra página indicando que foi enviado.

 

Nas linhas 60 a 66 é o Drop, nesse Select funciona perfeitamente, ele puxa as turmas e indica quanto alunos tem nas mesmas, sem problemas, mas a associação para o enviar é que é o grande problema.

 

Nas linhas 69 a 107 é basicamente aonde ele puxa o número de alunos quando eu indico no Drop a turma. Também funcionado perfeito, e abaixo sem problemas são os campos, que também chegam perfeitos no email dos destinatários.

 

Resumindo então é aonde eu coloquei as duas setas vermelhas, que é a parte do envio e a parte do Drop é que tem de haver uma associação. No caso nas linhas 45 e 46, nesse conhunto é que tenho de fazer a associação com o Drop para ele puxar o que selecionei lá e enviar a esses. Espero ter explicado bem e não ter enrolado mais ainda.

 

http://www.imagebam.com/image/82b1fa245599528

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alaerte, ele deu erro logo de cara,

 

Alguém me indica uma reza braba ?! :o

 

Certo, entendi sim... eu fiz um teste aqui criei o banco de dados e as suas tabelas... meu código aqui funciona perfeitamente :unsure:

 

Poste esse código que me mandou na imagem, exatamente como ele está na imagem, vou te mostrar de uma vez o que está errado e o que tem que ser feito, eu não vou mecher, vou dizer onde mecher e você mesmo altera.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele está exatamente como está na imagem. Sem tirar nem por.

 

<tr>
<td width="165" valign="top" bgcolor="#CFCFCF">
<? include ("menu.php")?><br>
</td>
<td width="585" valign="top">
<p align="center"><b>EMAIL PARA ALUNOS</b></p>
<? if ($_POST[acao] == "enviar") {
$sql = mysql_query("SELECT * FROM alunos");


$i = 1;
while ($coluna = mysql_fetch_array($sql)) {
$headers = "Content-type: text/html; charset=iso-8859-1\r\n";
$headers.= "From:$_POST[form_nome]<$_POST[form_email]>";
if (@mail($coluna,$_POST[form_assunto],$_POST[form_mensagem],$headers)) { echo "$i. <font color=blue>$coluna - enviado</font><br>"; }
else { echo "$i. <font color=red>$coluna - falhou</font><br>"; }
flush(); $i++;
} ?><p align="center"><a href="<?=$_SERVER['SCRIPT_NAME']?>">VOLTAR</a></p>
<? } else { ?>


<p align="center"><select name="id_serie" onchange="document.location.href='newsletter_alunos.php?id_serie='+this.value">
<option value="">SELECIONE UMA SÉRIE</option>
<? $sql = mysql_query("SELECT * FROM series ORDER BY serie");
while ($coluna = mysql_fetch_array($sql)) { ?>
<option value="<?=$coluna[id_serie]?>"<? if ($_GET[id_serie] == $coluna[id_serie]) echo " selected"; ?>><?=$coluna[serie]?></option>
<? } ?>
</select></p>


<? $sql = mysql_query("SELECT * FROM alunos WHERE id_serie=$_GET[id_serie]");
while ($coluna = @mysql_fetch_array($sql)) { ?>
<? } ?>

<center><? echo mysql_num_rows(mysql_query("SELECT * FROM alunos WHERE id_serie=$_GET[id_serie]"))?> ALUNOS CADASTRADOS NO BANCO DE DADOS.</p>
<form name="form1" method="post" action="<?=$_SERVER['SCRIPT_NAME']?>">
<table width="500" border="1" align="center" cellpadding="2" cellspacing="0" bordercolor="#FFE4C4">
<tr>
<td width="110">DE:</td>
<td><input name="form_nome" type="text" size="35"></td>
</tr>
<tr>
<td>EMAIL:</td>
<td><input name="form_email" type="text" id="form_email" size="35"></td>
</tr>
<tr>
<td>ASSUNTO:</td>
<td><input name="form_assunto" type="text" id="form_assunto" size="35"></td>
</tr>
<tr>
<td>MENSAGEM:</td>
<td><textarea name="form_mensagem" id="form_mensagem" cols="70" rows="12"></textarea></td>
</tr>
<tr align="right">
<td colspan="2"><input name="acao" type="hidden" id="acao" value="enviar">
<input type="submit" name="Submit" value="Enviar Mensagem"></td>
</tr>
</table>
</form>
<? } ?><br>
</td>
</tr>
<tr align="right" bgcolor="#CFCFCF">
<td colspan="2"><b><a href="www.xxxx.com.br" target="_blank">MEUS CURSOS</a></b></td>
</tr>
</table>
</body>
</html>
<? } mysql_close()?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lorena, basta você passar o ID da séria para a consulta da linha: 46.

 

Comentei as linhas "69,70,71" pois você está fazendo uma consulta com loop sem necessidade e sem usar os dados.

 

Adicionei um campo hidden em seu formulário para receber o ID do DROP e ser enviado via post.

 

 

Bom eu modifiquei pouca coisa, você vai perceber logo abaixo, faça o backup do original e rode este:

 

 

 

 

<tr>
<td width="165" valign="top" bgcolor="#CFCFCF">
<? include ("menu.php")?><br>
</td>
<td width="585" valign="top">
<p align="center"><b>EMAIL PARA ALUNOS</b></p>
<? if ($_POST[acao] == "enviar") {

$sql = mysql_query("SELECT * FROM alunos WHERE id_serie='{$_POST['serie_id']}'")or die(mysql_error());


$i = 1;
while ($coluna = mysql_fetch_array($sql)) {
$headers = "Content-type: text/html; charset=iso-8859-1\r\n";
$headers.= "From:$_POST[form_nome]<$_POST[form_email]>";
if (@mail($coluna[email],$_POST[form_assunto],$_POST[form_mensagem],$headers)) { echo "$i. <font color=blue>$coluna[email] - enviado</font><br>"; }
else { echo "$i. <font color=red>$coluna[email] - falhou</font><br>"; }
flush(); $i++;
} ?><p align="center"><a href="<?=$_SERVER['SCRIPT_NAME']?>">VOLTAR</a></p>
<? } else { ?>


<p align="center"><select name="id_serie" onchange="document.location.href='newsletter_alunos.php?id_serie='+this.value">
<option value="">SELECIONE UMA SÉRIE</option>
<? $sql = mysql_query("SELECT * FROM series ORDER BY serie");
while ($coluna = mysql_fetch_array($sql)) { ?>
<option value="<?=$coluna[id_serie]?>"<? if ($_GET[id_serie] == $coluna[id_serie]) echo " selected"; ?>><?=$coluna[serie]?></option>
<? } ?>
</select></p>


<?
#$sql = mysql_query("SELECT * FROM alunos WHERE id_serie=$_GET[id_serie]");
#while ($coluna = @mysql_fetch_array($sql))
#{
#}
?>

<center><? echo mysql_num_rows(mysql_query("SELECT * FROM alunos WHERE id_serie=$_GET[id_serie]"))?> ALUNOS CADASTRADOS NO BANCO DE DADOS.</p>
<form name="form1" method="post" action="<?=$_SERVER['SCRIPT_NAME']?>">

<input type="hidden" name="serie_id" id="serie_id" value="<?php print $_GET['id_serie']; ?>"

<table width="500" border="1" align="center" cellpadding="2" cellspacing="0" bordercolor="#FFE4C4">
<tr>
<td width="110">DE:</td>
<td><input name="form_nome" type="text" size="35"></td>
</tr>
<tr>
<td>EMAIL:</td>
<td><input name="form_email" type="text" id="form_email" size="35"></td>
</tr>
<tr>
<td>ASSUNTO:</td>
<td><input name="form_assunto" type="text" id="form_assunto" size="35"></td>
</tr>
<tr>
<td>MENSAGEM:</td>
<td><textarea name="form_mensagem" id="form_mensagem" cols="70" rows="12"></textarea></td>
</tr>
<tr align="right">
<td colspan="2"><input name="acao" type="hidden" id="acao" value="enviar">
<input type="submit" name="Submit" value="Enviar Mensagem"></td>
</tr>
</table>
</form>
<? } ?><br>
</td>
</tr>
<tr align="right" bgcolor="#CFCFCF">
<td colspan="2"><b><a href="www.xxxx.com.br" target="_blank">MEUS CURSOS</a></b></td>
</tr>
</table>
</body>
</html>
<? } mysql_close()?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caraca...... Aonde eu te encontro para te dar um beijo? Funcionou. Só o s campos das mensagens que ficou desalinhado, mas isso arrumo fácil. Fez todo procedimento como antes, mas agora ele envia certinho só para os determinados daquela turma.

 

Perfeito. Nem sei como agradecer.

 

A parte que está desalinhando os campos é essa:

 

<input type="hidden" name="serie_id" id="serie_id" value="<?php print $_GET['id_serie']; ?>"

 

Se eu mover de lugar alinha, mas não funciona o envio. Mas agora é só eu tentar ver como fazer aqui, o duro vc já conseguiu.

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.