Ir para conteúdo
Remazela

Enviar E-mail com PHP

Recommended Posts

Caros amigos.

 

Saudações amante de informática. 

 

Apenas uma dúvida:

- para testar envio de e-mail com PHP eu preciso hospedar o sistema ou tem como testar sem estar hospedado ?

 

Se não precisar qual o procedimento devo usar ?

 

Grato, 

 

Renato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você diz enviando através de um servidor local (seu computador)?

 

Sim tem como, você deve usar um SMTP para isso, e configurar o servidor local para tal ação.

 

Veja essa classe a própria descrição dele mostra como fazer, além que é uma classe para envios usando PHPMailer

Spoiler

<?php

/**
 * ****************************************************
 * @Copyright (c) 2016, Spell Master.
 * @Version 3.0
 * ****************************************************
 * @Class Envio de e-mail
 * ****************************************************
 * @requires
 * * PHPMailer 5.2
 * * Contants de definição
 * ****************************************************
 * * @const MAILSLL  : Tipo de acesso tls/ssl ao SMTP
 * * @const MAILHOST : Endereço do SMTP
 * * @const MAILPORT : Porta de Acesso
 * * @const MAILUSER : endereço do e-mail que envia
 * * @const MAILPASS : Senha do e-mail que envia
 * * @const NAME     : Nome de quem envia
 * ****************************************************
 * @tutorial localhost
 * - Abra o arquivo httpd.conf do apache
 * Habilite o ssl_module
 * - Abra o arquivo php.ini
 * Ative as extensões:
 * php_curl
 * php_openssl
 * php_sockets
 * php_smtp(caso tenha)
 * - NOTA -
 * Caso o SMTP do e-mail que envia tenha segurança de
 * criptografia de dados como é o caso do GMAIL:
 * Acessar: https://myaccount.google.com/security
 * Procure por: "Acesso a aplicativos menos seguros"
 * e libere a autorização.
 * - NOTA 2 -
 * Em localhost no windows alguns softwares anti-virus
 * podem bloquear o acesso SMTP, uma vez que a máquina
 * estará a enviar dados para um local onde o mesmo
 * não pode monitorar.
 * ****************************************************
 */
class Mail {

    private $mailer;
    private $address;
    private $template;
    private $title;
    private $content;
    private $find;
    private $replaces;
    private $sendError;
    private $sendAcept;

    /**
     * ************************************************
     * @Method: Construtor, altera o comportamento da
     * class PHPMailer
     * ************************************************
     */
    function __construct() {
        $this->mailer = new PHPMailer;
        $this->mailer->IsSMTP();
        $this->mailer->IsHTML(true);
        $this->mailer->SMTPAuth = true;
        $this->mailer->SMTPSecure = MAILSLL;
        $this->mailer->Host = MAILHOST;
        $this->mailer->Port = (int) MAILPORT;
        $this->mailer->Username = MAILUSER;
        $this->mailer->Password = MAILPASS;
        $this->mailer->FromName = NAME;
    }

    /**
     * ************************************************
     * @Method: Recebe os dados
     * @Param ($Address) : Para quem o e-mail vai ser
     * enviado.
     * @Param ($title) : Título do e-mail
     * @Param ($html) : Arquivo que contém o html do
     * e-mail
     * @Param ($values) : Array com as informações que
     * serão enviadas.
     * ************************************************
     */
    public function sendMail($Address, $title, $html, $values = []) {
        $this->address = (string) $Address;
        $this->title = (string) $title;
        $this->template = (string) $html;
        $this->templateDir();
        $this->find = [];
        $this->replaces = [];
        foreach ($values as $key => $value) {
            $this->find[] = '{' . $key . '}';
            $this->replaces[] = $value;
        }
        $this->objectValues();
    }

    /**
     * ************************************************
     * @Method: Quando não consegue enviar informa o
     * erro que ocorreu.
     * ************************************************
     */
    public function mailError() {
        return $this->sendError;
    }

