Call php function through a form

0

Good afternoon, I am trying to create a page on my website is wordpress in which the user chooses a file and this file updates a table in the database.

I got code below, but when I click load data, nothing happens. The function is not being called.

<div style="width: 50%;margin: 20px auto; ">
   <form action="" method="POST">
    Selecione o arquivo desejado:
    <select>
      <option value="" selected="selected">-----</option>
      <?php 
         foreach(glob('files/*') as 
           $filename){
           $filename = basename($filename);
           echo "<option value='" . $filename . "'>".$filename."</option>";
         }
      ?>
    </select> 
   <input type='submit' value='Carregar dados'>
</form>
</div>

<?php

if(isset($_POST)){         
 function insere() {
    echo $filename;
    echo "apagando dados da tabela...<br>"; 
    $delete = $wpdb->query("TRUNCATE TABLE 'i_renda'");

    $ler=file("files/".$filename);

    foreach($ler as $linha) {
        $dados=explode(';',$linha); 
        list($nome, $cpf, $nascimento, $valor, $ano_vigencia)=$dados; 

        $wpdb->query("INSERT INTO i_renda (nome, cpf, nascimento, valor, ano_vigencia) VALUES ('".utf8_encode($nome)."', '$cpf', '$nascimento', '$valor', '$ano_vigencia')"  );
    } 
    echo "Dados incluidos com sucesso!"; exit;
    }       
    }
   ?>
    
asked by anonymous 07.12.2017 / 16:44

2 answers

2
<?php
  function insere() {
     ...........
     ...........
  }

 //ao submeter o formulário chame a função
 if(isset($_POST['submit'])){
    insere();      
 }
  

Put a name on the submit button

<input type='submit' name="submit" value='Carregar dados'>

Could not you just use the if condition to execute the code?

<?php
if(isset($_POST['submit'])){
    echo $filename;
    echo "apagando dados da tabela...<br>"; 
    $delete = $wpdb->query("TRUNCATE TABLE 'i_renda'");

    $ler=file("files/".$filename);

    foreach($ler as $linha) {
        $dados=explode(';',$linha); 
        list($nome, $cpf, $nascimento, $valor, $ano_vigencia)=$dados; 

        $wpdb->query("INSERT INTO i_renda (nome, cpf, nascimento, valor, ano_vigencia) VALUES ('".utf8_encode($nome)."', '$cpf', '$nascimento', '$valor', '$ano_vigencia')"  );
    } 
    echo "Dados incluidos com sucesso!"; 
    exit;     
}
?>
  

According to the comment "se eu der f5, ele passa direito e executa direto a função" , we have, for example in Google, when giving refresh on the page, the dialog box A página que você está procurando usou as informações inseridas. Voltar à essa página poderá fazer com que todas as ações realizadas antes sejam repetidas. Deseja continuar? appears, so if you click cancelar there will be no new insert, however, to avoid insertion of repeated data in the database, see how to do in that post #

    
08.12.2017 / 02:26
0

Final solution:

<div style="width: 50%;margin: 20px auto; ">

 <form action="" method="POST">
  Selecione o arquivo desejado:
  <select name="file">
    <option value="" selected="selected">-----</option>
    <?php 
       foreach(glob('files/*') as $filename){
         $filename = basename($filename);
         echo "<option value='" . $filename . "'>".$filename."</option>";
       }
    ?>
  </select> 
  <input type='submit' value='Carregar dados' name='submit'>
 </form>
</div>

<?php  
 if(isset($_POST['submit'])){  
   $filename = $_POST['file'];
   $delete = $wpdb->query("TRUNCATE TABLE 'i_renda'");
   $ler=file("files/".$filename);
   foreach($ler as $linha) {
    $dados=explode(';',$linha); 
    list($nome, $cpf, $nascimento, $valor, $ano_vigencia)=$dados; 
    $wpdb->query("INSERT INTO i_renda (nome, cpf, nascimento, valor, ano_vigencia) VALUES ('".utf8_encode($nome)."', '$cpf', '$nascimento', '$valor', '$ano_vigencia')"  );
   }
   header('Location: ../enviado');
   exit;            
 }
?>
    
09.12.2017 / 18:38