Jump to content

[Resolvido] Calculos num ficheiro à parte


PF2G
 Share

Recommended Posts

Bom dia

eu estou a trabalhar neste simulador onde tenho o forumlario num .php e os calculos noutro .php

estou a chamar o .php dos caluclos, mas sempre que clico em calcular diz-me que não encontra o ficheiro

formulário

<html>
<form name="form" id="form" action="../save.php" method="post">
<input type="hidden" name="action" value="calc_panel" />
<table style="width:454px;">
<tr>
 <td class="descricao" style="width: 350px; height: 18px;">TIPO DE PAINEL E RESPECTIVA ALTURA:</td>
</tr>
<tr>
 <td style="width: 454px">
(....)
</html>

save.php (onde estao as action):

case 'calc_panel':
 if(isset($_POST['quantidade']))
 {

  $quantidade = $_POST['quantidade'];
  if (fmod($quantidade, 2.5))
   {
 $quantidade = ceil($quantidade / 2.5) * 2.5;
   }
   $minimo = 3;

  switch ($quantidade)
  {
   case ($quantidade < 30):
 $flag=1;
 $val_montagem_1 = $flag * 3.5 + 25   ;
 $montagem=$val_montagem_1;


   case ($quantidade > 29 && $quantidade < 50 ):
 $flag=1;
 $val_montagem_2 = $flag * 3.5;
 $montagem = $montagem + $val_montagem_2 + $minimo;

   case ($quantidade < 100):
 $flag=1;
 $val_montagem_3 = $flag * 0.75;   
 $montagem= $montagem + $val_montagem_3 ;

   case ($quantidade < 150):
 $flag=1;
 $val_montagem_4 = $flag * 0.5 ;
 $montagem= $montagem + $val_montagem_4 ;
   case ($quantidade < 300):
 $flag=1;
 $val_montagem_5 = $flag * 0.5;   
 $montagem=$montagem + $val_montagem_5;
   case ($quantidade < 500):
 $flag=1;
 $val_montagem_6 = $flag * 0.5;   
 $montagem= $montagem + $val_montagem_6;
   case($quantidade < 1000):
 $flag=1;
 $val_montagem_7 = $flag * 0.5;
 $montagem=$montagem + $val_montagem_7 ;
  }
 }
 else $quantidade=0;
 $sapatas = $_POST['sapatas'];

 $fiadas = $_POST['fiadas'];

 $distancia = $_POST['distancia'];
 if(isset($_POST['distancia']))
 {
  if ($distancia < 0)
   {
 $distancia = abs($distancia);
   }

  if ($quantidade < 250)
   {
 $transporte = $distancia * 1.5 + 75;
   }
 }
 $exec_sapatas = ((15 * $sapatas)/2.5);
 $exec_fiadas = ((15 * $fiadas)/2.5);
 $rede =$rede + $exec_sapatas + $exec_fiadas;
 if ($quantidade == 0)
  {
  $transporte=0;
  $quantidade=1;
  $total_metro = ($total / $quantidade)*0;
  $total = (($rede+$montagem) * $quantidade + $transporte)* 0;
  $flag_1=0;
  }
 else if ($quantidade > 0)
  {

  $total = (($rede+$montagem) * $quantidade + $transporte);
  $total_metro = $total / $quantidade ;
  }
 $total=number_format ($total,2,',', '.');
 $total_metro=number_format ($total_metro,2,',', '.');
break;

Alguem me consegue ajudar?

Obrigado,

PF2G

Link to comment
Share on other sites

Não me da erro nenhum, agora. Mas sempre que clico em calcular é-me redireccionado para o index


if(isset($_POST['quantidade']))
{
$quantidade = $_POST['quantidade'];
if (fmod($quantidade, 2.5))
{

$quantidade = ceil($quantidade / 2.5) * 2.5;
}

$minimo = 3;

switch ($quantidade)
{

case ($quantidade < 30):
$flag=1;
$val_montagem_1 = $flag * 3.5 + 25   ;
$montagem=$val_montagem_1;


case ($quantidade > 29 && $quantidade < 50 ):
$flag=1;
$val_montagem_2 = $flag * 3.5;
$montagem = $montagem + $val_montagem_2 + $minimo;

case ($quantidade < 100):
$flag=1;
$val_montagem_3 = $flag * 0.75;
$montagem= $montagem + $val_montagem_3 ;


case ($quantidade < 150):
$flag=1;
$val_montagem_4 = $flag * 0.5 ;
$montagem= $montagem + $val_montagem_4 ;

case ($quantidade < 300):
$flag=1;
$val_montagem_5 = $flag * 0.5;
$montagem=$montagem + $val_montagem_5;

case ($quantidade < 500):
$flag=1;
$val_montagem_6 = $flag * 0.5;
$montagem= $montagem + $val_montagem_6;

case($quantidade < 1000):
$flag=1;
$val_montagem_7 = $flag * 0.5;
$montagem=$montagem + $val_montagem_7 ;
}
}
else $quantidade=0;

