03. juni 2011 - 15:31
Der er
18 kommentarer og
1 løsning
Array og array_sum();
Hej Eksperter.
Jeg er begyndt at lege med nogle arrays i PHP. Det jeg har lavet er en form hvor jeg har nogle inputs:
<?php
for($i = 0; $i <= 20; $i++) {
echo"<input type='text' name='test[]' size='32'><br />";
}
?>
Der kommer altså 21 felter. Indholdet i disse felter skal være tal, og jeg vil meget gerne kunne lægge dem sammen, hvor jeg fandt funktionen array_sum(); , men som jeg desværre ikke kan få til at virke.
$array = array(10,20,10,30,20);
$total=array_sum($array);
print($total);
Dette eksampel virker, men når jeg gør således:
$array = array($test[$i]);
$total=array_sum($array);
print($total);
.. sker der ingenting?
Jeg håber der er nogen der kan hjælpe.
12. juni 2011 - 23:53
#17
Hm, så passer udregningen ikke.
Problemet er at når jeg trykker "udregn", så regner den forkert første gang, dvs. man skal trykke to gange for at den regner rigtigt. Det er ikke hver gang at den tæller det hele med, jeg synes virkelig at det er underligt.
Man er logget ind som bruger, her kan du se hele scriptet:
<?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>