Дублировать Записи в массовом масштабе, - Запустить запрос, чтобы каждая Запись отображается


у Меня есть Таблица, где отображается только учетные записи с типом='фиксированный'

inserir a descrição da imagem aqui

То, что я хотел бы выполнить, - это запустить запрос и дублировать все Записи, таблицы только один раз. В настоящее время мне удалось не только проводить дублирование учетных записей, по одной, а не все результаты отображаются, что уже помогает, но не решает мою проблему, хе-хе.

Я бегу следующий запрос:

$tSqlDup = $tPdo->prepare("INSERT INTO Счета (Data_Vencimento, Имя, Цедент, Centro_Custo, Цели, Значение)SELECT Data_Vencimento, Имя, Цедент, Centro_Custo, Цели, Значение FROM tab_contas WHERE ID = '{$tGet}'");

$tSqlDup ->execute();

идея этого снять работу пользователя остаться переоформления счетов, которые будут иметь данные точно такие же, может быть, дифференцируя их погашения и значение... и при нажатии на кнопку все значения фиксированного типа, которые будут дубликаты...

оставлю ниже вся структура HTML ниже:

<table class="table">
    
 <thead>
        
    <tr style="background-color: #428bca;">
                        
        <th>Vencimento</th>

        <th>Nome da Conta</th>

        <th>Cedente</th>

        <th>Finalidade</th>

        <th>CC</th>

        <th>Valor da Ultima Conta</th>

        <th>Duplicar</th>

    </tr>

</thead>
      
<tbody>

<?php
 
require_once("includes/BaseDeDados.php");
require_once("includes/LogSistema.php");
           
    $tQuantidade = 100;
    $tPagina     = (isset ($_GET['pg'])) ? (int)$_GET['pg'] :1;
    $tIniciar    = ($tQuantidade * $tPagina) - $tQuantidade;

    $tSql = $tPdo->prepare("SELECT * FROM Contas WHERE Tipo='F' ORDER BY ID DESC LIMIT $tIniciar, $tQuantidade");
$tSql ->execute();
      
      while($tMC  = $tSql->fetch(PDO::FETCH_ASSOC))
      {   

      //Faz o explode da Data para transformar data do formato US para o formato BR
      $data = $tMC['Data_Vencimento'];
      $data_nova = explode("-",$data);
      // Calcula Mês atual + 1
      $mes = strtotime("+1 month");

      echo "
        <tr>
            
          <td>$data_nova[2]/".date('m', $mes)."/$data_nova[0]</td>

          <td><a href='?controle=***ARQUIVO***&CodC=".codificarUrl($tMC['ID'])."' rel='tooltip' title='Editar Esta Conta'>".utf8_encode($tMC['Nome'])."</td>

          <td>{$tMC['Cedente']}</td>

          <td>{$tMC['Finalidade']}</td>

          <td>{$tMC['Centro_Custo']}</td>

          <td>R$ {$tMC['Valor']}</td>
          
<!--- ////////////////////////////
ESTE E O BOTAO QUE RODA A CONSULTA PARA DUPLICAR A CONTA COM O ID ESCOLHIDO, POREM GOSTARIA DE AO INVES TER DE FAZER ISTO DE CONTA EM CONTA, REALIZAR EM TODAS DE UMA VEZ...
/////////////////////////////////-->
          <td><a href='?controle=***ARQUIVO***&Acao=Duplicar&CodC=".codificarUrl($tMC["ID"])."' role='button' rel='tooltip' title='Duplicar este Arquivo'></a></td>
          
        </tr>";

      }
        
  if (isset($_GET['Acao']) && isset($_GET['CodC']))
    {

# É AQUI AONDE É RODADA A CONSULTA QUE FAZ A DUPLICAÇÃO DA CONTA

      $tGet    = decodificarUrl($_GET['CodC']);
      $tSqlDup = $tPdo->prepare("INSERT INTO Contas (Data_Vencimento, Nome, Cedente, Centro_Custo, Finalidade, Valor) SELECT Data_Vencimento, Nome, Cedente, Centro_Custo, Finalidade, Valor FROM tab_contas WHERE ID = '{$tGet}'");
     
      $tSqlDup ->execute();       
    
    }

?>

<tbody>
    
</table>

PS: СС имеет кнопки справа от таблицы, и кнопка выше приведенной выше таблицы, не работает, будет кнопка, которая вдвое все сразу, в то время как кнопки справа от каждой Учетной записи, кнопки, которые дублируют один раз...

Author: Benhur Da Silveira Kulzer, 2017-04-17

1 answers

И Вы можете продолжать использовать свой запрос, который делает insert, за один раз, просто помещая ее в цикл, который проходит через все элементы.

$query_itens = $tPdo->prepare("SELECT ID FROM tab_contas WHERE SUA_CONDICAO_AQUI")->execute();
$itens = $query_itens->fetchAll();

$tSqlDup = $tPdo->prepare("INSERT INTO Contas (Data_Vencimento, Nome, Cedente, Centro_Custo, Finalidade, Valor)SELECT Data_Vencimento, Nome, Cedente, Centro_Custo, Finalidade, Valor FROM tab_contas WHERE ID = ?");

foreach($itens as $item) {
    $tSqlDup->execute([$item->id]);
}

Измените условие первого запроса, чтобы соответствовать вашему делу.

 0
Author: Marcos, 2017-04-17 19:52:48