$sapatas = $_POST['sapatas'];


$fiadas = $_POST['fiadas'];


$distancia = $_POST['distancia'];
if(isset($_POST['distancia']))
{
if ($distancia < 0)
{
$distancia = abs($distancia);
}

if ($quantidade < 250)
{
$transporte = $distancia * 1.5 + 75;
}

}

$exec_sapatas = ((15 * $sapatas)/2.5);
$exec_fiadas = ((15 * $fiadas)/2.5);

$rede =$rede + $exec_sapatas + $exec_fiadas;

Este é o codigo que estou a utilizar no .php do formulário:

<script>
$("#form").submit( function () {  
$.ajax({  
 type: "POST",
 dataType: "php",
 cache: false,
 url: "../save.php",  
 success: function(data){
  $("#results").php(data);					  
 }  
});return false;  
});
</script>

<?php
 // liga os erros e a sua apresentação, comentar para desligar os erros
 ini_set('display_errors', 1); ini_set('error_reporting', E_ALL ^ E_NOTICE);
 //vizualizar variaveis
 //echo '<pre>';print_r($_POST);//print_r($_SESSION);print_r($_SERVER);
 $id_produtos = $_POST['id_produto'];
 $produtos = mysql_query("SELECT preco FROM produtos WHERE id_produto = '$id_produtos'") or die(mysql_error());
 $linha = mysql_fetch_assoc($produtos);
 $rede = $linha['preco'];
/*****************************FORUMLÁRIO PAINEIS**********************************/
?>
<div style="padding: 0 0 0 450px;">
<table>
<div>
<form name="form" id="form" action="save.php" method="post">
<input type="hidden" name="action" value="calc_panel" />
<table style="width:454px;">
<tr>
 <td class="descricao" style="width: 350px; height: 18px;">TIPO DE PAINEL E RESPECTIVA ALTURA:</td>
</tr>
<tr>
 <td style="width: 454px">
  <select  style="width:460px; text-align:left;" name="id_produtos" class="valor">

(...)
Edited by PF2G
Link to comment
Share on other sites

<script>
$("#form").submit( function () { 
$.ajax({ 
 type: "POST",
 dataType: "php",
 cache: false,
 url: "../save.php",  <-------ESTÁ ERRADO
 success: function(data){
  $("#results").php(data);									  
 } 
});return false; 
});
</script>

<form name="form" id="form" action="save.php" method="post"> <------TIRA O ACTION
Link to comment
Share on other sites

Parece estar lá perto...agora eu clico em calcular e faz refresh, apagando todos os valores:

FORMULÁRIO

jquery

<script>
$("#form").submit( function () {
$.ajax({
  type: "POST",
  dataType: "php",
  cache: false,
  url: "../save",
  success: success;																	  
  }
});return false;
});
</script>

<?php
 // liga os erros e a sua apresentação, comentar para desligar os erros
 ini_set('display_errors', 1); ini_set('error_reporting', E_ALL ^ E_NOTICE);
 //vizualizar variaveis
 //echo '<pre>';print_r($_POST);//print_r($_SESSION);print_r($_SERVER);
 $id_produtos = $_POST['id_produto'];
 $produtos = mysql_query("SELECT preco FROM produtos WHERE id_produto = '$id_produtos'") or die(mysql_error());
 $linha = mysql_fetch_assoc($produtos);
 $rede = $linha['preco']; 
/*****************************FORUMLÁRIO PAINEIS**********************************/
?>
<div style="padding: 0 0 0 450px;">
<table>
<div>
<form name="form" id="form" method="post">
<input type="hidden" name="action" value="calc_panel" />
<table style="width:454px;">
<tr>
 <td class="descricao" style="width: 350px; height: 18px;">TIPO DE PAINEL E RESPECTIVA ALTURA:</td>
