GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Como pegar os dados inseridos em um formulário HTML e calcular os dados usando PHP?

Tags: #<Tag:0x00007fd9ec515db0> #<Tag:0x00007fd9ec515ba8>

Tenho uma tarefa, eu devia fazer um formulário em html, pegar os valores inseridos nos campos, e aí fazer um calculo de mediana, variância, menor e maior numero, etc. Criei o formulário em html, ele gera uma página pdf usando o php. O problema é que eu não consigo fazer o programa pegar os dados inseridos no formulário e passar eles para fazer os cálculos e aí mostrar os resultados no relatório PDF. Funciona se eu colocar os dados direto no php, mas o professor não quer assim. Ele quer que os dados passem primeiro pelo formulário e de lá entrem no programa para fazer os cálculos. No caso, cada campo devia gerar um array com n números que o usuário inserir, mas eu não sei como fazer isso. Só fui mexer com php recentemente por causa dele, e francamente eu não sei muito além do que já fiz até aqui. O professor não ensinou como fazer e embora eu tenha pesquisado bastante eu não consegui encontrar uma boa solução.

O que fiz até agora:
Relatório PHP:

<html>
<body>

<?php
if(true){
  echo "<center><h1>Relatorio</h1></center>";
  echo "<h2>CONTEXTO:</h2>";
  echo "<p align='justify'>texto</p>";
  echo "<strong><h2>OBJETIVOS:</h2></strong>";
  echo "<p align='justify'>texto.</p>";
  echo "<strong><h2>METODOLOGIA:</h2></strong>";
  echo "<p align='justify'>texto</p>";
  echo "<strong><h2>RESULTADOS:</h2></strong>";
  echo "<p align='justify'>texto</p>";
  

#os códigos são o que preciso calcular mas eu não sei como pegar isso e passar os dados pra serem calculados, só sei direto assim. 
  
function calcular_mediana($arr) {
  $count = count($arr); //total de numeros no array
  $middleval = floor(($count-1)/2); // encontra o valor do meio, ou o mais baixo no meio
  if($count % 2) { // o meio é a mediana
      $mediana = $arr[$middleval];
  } else { // calcula media de 2 medianas
      $low = $arr[$middleval];
      $high = $arr[$middleval+1];
      $mediana = (($low+$high)/2);
  }
  return $mediana;
}
echo "<p align='justify'>Mediana de horas ociosas:</p>";
$arr = array (20,22,22,25,26,22,24,27,28,30,30,36);
echo calcular_mediana($arr);
echo "<p align='justify'>Menor valor:</p>";
echo min($arr);
echo "<p align='justify'>Maior valor: </p>";
echo max($arr);

function coeficienteCorrelacao($X, $Y, $n) 
{ 
  $soma_X = 0;$soma_Y = 0; $soma_XY = 0; 
  $squareSoma_X = 0; $squareSoma_Y = 0; 

  for ($i = 0; $i < $n; $i++) 
  { 
  	// soma dos elementos do array x 
  	$soma_X = $soma_X + $X[$i]; 

  	// soma dos elementos do array Y. 
  	$soma_Y = $soma_Y + $Y[$i]; 

  	// soma X[i] * Y[i]. 
  	$soma_XY = $soma_XY + $X[$i] * $Y[$i]; 

  	// soma do quadrado dos elementos do array
  	$squareSoma_X = $squareSoma_X + 
  				$X[$i] * $X[$i]; 
  	$squareSoma_Y = $squareSoma_Y + 
  				$Y[$i] * $Y[$i]; 
  } 

  // formula para calcular coeficiente. 
  $corr = (float)($n * $soma_XY - $soma_X * $soma_Y) / 
  	sqrt(($n * $squareSoma_X - $soma_X * $soma_X) * 
  		($n * $squareSoma_Y - $soma_Y * $soma_Y)); 

  return $corr; 
} 

// array 
$X = array (20,22,22,25,26,22,24,27,28,30,30,36); 
$Y = array (3,5,6,2,4,3,2,3,4,5,5,6); 

//encontrar o tamanho da matriz
$n = sizeof($X); 

//Função para chamar o coeficiente de correlação

echo "<p align='justify'>Coeficiente de Correlação entre o número de horas ociosas e o número de pessoas com problemas de sobrepeso: </p>";
echo coeficienteCorrelacao($X, $Y, $n); 
function correlacao($X, $Y, $n) 
{ 
  $soma_X = 0;$soma_Y = 0; $soma_XY = 0; 
  $squareSoma_X = 0; $squareSoma_Y = 0; 

  for ($i = 0; $i < $n; $i++) 
  { 
  	// soma dos elementos do array x 
  	$soma_X = $soma_X + $X[$i]; 

  	// soma dos elementos do array Y. 
  	$soma_Y = $soma_Y + $Y[$i]; 

  	// soma X[i] * Y[i]. 
  	$soma_XY = $soma_XY + $X[$i] * $Y[$i]; 

  	// soma do quadrado dos elementos do array
  	$squareSoma_X = $squareSoma_X + 
  				$X[$i] * $X[$i]; 
  	$squareSoma_Y = $squareSoma_Y + 
  				$Y[$i] * $Y[$i]; 
  } 

  // formula para calcular coeficiente. 
  $corr = (float)($n * $soma_XY - $soma_X * $soma_Y) / 
  	sqrt(($n * $squareSoma_X - $soma_X * $soma_X) * 
  		($n * $squareSoma_Y - $soma_Y * $soma_Y)); 

  return $corr; 
} 

// array 
$X = array (15,16,17,18,19,20,21,22,23,24,25,26); 
$Y = array (3,5,6,2,4,3,2,3,4,5,5,6); 

//encontrar o tamanho da matriz
$n = sizeof($X); 
echo "<p align='justify'>Coeficiente de Correlação entre idade e o número de pessoas com problemas de sobrepeso: </p>";
echo correlacao($X, $Y, $n); 
echo "<p></p>";
echo "<p align='justify'>texto.</p>";
echo "<p align='justify'>Gráfico:</p>";

}

