Ir ao conteúdo
  • Cadastre-se

PHP str_replace com combinação de dados do MySQL


Posts recomendados

Olá, eu preciso usar str_replace para alterar alguns arquivos com dados do MySQL, ele atualmente usa o método post de um formulário html, mas eu preciso que o código pegue o que foi preenchido no formulário html com valores do MySQL, porém eu tenho um problema as informações que eu preciso são "nome", "CPF" e "RG" tudo sendo pego em um único <select> e sendo separado no $_POST, Além disso a página tem um botão de enviar arquivo, mas se eu recarregar a página ele reenvia o formulário, teria alguma forma disso ser resolvido?

 

meu código abaixo:

<?php

include_once("teste.php");
include_once("index-gera-carta.php");

$data = date("d/m/Y");
$template_file_name = "cartas dos promotores base/$novo_nome";
$rand_no = rand(10000, 999999);
$fileName = "C.Ap - carta teste" . $rand_no . ".docx";
$folder   = "cartas dos promotores prontas";
$full_path = $folder . '/' . $fileName;

if (!file_exists($folder))
{
mkdir($folder);
}

//Copy the Template file to the Result Directory
copy($template_file_name, $full_path);

// add calss Zip Archive
$zip_val = new ZipArchive;

//Docx file is nothing but a zip file. Open this Zip File
if($zip_val->open($full_path) == true)
{
// In the Open XML Wordprocessing format content is stored.
// In the document.xml file located in the word directory.

$key_file_name = 'word/document.xml';
$message = $zip_val->getFromName($key_file_name);

// this data Replace the placeholders with actual values

$message = str_replace("Funcionario",               "$_POST[promotor]",             $message);
$message = str_replace("CPF1",                      "$_POST[pdv]",                  $message);
$message = str_replace("RG1",                       "$_POST[campanha]",             $message);
$message = str_replace("Inicio",                    "$_POST[inicio]",               $message);
$message = str_replace("Final",                     "$_POST[fim]",                  $message);
$message = str_replace("RazãoSocialPDV",            "$_POST[pdv]",                  $message);
$message = str_replace("CNPJPDV",                   "12112223331",                  $message);
$message = str_replace("EndereçoPDV",               "Endereço do pdv",              $message);
$message = str_replace("RazãoSocialCliente",        "$_POST[campanha]",             $message);
$message = str_replace("data_de_hoje",              "$data",                        $message);
//Replace the content with the new content created above.
$zip_val->addFromString($key_file_name, $message);
$zip_val->close();
}

$arquivo = $diretorio.$novo_nome;
$resultado = unlink($arquivo);

e o HTML (como, depois de enviar ele ia direto pro PHP acima, eu o deixei como o padrão):

 

<?php

include("teste.php");

$msg = false;

if( isset($_FILES['Arquivo'])){

    $extensao = strtolower(substr($_FILES['Arquivo']['name'], -5));
    $novo_nome = md5(time()). $extensao;

    $diretorio = "cartas dos promotores base/";

    move_uploaded_file($_FILES['Arquivo']['tmp_name'], $diretorio.$novo_nome);

    $sql_code = "INSERT INTO arquivos (Codigo, arquivos, data) VALUES(null, '$novo_nome', NOW())";
    if($mysqli->query($sql_code))
        $msg = "Arquivo enviado com sucesso!";
    else
        $msg = "Falha ao enviar arquivo.";
}

?>

<!DOCTYPE html>
<!--selecionar o idioma principal-->
<html lang="pt-br">
<!--o que vai ser passado para o navegador-->

<head>
    <meta charset="UTF-8">
    <title>Gerador de Cartas</title>
    <link rel="stylesheet" href="style-gera-cata.css">
    <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
    <link rel="stylesheet" href="/resources/demos/style.css">
    <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
    <script>
        $(function() {
            $("#datepicker").datepicker();
        });
    </script>

</head>
<!--o que vai aparecer no navegador-->