    /**
     * ************************************************
     * @Method: Informa o e-mail foi enviado.
     * @return (bool)
     * ************************************************
     */
    public function sendStatus() {
        if ($this->sendAcept) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * ************************************************
     * @Method: Checa se o arquivo de template do html
     * existe.
     * @access private
     * ************************************************
     */
    private function templateDir() {
        if (!file_exists($this->template)) {
            die('Erro ao solicitar dados para envio de e-mail');
        }
    }

    /**
     * ************************************************
     * @Method: Cria os objetos de envio
     * @access private
     * ************************************************
     */
    private function objectValues() {
        ob_start();
        include($this->template);
        $content = ob_get_clean();
        if (!empty($this->find) && !empty($this->replaces)) {
            $this->content = str_replace($this->find, $this->replaces, $content);
        }
        if ($this->sendValues()) {
            return true;
        }
    }

    /**
     * ************************************************
     * @Method: Envia os dados
     * @access private
     * @return Exeption (true/false)
     * ************************************************
     */
    private function sendValues() {
        $this->mailer->AddAddress($this->address);
        $this->mailer->Subject = $this->title;
        $this->mailer->Body = $this->content;
        try {
            $this->mailer->Send();
            $this->sendAcept = true;
        } catch (Exception $e) {
            $this->sendError = "Erro ao enviar e-mail linha: {$e->getCode()}<br/>Arquivo: {$e->getFile()}<br/>Detalhes: {$e->getMessage()}";
            $this->sendAcept = false;
        }
    }

}

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
5 horas atrás, Omar~ disse:

Você diz enviando através de um servidor local (seu computador)?

 

Sim tem como, você deve usar um SMTP para isso, e configurar o servidor local para tal ação.

 

Veja essa classe a própria descrição dele mostra como fazer, além que é uma classe para envios usando PHPMailer

  Ocultar conteúdo


<?php

/**
 * ****************************************************
 * @Copyright (c) 2016, Spell Master.
 * @Version 3.0
 * ****************************************************
 * @Class Envio de e-mail
 * ****************************************************
 * @requires
 * * PHPMailer 5.2
 * * Contants de definição
 * ****************************************************
 * * @const MAILSLL  : Tipo de acesso tls/ssl ao SMTP
 * * @const MAILHOST : Endereço do SMTP
 * * @const MAILPORT : Porta de Acesso
 * * @const MAILUSER : endereço do e-mail que envia
 * * @const MAILPASS : Senha do e-mail que envia
 * * @const NAME     : Nome de quem envia
 * ****************************************************
 * @tutorial localhost
 * - Abra o arquivo httpd.conf do apache
 * Habilite o ssl_module
 * - Abra o arquivo php.ini
 * Ative as extensões:
 * php_curl
 * php_openssl
 * php_sockets
 * php_smtp(caso tenha)
 * - NOTA -
 * Caso o SMTP do e-mail que envia tenha segurança de
 * criptografia de dados como é o caso do GMAIL:
 * Acessar: https://myaccount.google.com/security
 * Procure por: "Acesso a aplicativos menos seguros"
 * e libere a autorização.
 * - NOTA 2 -
 * Em localhost no windows alguns softwares anti-virus
 * podem bloquear o acesso SMTP, uma vez que a máquina
 * estará a enviar dados para um local onde o mesmo
 * não pode monitorar.
 * ****************************************************
 */
class Mail {

    private $mailer;
    private $address;
    private $template;
    private $title;
    private $content;
    private $find;
    private $replaces;
    private $sendError;
    private $sendAcept;

    /**
     * ************************************************
     * @Method: Construtor, altera o comportamento da
     * class PHPMailer
     * ************************************************
     */
    function __construct() {
        $this->mailer = new PHPMailer;
        $this->mailer->IsSMTP();
        $this->mailer->IsHTML(true);
        $this->mailer->SMTPAuth = true;
        $this->mailer->SMTPSecure = MAILSLL;
        $this->mailer->Host = MAILHOST;
        $this->mailer->Port = (int) MAILPORT;
        $this->mailer->Username = MAILUSER;
        $this->mailer->Password = MAILPASS;
        $this->mailer->FromName = NAME;
    }