</tr>
<tr>
 <td style="width: 454px">
  <select  style="width:460px; text-align:left;" name="id_produtos" class="valor">

			   <?php
				 $produtos = mysql_query("SELECT * FROM produtos WHERE tipo_painel=1") or die(mysql_error());
  $linha = mysql_fetch_assoc($produtos);

  do{
  ?>
  <option value="<?php echo $linha['id_produto'] ?>">
   <?php echo $linha['nome_produto'].' - '. $linha['altura'].' m'; ?>
  </option>
		    <?php }while($linha = mysql_fetch_assoc($produtos)); ?>
  </select>

 </td>
</tr>
<tr>
 <td style="height:30px; width: 350px;"></td>
</tr>
</table>
<table>
<tr>
 <td class="descricao" style="width: 350px">QUANTIDADE DE VEDAÇÃO ( MULTIPLOS DE 2,5 M.L.)</td>
 <td>
 <input style="width:100px" type="text" name="quantidade" value="<?php echo $quantidade?>" class="valor"></td>
</tr>
<tr>
 <td class="descricao" style="width: 350px">EXECUÇÃO DE SAPATAS DE 2,5 EM 2,5M ?</td>
 <td>
  <select  style="width:100%" name="sapatas" class="valor">
  <option value="" <?php if ($sapatas == "") echo "selected"; ?>>Opção:</option>
  <option value="1" <?php if ($sapatas == "1") echo "selected"; ?>>SIM</option>
  <option value="0" <?php if ($sapatas == "0") echo "selected"; ?>>NÃO</option>

  </select>
 </td>
</tr>
<tr>
 <td class="descricao" style="width: 350px">BRAÇO A 45º COM 3 FIADAS DE FARPADO?</td>
 <td>
  <select  style="width:100%" name="fiadas" class="valor">
  <option value="" <?php if ($fiadas == "") echo "selected"; ?>>Opção:</option>
  <option value="1"<?php if ($fiadas == "1") echo "selected"; ?>>SIM</option>
  <option value="0"<?php if ($fiadas == "0") echo "selected"; ?>>NÃO</option>
  </select>
 </td>
</tr>
<tr>
 <td class="descricao" style="width: 350px">DISTÂNCIA DE LISBOA</td>
 <td>
 <input style="width:100px" type="text" name="distancia"  value="<?php echo $distancia?>" class="valor"></td>
</tr>
<tr>
 <td style="height:30px; width: 350px;"></td>
</tr>
</table> 

<table>
<tr>
 <td class="descricao">PREÇO POR M.L.:</td>
 <td style="width:100px; border:1px solid #A5ACB2;" class="valor"><?php echo $total_metro . ' €';?></td>
 <!--<td style="width:100px; border:1px solid #A5ACB2;" class="valor"><?php echo $rede;?>REDE </td>
 <td style="width:100px; border:1px solid #A5ACB2;" class="valor"><?php echo $montagem;?> MONT </td>
 <td style="width:100px; border:1px solid #A5ACB2;" class="valor"><?php echo $transporte;?> TRANSP</td>
</tr>-->
<tr>
 <td class="descricao">VALOR TOTAL:</td>
 <td style="width:100px; border:1px solid #A5ACB2;" class="valor"><?php echo $total .' €';?></td>
</tr>
</table>

<table>
<tr>
 <td style="height:30px"></td>
</tr>
<tr>
 <td style="padding-left:150px"><input type="submit" value="Calcular" /></td>
 <td style="padding-left:50px"><input type="submit" value="Imprimir" onclick="window.print()" /></td>

</tr>

<tr>
 <td></td>
</tr>

</table>
</form>
</div>
</table>
</div>

save.php