<body>

    <img id="logo" src="logo_tembrazil_original_01.png" alt="">

    <h1>Trade & Marketing Brazil</h1>

    <p id="missao"><strong> Gerador de Cartas Para Promotores</strong>.</p>

    <p>use esse gerador para automatizar a criação da carta de apresentação para o PDV.</P>

    <h2 id="titulo">Gerador de Cartas
        <ul>

            <form method="POST" action="gerador_de_cartas.php" enctype="multipart/form-data">
                <li>Promotor
                    <input type="search" id="texto" name="promotor">
                </li><br>

                <li>PDV
                    <input type="search" id="texto" name="pdv">
                </li><br>

                <li>Campanha
               <!--value é o que vai aparecer no docx, e o que vem depois, é o que vai aparecer na página-->
                    <select name="campanha">
                        <option> Selecione </option>

                        <?php 
                        $resultado_Campanha = "SELECT * FROM campanhas";
                        $resultado_da_seleção = mysqli_query($mysqli, $resultado_Campanha);
                        while($row_campanha = mysqli_fetch_assoc($resultado_da_seleção)) {
                        ?>
                        <option value="<?php echo $row_campanha['razao_social_cliente'] ?>">
                         <?php  echo $row_campanha['nome_campanha']?></option>
                        
                        <?php }?> 

                    </select>
                </li><br>

                <li>Periodo da Carta <br>

                    <br> Inicio<input id="date" type="date" name="inicio">

                    Fim <input id="date" type="date" name="fim">
                </li>
                
                
                <input type="file" name="Arquivo" id="Arquivo">
                
                <input type="submit" name="envia_arquivo">
                
                <input type="reset" value="Apagar">
                <?php if($msg != false) echo "<P> $msg </p>";?>
            </form>    
           
            </ul>

    </h2><br>

</body>

</html>

Agradeço qualquer tipo de ajuda, obrigado.

Link para o comentário
Compartilhar em outros sites

Em 30/07/2021 às 16:35, João pedro chaves disse:

Olá, eu preciso usar str_replace para alterar alguns arquivos com dados do MySQL, ele atualmente usa o método post de um formulário html, mas eu preciso que o código pegue o que foi preenchido no formulário html com valores do MySQL, porém eu tenho um problema as informações que eu preciso são "nome", "CPF" e "RG" tudo sendo pego em um único <select> e sendo separado no $_POST, Além disso a página tem um botão de enviar arquivo, mas se eu recarregar a página ele reenvia o formulário, teria alguma forma disso ser resolvido?

 

meu código abaixo:

<?php

include_once("teste.php");
include_once("index-gera-carta.php");

$data = date("d/m/Y");
$template_file_name = "cartas dos promotores base/$novo_nome";
$rand_no = rand(10000, 999999);
$fileName = "C.Ap - carta teste" . $rand_no . ".docx";
$folder   = "cartas dos promotores prontas";
$full_path = $folder . '/' . $fileName;

if (!file_exists($folder))
{
mkdir($folder);
}

//Copy the Template file to the Result Directory
copy($template_file_name, $full_path);

// add calss Zip Archive
$zip_val = new ZipArchive;

//Docx file is nothing but a zip file. Open this Zip File
if($zip_val->open($full_path) == true)
{
// In the Open XML Wordprocessing format content is stored.
// In the document.xml file located in the word directory.

$key_file_name = 'word/document.xml';
$message = $zip_val->getFromName($key_file_name);

// this data Replace the placeholders with actual values

$message = str_replace("Funcionario",               "$_POST[promotor]",             $message);
$message = str_replace("CPF1",                      "$_POST[pdv]",                  $message);
$message = str_replace("RG1",                       "$_POST[campanha]",             $message);
$message = str_replace("Inicio",                    "$_POST[inicio]",               $message);
$message = str_replace("Final",                     "$_POST[fim]",                  $message);
$message = str_replace("RazãoSocialPDV",            "$_POST[pdv]",                  $message);
$message = str_replace("CNPJPDV",                   "12112223331",                  $message);
$message = str_replace("EndereçoPDV",               "Endereço do pdv",              $message);
$message = str_replace("RazãoSocialCliente",        "$_POST[campanha]",             $message);
$message = str_replace("data_de_hoje",              "$data",                        $message);
//Replace the content with the new content created above.
$zip_val->addFromString($key_file_name, $message);
$zip_val->close();
}