?>

  <img src='http://localhost/graph.php' alt='legenda' width=600 height=500>
  

  
  
  
</body>
</html>

Formulário HTML:

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF 8">
   <title>Formulário PDF</title>
   
   <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" 
   integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
   
</head>

<body>
   <div class="container mt-5">
   	<form action="testPDF.php" method ="post" class="offset-md-3 col-md-6">
   		<h1>Relatório</h1>
   		<p>Informe os dados abaixo e o arquivo será gerado:</p>
   		<div class="mb-2">
   		<input type="idade" name="idade" placeholder="Idades: " class="form-control" required>
   		</div>
   		<div class="mb-2">
   		<input type="horas" name="horas" placeholder="Média nº de ociosas passadas por semana: " class="form-control" required>
   		</div>
   		<div class="mb-2">
   		<input type="numero" name="numero" placeholder="Nº de pessoas com algum problema de sobrepeso: " class="form-control" required>
   		</div>
   		
   		<button type="submit" class="btn btn-success btn-lg btn-block">Gerar PDF</button>
   		
   	</form>
   </div>
</body>
</html>

PHP pra gerar o PDF

<?php


use Dompdf\Dompdf;
require_once 'dompdf/autoload.inc.php';


$dompdf = new Dompdf(array('enable_remote' => true));#habilitar o uso de imagens


$dompdf->loadHtml(file_get_contents('http://localhost/2.php'));



$dompdf->setPaper('A4', 'portrait');


$dompdf->render();

$dompdf->stream("teste.php",array("Attachment"=>false));

?>

Isso é tudo que fiz.

Falai @Dragon101, posta o que você já fez para que possamos ajuda-lo no que falta. utilize o simbolo </> no box de edição para incluir o código já feito. qualquer duvida de como posta acesse https://www.guj.com.br/t/formatacao-de-codigo-fonte-no-guj/325153/2

Abraços
Max

Coloquei todo o código, desculpe não ter visto antes. Tinha outro projeto pra fazer. Obrigado por me mostrar como inserir o código aqui. Eu tentei quando postei a pergunta mas ficou uma bagunça, daí tirei. Não sabia como inserir.

Abraços.

//