    /**
     * ************************************************
     * @Method: Recebe os dados
     * @Param ($Address) : Para quem o e-mail vai ser
     * enviado.
     * @Param ($title) : Título do e-mail
     * @Param ($html) : Arquivo que contém o html do
     * e-mail
     * @Param ($values) : Array com as informações que
     * serão enviadas.
     * ************************************************
     */
    public function sendMail($Address, $title, $html, $values = []) {
        $this->address = (string) $Address;
        $this->title = (string) $title;
        $this->template = (string) $html;
        $this->templateDir();
        $this->find = [];
        $this->replaces = [];
        foreach ($values as $key => $value) {
            $this->find[] = '{' . $key . '}';
            $this->replaces[] = $value;
        }
        $this->objectValues();
    }

    /**
     * ************************************************
     * @Method: Quando não consegue enviar informa o
     * erro que ocorreu.
     * ************************************************
     */
    public function mailError() {
        return $this->sendError;
    }

    /**
     * ************************************************
     * @Method: Informa o e-mail foi enviado.
     * @return (bool)
     * ************************************************
     */
    public function sendStatus() {
        if ($this->sendAcept) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * ************************************************
     * @Method: Checa se o arquivo de template do html
     * existe.
     * @access private
     * ************************************************
     */
    private function templateDir() {
        if (!file_exists($this->template)) {
            die('Erro ao solicitar dados para envio de e-mail');
        }
    }

    /**
     * ************************************************
     * @Method: Cria os objetos de envio
     * @access private
     * ************************************************
     */
    private function objectValues() {
        ob_start();
        include($this->template);
        $content = ob_get_clean();
        if (!empty($this->find) && !empty($this->replaces)) {
            $this->content = str_replace($this->find, $this->replaces, $content);
        }
        if ($this->sendValues()) {
            return true;
        }
    }

    /**
     * ************************************************
     * @Method: Envia os dados
     * @access private
     * @return Exeption (true/false)
     * ************************************************
     */
    private function sendValues() {
        $this->mailer->AddAddress($this->address);
        $this->mailer->Subject = $this->title;
        $this->mailer->Body = $this->content;
        try {
            $this->mailer->Send();
            $this->sendAcept = true;
        } catch (Exception $e) {
            $this->sendError = "Erro ao enviar e-mail linha: {$e->getCode()}<br/>Arquivo: {$e->getFile()}<br/>Detalhes: {$e->getMessage()}";
            $this->sendAcept = false;
        }
    }

}

 

 

 

 

Amigo Omar

 

Grato por sua resposta.

 

Apenas mais uma dúvida surgida: 

- caso depois hospeda o Sistema em um Provedor, a classe mencionada pelo amigo irá funcionar no Provedor ?

- ou terei que utilizar outra forma, já que a Classe SMTP é apenas local (computador local) ?

 

Grato,

 

Renato

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Remazela, vai funcionar normalmente.

 

Servidor web é o seu servidor local ou de produção, que serve para acomodar e entregar o que é processado pelo PHP.

O servidor de e-mail é uma aplicação externa (fora da sua aplicação) responsável por receber/enviar os e-mails.

 

Quando você utiliza o PHPMailer com SMTP, você estará apenas utilizando um serviço/servidor alheio à sua aplicação, e isso significa que ele deverá funcionar em qualquer lugar. A diferença é que ao adotar esse caminho, você precisará configurar algumas coisas a mais, como login/senha e host do SMTP, coisas que você "não se preocupa" utilizando a função mail().

 

Veja a versão mais recente do PHPMailer e exemplos de uso: https://github.com/PHPMailer/PHPMailer

Compartilhar este post


Link para o post
Compartilhar em outros sites

É a mesma coisa, você só estará mudando de servidor.

Só que tem um porém no caso do G-Mail a google é rigorosa quando se trata de segurança da conta de seus usuários. Uma vez que vai usar a própria conta de e-mail para enviar.

Possivelmente vai bloquear o envio quando local, terá que acessar o gmail e confirmar que você mesmo quem está fazendo o processo.

E quando hospedado novamente será bloqueado, agora a google vai lhe alertar que a hospedagem de sua aplicação está tentando invadir sua conta, então novamente confirmar que é você mesmo quem fez tal ação. O mesmo torna a acontecer se mudar de hospedagem.

(Um porre mesmo, mas concordo plenamente com esse procedimento da google)

 

Em todo caso fiz um rabisco aqui (Sem testar, mas acho que irá funcionar)

Spoiler

<?php
defined('MAILSLL') || define('MAILSLL', 'tls');
defined('MAILHOST') || define('MAILHOST', 'smtp.gmail.com');
defined('MAILPORT') || define('MAILPORT', 587);
defined('MAILUSER') || define('MAILUSER', 'seu_gmail@gmail.com');
defined('MAILPASS') || define('MAILPASS', 'sua_senha_do_gmail');
defined('NAME') || define('NAME', 'qualquer nome');

include ('PHPMailer.php');
include ('smtp.php');
include ('Mail.php'); // Arquivo da classe Mail

$mail = new Mail();

// sendMail - 4 parâmetros
$mail->sendMail(
    "enviar_para@qualquer.com", // Quem vai receber o e-mail
    "Tittle", // Título (Não sei porque, mas buga se tiver acentos ou caracteres expeciais)
    __DIR__ . '/template.html', // Nesse caso no mesmo diretório desse arquivo deve existir um arquivo template.html
    [
      'envio_a' => "Estou enviando dados",
      'envio_b' => "Estou enviando mais dentro do array"
    ];
);

 

 

E o arquivo Html (estilize-o conforme as necessidades/vontade)

Spoiler

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Teste</title>
    </head>
    <body>
        <div style="padding:40px">
            <div style="font-size:30px; text-align:center;">{envio_a}</div>
        </div>
        <div style="padding:40px">
            <div style="font-size:30px; text-align:center;">{envio_b}</div>
        </div>
    </body>
</html>

 

 

Classe Mail e PHPMailer https://mega.nz/#!aIlCWCzA!--g0o8bGV_mQiYTRoGoBBPmJDv_UXpBLYgEpvpnH698

Obs.: Não é a versão mais recente porque de uns tempos para cá o PHPMailer se tornou uma porcaria.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por diogoglobaltec
      criei um formulário dinamico e gostaria de enviar para o arquivo rec.php, os aquivos adicionados pelo no formato file , já tentei colocar em
       x.setAttribute("enctype" , "multipart/form-data");
      também não funcionou segue o arquivo:
       