$arquivo = $diretorio.$novo_nome;
$resultado = unlink($arquivo);

e o HTML (como, depois de enviar ele ia direto pro PHP acima, eu o deixei como o padrão):

 

<?php

include("teste.php");

$msg = false;

if( isset($_FILES['Arquivo'])){

    $extensao = strtolower(substr($_FILES['Arquivo']['name'], -5));
    $novo_nome = md5(time()). $extensao;

    $diretorio = "cartas dos promotores base/";

    move_uploaded_file($_FILES['Arquivo']['tmp_name'], $diretorio.$novo_nome);

    $sql_code = "INSERT INTO arquivos (Codigo, arquivos, data) VALUES(null, '$novo_nome', NOW())";
    if($mysqli->query($sql_code))
        $msg = "Arquivo enviado com sucesso!";
    else
        $msg = "Falha ao enviar arquivo.";
}

?>

<!DOCTYPE html>
<!--selecionar o idioma principal-->
<html lang="pt-br">
<!--o que vai ser passado para o navegador-->

<head>
    <meta charset="UTF-8">
    <title>Gerador de Cartas</title>
    <link rel="stylesheet" href="style-gera-cata.css">
    <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
    <link rel="stylesheet" href="/resources/demos/style.css">
    <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
    <script>
        $(function() {
            $("#datepicker").datepicker();
        });
    </script>

</head>
<!--o que vai aparecer no navegador-->

<body>

    <img id="logo" src="logo_tembrazil_original_01.png" alt="">

    <h1>Trade & Marketing Brazil</h1>

    <p id="missao"><strong> Gerador de Cartas Para Promotores</strong>.</p>

    <p>use esse gerador para automatizar a criação da carta de apresentação para o PDV.</P>

    <h2 id="titulo">Gerador de Cartas
        <ul>

            <form method="POST" action="gerador_de_cartas.php" enctype="multipart/form-data">
                <li>Promotor
                    <input type="search" id="texto" name="promotor">
                </li><br>

                <li>PDV
                    <input type="search" id="texto" name="pdv">
                </li><br>

                <li>Campanha
               <!--value é o que vai aparecer no docx, e o que vem depois, é o que vai aparecer na página-->
                    <select name="campanha">
                        <option> Selecione </option>

                        <?php 
                        $resultado_Campanha = "SELECT * FROM campanhas";
                        $resultado_da_seleção = mysqli_query($mysqli, $resultado_Campanha);
                        while($row_campanha = mysqli_fetch_assoc($resultado_da_seleção)) {
                        ?>
                        <option value="<?php echo $row_campanha['razao_social_cliente'] ?>">
                         <?php  echo $row_campanha['nome_campanha']?></option>
                        
                        <?php }?> 

                    </select>
                </li><br>

                <li>Periodo da Carta <br>

                    <br> Inicio<input id="date" type="date" name="inicio">

                    Fim <input id="date" type="date" name="fim">
                </li>
                
                
                <input type="file" name="Arquivo" id="Arquivo">
                
                <input type="submit" name="envia_arquivo">
                
                <input type="reset" value="Apagar">
                <?php if($msg != false) echo "<P> $msg </p>";?>
            </form>    
           
            </ul>

    </h2><br>

</body>

</html>

Agradeço qualquer tipo de ajuda, obrigado.

Além disso, tem como eu colocar um campo  de pesquisa no <select> acima? em um select padrão, da pra usar o componente select2, mas nesse não tem como, teria algum componente, ou função do php?

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Curso de Hacker Ético

LANÇAMENTO!

CLIQUE AQUI E CONFIRA!

* Este curso não é ministrado pela equipe do Clube do Hardware.