Det er en misforståelse, der er set før. Nej, der er ingen forbindelse, der opretholdes, mens brugeren ser siden.
Et script udføres helt færdig, hver gang. Både når du sender <form>-en ud til brugeren, og når han derefter trykker på knappen efter at have tastet ind. Derfor "skal" man altid i toppen af scriptet håndtere brugerens inddata, og derefter vise ham en HTML-side med et resultat. (Bedre: efter håndtering af inddata, så redirecte til en HTML-side med et resultat).
Og du har netop oplevet hvad der sker, når man ikke gør det sådan ;)
18. juli 2011 - 19:15
#10
Koden er:
<?php
session_start();
?>
<!doctype HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>test</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript">
function PopUpHelp(MinURL) {
window.open(MinURL,'popup','height=250,width=800', 'scroll=yes');
}
</script>
<link rel="stylesheet" href="stylesheet.css" type="text/css">
</head>
<body>
<?php
include("inc/cfg.php");
if(isset($_SESSION['email']) AND isset($_SESSION['password'])) {
$query_get = "SELECT subjects, weight_grades_year, grades_year, weight_exam, exam_grades FROM grades WHERE email='$_SESSION[email]'";
$result_get = mysql_query($query_get) or die(mysql_error());
while ( $row = mysql_fetch_array ( $result_get ) ){
$subjects = explode("-",$row[subjects]);
$weight_grades_year = explode("-",$row[weight_grades_year]);
$grades_year = explode("-",$row[grades_year]);
$weight_exam = explode("-",$row[weight_exam]);
$exam_grades = explode("-",$row[exam_grades]);
}
}
?>
<form action="index.php" method="POST">
<div id="ramme">
<div class="subjects">
<div id="headline">F</div>
<?php
for($i = 0; $i <= 20; $i++) {
echo"<input type='text' name='subjects[]' size='32' value='".$subjects[$i]."'><br />";
}
?>
</div>
<div class="weight_grades_year">
<div id="headline">V</div>
<?php
for($i = 0; $i <= 20; $i++) {
echo"<input type='text' name='weight_grades_year[]' size='4' maxlenght='4' value='".$weight_grades_year[$i]."'><br />";
}
?>
</div>
<div class="grades_year">
<div id="headline">Å</div>
<?php
for($i = 0; $i <= 20; $i++) {
echo"<input type='text' name='grades_year[]' size='2' maxlenght='2' value='".$grades_year[$i]."'><br />";
}
?>
</div>
<div class="weight_exam">
<div id="headline">V</div>
<?php
for($i = 0; $i <= 20; $i++) {
echo"<input type='text' name='weight_exam[]' size='4' maxlenght='4' value='".$weight_exam[$i]."'><br />";
}
?>
</div>
<div class="exam_grades">
<div id="headline">E</div>
<?php
for($i = 0; $i <= 20; $i++) {
echo"<input type='text' name='exam_grades[]' size='4' maxlenght='4' value='".$exam_grades[$i]."'><br />";
}
?>
</div>
<div class="right_box">
<div id="headline2">Information</div>
<div id="pad"><p>Tryk på nedenstående knap, når du har indtastet dine data:</p><br />
<center><input id="calculate" type="submit" name="calculate" value="Beregn"></center><br /><br />
<?php
if(isset($_POST['calculate'])){
$weight_grades_year = $_POST['weight_grades_year']; // #1
$sum_weight_grades_year = 0; // #1
$weight_exam = $_POST['weight_exam']; // #3
$sum_weight_exam = 0; // #3
for($i = 0; $i <= 20; $i++) {
$subject = $subjects[$i]; // Fag
$wgy = $weight_grades_year[$i]; // #1
$gy = $grades_year[$i];
$we = $weight_exam[$i]; // #3
$eg = $exam_grades[$i];
$year_calculation[$i] = $wgy*$gy;
$exam_calculation[$i] = $we*$eg;
$sum_weight_grades_year += $weight_grades_year[$i]; // #1
$sum_grades_year += $grades_year[$i];
$sum_weight_exam += $weight_exam[$i]; // #3
$sum_exam_grades += $exam_grades[$i];
}
// Summen af alle årskarakter der er ganget med vægten.
$sum_year_calculation = array_sum($year_calculation);
// Summen af alle eksamenskarakter der er ganget med vægten.
$sum_exam_calculation = array_sum($exam_calculation);
$sum_1 = array_sum($weight_grades_year);
$sum_3 = array_sum($weight_exam);
$sum_one = $sum_exam_calculation+$sum_year_calculation;
$sum_two = $sum_1+$sum_3;
$calculate_average = $sum_one/$sum_two;
$show_average = number_format($calculate_average, 1, ',', ' ');
$bonus_s = 1.03*$calculate_average;
$bonus = number_format($bonus_s, 1, ',',' ');
echo "<b>$show_average</b><br /><br />Inkl. evt. bonus: <b>$bonus</b>";
if(isset($_SESSION['email']) AND isset($_SESSION['password'])) {
include("inc/cfg.php");
$load = mysql_query("SELECT * FROM brugere WHERE email = '$_SESSION[email]'") or die(mysql_error());
$show = mysql_fetch_array($load);
$te = mysql_query("SELECT * FROM grades WHERE email = '$_SESSION[email]'");
if (mysql_num_rows($te) > "0") {
$subjects = implode("-",$_POST[subjects]);
$weight_grades_year = implode("-",$_POST[weight_grades_year]);
$grades_year = implode("-",$_POST[grades_year]);
$weight_exam = implode("-",$_POST[weight_exam]);
$exam_grades = implode("-",$_POST[exam_grades]);
mysql_query("UPDATE grades SET subjects='$subjects', weight_grades_year='$weight_grades_year', grades_year='$grades_year', weight_exam='$weight_exam',exam_grades='$exam_grades', snit='$show_average', gnssnit='$bonus', sum_weight_year='$sum_1', sum_weight_exam='$sum_3', sum_year_grades='$sum_year_calculation', sum_exam_grades='$sum_exam_calculation' WHERE email = '$_SESSION[email]'") or die(mysql_error());
echo "<meta http-equiv='refresh' content='0;'>";
} else {
$subjects = implode("-",$_POST[subjects]);
$weight_grades_year = implode("-",$_POST[weight_grades_year]);
$grades_year = implode("-",$_POST[grades_year]);
$weight_exam = implode("-",$_POST[weight_exam]);
$exam_grades = implode("-",$_POST[exam_grades]);
mysql_query("INSERT INTO grades (`subjects`,`weight_grades_year`, `grades_year`, `weight_exam`, `exam_grades`, `email`, `snit`, `gnssnit`, `sum_weight_year`, `sum_weight_exam`, `sum_year_grades`, `sum_exam_grades`) VALUES ('$subjects', '$weight_grades_year', '$grades_year', '$weight_exam', '$exam_grades', '$show[email]', '$show_average', '$bonus', '$sum_1', '$sum_3', '$sum_year_calculation', '$sum_exam_calculation')") or die(mysql_error());
echo "<font color='green'><b>Dataerne er nu gemt.</b></font>";
}
}
}
?>
<br /><br />
<b>Brug for hjælp?</b><br />
<a href="" onclick="PopUpHelp('help.html');return false;">
Tryk for hjælp</a><br /><br />
<?php
if(isset($_SESSION['email']) AND isset($_SESSION['password'])) {
$qu = mysql_query("SELECT * FROM grades WHERE email = '$_SESSION[email]'") or die(mysql_error());
$s = mysql_fetch_array($qu);
echo "<br /><br /><b>$s[snit]</b><br />Inkl. evt. bonus <b>$s[gnssnit]</b>.";
}
?>
</div>
</div>
</div>
</form>
</body>
</html>