Toninho Posted June 16, 2022 at 01:44 PM Report Share #626232 Posted June 16, 2022 at 01:44 PM Olá, Preciso enviar os 10 ultimos itens de um mysql para todos os e-mails cadastrados, com codigo abaixo não acontece nada. <?php $conn = new mysqli("localhost","user","pass","db"); $sql = mysqli_query($conn, "SELECT * FROM jobs"); $numRows = mysqli_num_rows($sql); $mail_body = ''; while($row = mysqli_fetch_array($sql)){ $id = $row["id"]; $salary = $row["salary"]; $cargo=$row["title"]; $description = $row["plot"]; $mail_body = ''; } //colocar a chamada mail dentro do loop que itera sobre os clientes: $sql = mysqli_query($conn, "SELECT email FROM subscriptions WHERE id=4168"); $numRows = mysqli_num_rows($sql); $subject = "New jobs"; $headers = "From:info@umsite.com\r\n"; $headers .= "Content-type: text/html\r\n"; while($row = mysqli_fetch_array($sql)){ $email = $row["email"]; $name = $row["firstname"]; $mail_result = mail($email, $subject, $mail_body, $headers); if ($mail_result) { echo 'ok'; } } ?> grato por qualquer ajuda Link to comment Share on other sites More sharing options...
Ivo Vicente Posted June 16, 2022 at 07:48 PM Report Share #626236 Posted June 16, 2022 at 07:48 PM Para consultar os últimos 10 registos, tens que aplicar uma ordenação e um limite -- Assumindo que existe uma coluna id (também pode ser um timestamp) SELECT * FROM jobs ORDER BY id DESC LIMIT 10; Depois tens que passar o código de enviar email para dentro do WHILE que processas os resultados do primeiro query. Feito é melhor que perfeito Link to comment Share on other sites More sharing options...
Solution Toninho Posted June 17, 2022 at 11:14 AM Author Solution Report Share #626240 Posted June 17, 2022 at 11:14 AM Obrigado Ivo Link to comment Share on other sites More sharing options...
Toninho Posted June 17, 2022 at 03:10 PM Author Report Share #626244 Posted June 17, 2022 at 03:10 PM De volta, Ivo e demais, somente envia para um e-mail, o que esta errado? $conn = new mysqli("localhost","user","pass","bd"); $sql = mysqli_query($conn, "SELECT empregos.id, empregos.city,empregos.state,empregos.title,empregos.plot,empregos.salary,empregos.created_at,empregos.category as cat,subscriptionsbh.city_id,subscriptionsbh.id as ids,subscriptionsbh.email as mail FROM `empregos`,subscriptionsbh WHERE empregos.city=subscriptionsbh.city_id AND approved=1 AND created_at BETWEEN NOW() - INTERVAL 3 DAY AND NOW() limit 10"); $numRows = mysqli_num_rows($sql); $message = ''; while($row = mysqli_fetch_array($sql)){ $id = $row["id"]; $price = $row["salary"]; $cargo = $row["title"]; $city = $row["city"]; $plot = $row["plot"]; $T20=$city; $_SESSION['T20']=$T20; $message .= '<html><body>'; $message .= '<table style="background-color:#F3F3F3; text-decoration:none" cellpadding="4">'; $message .= "<tr><td><a href=/".str_replace(" ","-",strtolower($city)).">".$city."</a></td></tr>"; $message .= "<tr><td><a href=/".str_replace(" ","-",strtolower($city)).'/mais/'.$id.'-'.str_replace(" ","-",$cargo).">". $cargo."</a></td></tr>"; $message .= "<tr><td>" . $plot. "</td></tr><br>"; $message .= "</table>"; $message .= "</body></html>"; } $sql = mysqli_query($conn, "SELECT * FROM subscriptionsbh WHERE city_id='".$city."' and is_confirmed=1 AND (last_sent < CURDATE() OR last_sent IS NULL) " ); $numRows = mysqli_num_rows($sql); $subject = "Novos"; $headers = "From:no-reply@site.com\r\n"; $headers .= "Content-type: text/html\r\n"; while($row = mysqli_fetch_array($sql)){ $emailaddress[] = $row["email"]; $email = $row["email"]; //$name = $row["firstname"]; } $i=0; foreach($emailaddress as $contactemail) { $replyName = "site"; $replyEmail = "no-reply@site"; $contactname = ""; $headers = "From: ".$replyName." <".$replyEmail.">" . PHP_EOL; $headers .= "MIME-Version: 1.0" . PHP_EOL; $headers .= "Content-type: text/html; charset=iso-8859-1" . PHP_EOL; //$para=$contactemail; $hoje=date("d-m-Y"); $subject = $_GET['msg']." ".$T20." (".$hoje.")"; // Headers //echo "ver emails". $contactemail; mail($contactemail, $subject, $message, $headers); $i++; echo "<h2>Email notification sent</h2>"; echo "<h2>".$i." mails sent</h2>"; } Link to comment Share on other sites More sharing options...
Ivo Vicente Posted June 17, 2022 at 05:42 PM Report Share #626249 Posted June 17, 2022 at 05:42 PM Viva, Se executares o query SELECT * FROM subscriptionsbh WHERE city_id='".$city."' ... . num editor de SQL devolve mais do que 1 resultado? Também podes fazer var_dump($numRows) tens essa variavel em 2 locais, mas não vejo que a uses, mas sempre podes saber o numero de resultados da query, porque assim à partida o problema deve ser aí. Nota à parte, aconselhava-te a começar a pensar em usar o PDO para ações nas bases de dados (link adicional, explicação do porquê e sugestões), se estiveres a fazer algum curso online e não fale em PDO, pede o dinheiro de volta. Feito é melhor que perfeito Link to comment Share on other sites More sharing options...
Toninho Posted June 17, 2022 at 06:39 PM Author Report Share #626252 Posted June 17, 2022 at 06:39 PM Ivo, var_dump($numRows); 4 registros (cidades) var_dump($numRows); 1 email (na tabela de teste subscriptionsbh tem 4 e-mails) var_dump($contactemail); 1 email (na tabela de teste subscriptionsbh tem 4 e-mails) Deveria enviar para os 4 emails e para as cidades correspondentes de cada e-mail, esta enviando somente para um e-mail com varias cidades. Sendo possível me ajude. Link to comment Share on other sites More sharing options...
Ivo Vicente Posted June 17, 2022 at 09:39 PM Report Share #626254 Posted June 17, 2022 at 09:39 PM <?php //.... $message .= "</table>"; $message .= "</body></html>"; //-- Estas a fechar o WHILE antes do novo query } //-- Valor city, é o ultimo dos resultados do query de cima $sql = mysqli_query($conn, "SELECT * FROM subscriptionsbh WHERE city_id='".$city."' and is_confirmed=1 AND (last_sent < CURDATE() OR last_sent IS NULL) " ); $numRows = mysqli_num_rows($sql); Esta aí em cima comentado no código onde está o teu problema atual. Feito é melhor que perfeito Link to comment Share on other sites More sharing options...
Toninho Posted June 20, 2022 at 12:52 PM Author Report Share #626262 Posted June 20, 2022 at 12:52 PM Ivo, fiz as alterações, mas não funcionou Link to comment Share on other sites More sharing options...
Ivo Vicente Posted June 20, 2022 at 01:16 PM Report Share #626264 Posted June 20, 2022 at 01:16 PM Tens que continuar a fazer debug e ver nas linhas principais os resultados, pelo código atual não tenho mais ideias para ajudar neste momento Feito é melhor que perfeito Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now