      <!DOCTYPE html>
          <html>
              <body>
              
                  
                  
                  <p>Click the button to create a FORM and an INPUT element.</p>
                  <button onclick="myFunction()">Try it</button>
                  <button onclick="enviar()">enviar</button>
          <script>
          function myFunction() {
            var x = document.createElement("FORM");
            x.setAttribute("action", "rec.php");
          x.setAttribute("method", "post");
          x.setAttribute("id", "myForm");
            document.body.appendChild(x);

            var y = document.createElement("INPUT");
            y.setAttribute("type", "file");
            y.setAttribute("name", "arquivo[]");
            document.getElementById("myForm").appendChild(y);
      }
           function enviar(){
              document.forms[0].submit(); 
          
          }
          </script>

              </body>
      </html>
       
      consigo pegar no arquivo rec.php o valor de $_POST , mas de $_FILES não consigo pegar como um array, o que está dando errado ? segue o  script PHP 
       
      Arquivo rec.php
      <?php
      foreach($_POST['arquivo'] as $value) {
              echo $value."<br />";
      }
      foreach($_FILES['arquivo'] as $value) {
                     echo $value['arquivo']['name']."<br />";
      }
       
       
       
       
    • Por Jonas Ribeiro Nascimento
      Estou criando meu próprio mvc php para adquirir mais conhecimento.
      Mas estou me deparando com uma coisa muita estranha, eu perco a $_SESSION de uma view para outra view
      Fiz um codigo simples pra testar.a.php ----- view a.php
      <?php session_start(); $_SESSION['teste'] = 'Funcionou'; echo $_SESSION['teste']; ?> <?php session_start(); echo $_SESSION['teste']; // Notice: Undefined variable: _SESSION in var_dump($_SESSION); // Notice: Undefined variable: _SESSION in NULL ?> <?php namespace Sis\Classes; use App\Model\ClassLogin; use Sis\Traits\TraitGetIp; class ClassSession { private $login; private $timeSession = 1200; private $timeCanary = 300; public function __construct(){ if(session_id() == ''){ ini_set("session.save_handler", "files"); //Cabeçalhos somente atraves de arquivos ini_set("session.use_cookies", 1); //Habilita o uso de cookies ini_set("session.use_only_cookies", 1); //Só pode habilitar a seção atraves de coockies ini_set("session.cookie_domain", DOMAIN); //Só aceita coockies vindo do nosso sistema ini_set("session.cookie_httponly", 1); //Só aceita script php e não deixa o javascript alterar o sistema if(DOMAIN != "localhost"){ ini_set("session.cookie_secure", 1); //Para trabalhar com o SSL do servidor ativo } /*Criptografia das nossas sessions*/ ini_set("session.entropy_length", 512); // ini_set("session.entropy_file","/dev/urandom"); ini_set("session.hash_function", "sha256"); ini_set("session.hash_bits_per_character", 5); session_start(); } $this->login = new ClassLogin(); } #Proteger contra roubo de sessão public function setSessionCanary($par=null){ session_regenerate_id(true); if($par == null){ $_SESSION['canary']=[ "birth" => time(), "IP" => TraitGetIp::getUserIp() //Pega o ip do usuario ]; }else{ $_SESSION['canary']['birth']=time(); } } #Verificar a integridade da sessão public function verifyIdSessions(){ if(!isset($_SESSION['canary'])){ $this->setSessionCanary(); } if($_SESSION['canary']['IP'] !== TraitGetIp::getUserIp()){ $this->destructSessions(); $this->setSessionCanary(); } if($_SESSION['canary']['birth'] < time() - $this->timeCanary){ $this->setSessionCanary("Time"); } } #Setar as sessões do nosso sistema public function setSessions($Email){ $this->verifyIdSessions(); $_SESSION['Login'] = true; $_SESSION['Time'] = time(); $_SESSION['Nome'] = $this->login->getIssetSession($Email)['data']['Nome']; $_SESSION['Email'] = $this->login->getIssetSession($Email)['data']['Email']; $_SESSION['Permissoes'] = $this->login->getIssetSession($Email)['data']['Permissoes']; } #Validar as páginas internas do sistema public function verifyInsideSession(){ $this->verifyIdSessions(); if(!isset($_SESSION['Login']) || !isset($_SESSION['Permissoes']) || !isset($_SESSION['canary'])){ $this->destructSessions(); header("Location: ".DIRPAGE."NaoAutorizado"); }else{ if($_SESSION['Time'] >= time() - $this->timeSession){ $_SESSION['Time']=time(); }else{ $this->destructSessions(); header("Location: ".DIRPAGE."NaoAutorizado"); } } } #Destruir as sessions existentes public function destructSessions(){ foreach (array_keys($_SESSION) as $key) { unset($_SESSION[$key]); } } #testar public function testarSessions(){ echo 'oiiiiiiiiiiiiiiiiiiiiiiooooooooooo'; } }