case 'calc_panel':
 if(isset($_POST['quantidade']))
 {  
  $quantidade = $_POST['quantidade'];
  if (fmod($quantidade, 2.5))
   {
 $quantidade = ceil($quantidade / 2.5) * 2.5;
   }
   $minimo = 3;
  switch ($quantidade)
  {

   case ($quantidade < 30):
 $flag=1;
 $val_montagem_1 = $flag * 3.5 + 25   ;
 $montagem=$val_montagem_1;


   case ($quantidade > 29 && $quantidade < 50 ):
 $flag=1;
 $val_montagem_2 = $flag * 3.5;
 $montagem = $montagem + $val_montagem_2 + $minimo;

   case ($quantidade < 100):
 $flag=1;
 $val_montagem_3 = $flag * 0.75;   
 $montagem= $montagem + $val_montagem_3 ;

   case ($quantidade < 150):
 $flag=1;
 $val_montagem_4 = $flag * 0.5 ;
 $montagem= $montagem + $val_montagem_4 ;
   case ($quantidade < 300):
 $flag=1;
 $val_montagem_5 = $flag * 0.5;   
 $montagem=$montagem + $val_montagem_5;
   case ($quantidade < 500):
 $flag=1;
 $val_montagem_6 = $flag * 0.5;   
 $montagem= $montagem + $val_montagem_6;
   case($quantidade < 1000):
 $flag=1;
 $val_montagem_7 = $flag * 0.5;
 $montagem=$montagem + $val_montagem_7 ;
  }
 }
 else $quantidade=0;

 $sapatas = $_POST['sapatas'];

 $fiadas = $_POST['fiadas'];

 $distancia = $_POST['distancia'];
 if(isset($_POST['distancia']))
 {
  if ($distancia < 0)
   {
 $distancia = abs($distancia);
   }

  if ($quantidade < 250)
   {
 $transporte = $distancia * 1.5 + 75;
   }
 }
 $exec_sapatas = ((15 * $sapatas)/2.5);
 $exec_fiadas = ((15 * $fiadas)/2.5);
 $rede =$rede + $exec_sapatas + $exec_fiadas;
 if ($quantidade == 0)
  {
  $transporte=0;
  $quantidade=1;
  $total_metro = ($total / $quantidade)*0;
  $total = (($rede+$montagem) * $quantidade + $transporte)* 0;
  $flag_1=0;
  }
 else if ($quantidade > 0)
  {

  $total = (($rede+$montagem) * $quantidade + $transporte);
  $total_metro = $total / $quantidade ;
  }
 $total=number_format ($total,2,',', '.');
 $total_metro=number_format ($total_metro,2,',', '.');
break;
Link to comment
Share on other sites

tenho de por o action, certo?

<form name="form" id="form" action="calc_panel" method="post">

para ele saber que case há-de usar

case 'calc_panel':

O que me esta a acontecer é: eu clicar em calcular e redireciona-me para o index

Link to comment
Share on other sites

Ja esta +/- resolvido. Em vez passar os calculos por um ficheiro a parte, pus tudo no mesmo.

Só que agora num simulador só faz cálculos a um produto, se selccionar outros produtos ele calcula o mesmo, estou a tentar o selected, mas sem sucesso:


<?php
// liga os erros e a sua apresentação, comentar para desligar os erros
ini_set('display_errors', 1); ini_set('error_reporting', E_ALL ^ E_NOTICE);


$id_produtos = $_POST['id_produto'];
$produtos = mysql_query("SELECT preco FROM produtos WHERE id_produto = '$id_produtos'");
$linha = mysql_fetch_assoc($produtos);
$rede = $linha['preco'];

<div style="padding: 0 0 0 450px;">
<table>
<div>
<form name="form" id="form" action="" method="post">
<table style="width:454px;">
<tr>
 <td class="descricao" style="width: 350px; height: 18px;">TIPO DE PAINEL E RESPECTIVA ALTURA:</td>
</tr>
<tr>
 <td style="width: 454px">
  <select  style="width:460px; text-align:left;" name="id_produtos" class="valor">

			   <?php
				 $all_produtos = mysql_query("SELECT * FROM produtos WHERE tipo_painel=1") or die(mysql_error());
  $all_linha = mysql_fetch_assoc($all_produtos);
  /*
  $prod_id=mysql_query("SELECT * FROM produtos WHERE id_produto='".$all_linha['id_produto']."'") or die (mysql_error());
  $prod=mysql_fetch_assoc($prod_id);
  */
  do{
  ?>
  <option value="<?php echo $all_linha['id_produto'] ?>" <?php if($all_linha['id_produto']){echo 'selected="selected"';} ?>>
   <?php echo $all_linha['nome_produto'].' - '. $all_linha['altura'].' m'; ?>
  </option>
			<?php }while($all_linha = mysql_fetch_assoc($all_produtos)); ?>
  </select>
Edited by PF2G
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.