    • Por Allan Carlos dos Santos G
      Bom dia Pessoal, Gostaria de saber como Instalar e colocar pra rodar a versão do Zend PHP 1.11.11, tenho tido dificuldade de achar material na internet e se puderem ajudar, obrigado!
    • Por Perroni91
      Olá pessoal.
      Estou com uma dúvida, mas como sou leiga no mysql, não estou conseguindo resolver.
       
      Tenho duas tabelas no meu banco de dados:
       
      Posts
      id
      titulo_principal
      categoria_id
      imagem
       
      Categorias
      id
      categoria
       
      ---

      Já cadastrei as categorias 'HTML' e 'CSS', e cada um contêm 1 post de cada.

      O que eu gostaria era que: A cada vez que criar um post em alguma dessas categorias, mostrar a quantidade separadamente.

      Ficaria assim:
      HTML               3
      CSS                   1


      Alguém poderia me ajudar, por favor?
      Estou quebrando a cabeça tentando fazer isso e não consegui.
      Obrigada!
    • Por Rogerio Pancini
      Bom dia pessoal!

      Estou com seguinte caso: preciso fazer uma coleta de dados, que no caso seria esta seleção:
       
      $sql_c_1 = mysqli_query($config, "SELECT DISTINCT id_malote FROM boletosdomalote WHERE usuario_recebimento = '$id_usuario' AND conffin <> 'S'") or die(mysqli_error($config)); if(@mysqli_num_rows($sql_c_1) <= '0'){ $c_sql_c_1[] = ""; }else{ while($r_sql_c_1 = mysqli_fetch_array($sql_c_1)){ $c_sql_c_1[] = $r_sql_c_1[0]; } } $sql_c_2 = mysqli_query($config, "SELECT DISTINCT id_malote FROM caixasdomalote WHERE usuario_recebimento = '$id_usuario' AND conffin <> 'S'") or die(mysqli_error($config)); if(@mysqli_num_rows($sql_c_2) <= '0'){ $c_sql_c_2[] = ""; }else{ while($r_sql_c_2 = mysqli_fetch_array($sql_c_2)){ $c_sql_c_2[] = $r_sql_c_2[0]; } } $sql_c_3 = mysqli_query($config, "SELECT DISTINCT id_malote FROM notasfiscaisdomalote WHERE usuario_recebimento = '$id_usuario' AND conffin <> 'S'") or die(mysqli_error($config)); if(@mysqli_num_rows($sql_c_3) <= '0'){ $c_sql_c_3[] = ""; }else{ while($r_sql_c_3 = mysqli_fetch_array($sql_c_3)){ $c_sql_c_3[] = $r_sql_c_3[0]; } } $sql_c_4 = mysqli_query($config, "SELECT DISTINCT id_malote FROM documentosdomalote WHERE usuario_recebimento = '$id_usuario' AND conffin <> 'S'") or die(mysqli_error($config)); if(@mysqli_num_rows($sql_c_4) <= '0'){ $c_sql_c_4[] = ""; }else{ while($r_sql_c_4 = mysqli_fetch_array($sql_c_4)){ $c_sql_c_4[] = $r_sql_c_4[0]; } } $sql_c_5 = mysqli_query($config, "SELECT DISTINCT id_malote FROM tb_cheque_malote WHERE usuario_recebimento = '$id_usuario' AND conffin <> 'S'") or die(mysqli_error($config)); if(@mysqli_num_rows($sql_c_5) <= '0'){ $c_sql_c_5[] = ""; }else{ while($r_sql_c_5 = mysqli_fetch_array($sql_c_5)){ $c_sql_c_5[] = $r_sql_c_5[0]; } } $sql_c_6 = mysqli_query($config, "SELECT DISTINCT id_malote FROM tb_holerite_malote WHERE usuario_recebimento = '$id_usuario' AND conffin <> 'S'") or die(mysqli_error($config)); if(@mysqli_num_rows($sql_c_6) <= '0'){ $c_sql_c_6[] = ""; }else{ while($r_sql_c_6 = mysqli_fetch_array($sql_c_6)){ $c_sql_c_6[] = $r_sql_c_6[0]; } } $sql_c_7 = mysqli_query($config, "SELECT DISTINCT id_malote FROM tb_material_grafico_malote WHERE usuario_recebimento = '$id_usuario' AND conffin <> 'S'") or die(mysqli_error($config)); if(@mysqli_num_rows($sql_c_7) <= '0'){ $c_sql_c_7[] = ""; }else{ while($r_sql_c_7 = mysqli_fetch_array($sql_c_7)){ $c_sql_c_7[] = $r_sql_c_7[0]; } } $sql_c_8 = mysqli_query($config, "SELECT DISTINCT id_malote FROM tb_outros_malote WHERE usuario_recebimento = '$id_usuario' AND conffin <> 'S'") or die(mysqli_error($config)); if(@mysqli_num_rows($sql_c_8) <= '0'){ $c_sql_c_8[] = ""; }else{ while($r_sql_c_8 = mysqli_fetch_array($sql_c_8)){ $c_sql_c_8[] = $r_sql_c_8[0]; } } $sql_c_9 = mysqli_query($config, "SELECT DISTINCT id_malote FROM tb_dinheiro_malote WHERE usuario_recebimento = '$id_usuario' AND conffin <> 'S'") or die(mysqli_error($config)); if(@mysqli_num_rows($sql_c_9) <= '0'){ $c_sql_c_9[] = ""; }else{ while($r_sql_c_9 = mysqli_fetch_array($sql_c_9)){ $c_sql_c_9[] = $r_sql_c_9[0]; } } $sql_c_10 = mysqli_query($config, "SELECT DISTINCT id_malote FROM tb_dep_pessoal_malote WHERE usuario_recebimento = '$id_usuario' AND conffin <> 'S'") or die(mysqli_error($config)); if(@mysqli_num_rows($sql_c_10) <= '0'){ $c_sql_c_10[] = ""; }else{ while($r_sql_c_10 = mysqli_fetch_array($sql_c_10)){ $c_sql_c_10[] = $r_sql_c_10[0]; } }
      Eu até fiz teste com arrays.
      Se eu der um implode, consigo fazer o select que preciso:
       
      if(!empty($c_sql_c_1)){ $v_c_sql_c_1 = implode(",",$c_sql_c_1); }else{ $v_c_sql_c_1 = ""; }
       
      $sql_3 = mysqli_query($config, "SELECT ma.id, ma.titulo, ma.datadecadastro, usr.nome, ma.id_estabelecimento_origem, ma.id_estabelecimento_destino, ma.status, ma.id_usuario_envio FROM malote ma LEFT JOIN usuario AS usr ON (ma.id_usuario_envio = usr.id) WHERE ma.id_estabelecimento_origem = '$id_estabelecimento' && ma.id_usuario_cadastro = '$id_usuario' OR ma.id_estabelecimento_destino = '$id_estabelecimento' && ma.id_usuario_cadastro = '$id_usuario' OR ma.status = '1' && ma.id_estabelecimento_origem = '$id_estabelecimento' OR ma.status = '2' && ma.id_estabelecimento_origem = '$id_estabelecimento' OR ma.status = '1' && ma.id_estabelecimento_destino = '$id_estabelecimento' OR ma.status = '2' && ma.id_estabelecimento_destino = '$id_estabelecimento' OR ma.id IN ($v_c_sql_c_1) ORDER BY ma.datadecadastro DESC") or die(mysqli_error($config)); }
      Porém, eu precisaria fazer o select com todos os resultados acima.

      Fiz outro teste, concatenando todos:
       
      echo $v_c_sql_c_1 . " " . $v_c_sql_c_2 . " " . $v_c_sql_c_3 . " " . $v_c_sql_c_4 . " " . $v_c_sql_c_5 . " " . $v_c_sql_c_6 . " " . $v_c_sql_c_7 . " " . $v_c_sql_c_8 . " " . $v_c_sql_c_9 . " " . $v_c_sql_c_10;
      E o resultado foi esse:

      312,317 312,317,324 312

      Apesar de não estar bonito, se funcionasse poderia ser assim, mas o $sql_3 não lê, por ter espaços sem vírgula, além do resultado estar errado, por ter id's repetidos.

      Se alguém tiver alguma ideia da forma mais correta de chegar ao resultado final, eu agradeço.
      Pensei em formar um array, com o array_merge, mas não deu certo também.
      Enfim, a ideia é juntar todos os resultados, de forma não repetida, para incluir no $sql_3.

      Obrigado pela atenção.
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.