2012-10-13 5 views
1

http://fog.ccsf.cc.ca.us/~tboegel/semesterGPA1.phpPHP Calcul de GPA et les fonctions définies par l'utilisateur

Ma forme supposée pour calculer l'AMP des cours (lien ci-dessus). J'ai encore besoin de calculer le total des points, GPA, Total de la qualité. Je pense que je peux comprendre moi-même, mais j'ai besoin de savoir comment $ _REQUEST ['course1'], cours2, cours3, unités1, unités2, etc ... (voir ci-dessous)

Jusqu'à présent, j'ai

<?php 
$course = $_REQUEST['course0']; 
$units = $_REQUEST['units0']; 
$letterGrade = $_REQUEST['letterGrade0']; 
$letterGrade = strtoupper($letterGrade); 
if($letterGrade == 'A') { 
    $numberGrade = 4; 
} elseif ($letterGrade == 'B') { 
    $numberGrade = 3;                   
} elseif ($letterGrade == 'C') { 
    $numberGrade = 2;                   
} elseif ($letterGrade == 'D') { 
    $numberGrade = 1;                   
} else { 
    $numberGrade = 0;                   
} 

$qualityPoints = $units * $numberGrade; 

function calculateQualityPoints($course, $units, $letterGrade, $qualityPoints) { 
echo "<tr><td>$course</td><td>$units</td><td>$letterGrade</td><td>$qualityPoints</td></tr>"; 

} 

echo "<table width='50%' align='left'><tr><th>Course</th><th>Units</th><th>Letter Grade</th><th>Quality Points</th></tr>"; 
calculateQualityPoints($course, $units, $letterGrade, $qualityPoints);       
echo "<tr><td><strong>Total</strong></td><td><strong>total</strong></td><td></td><td><strong>quality total</strong></td></tr><tr><td><strong>GPA</strong></td><td><strong>GPA #</strong></td></tr></table>";                      

?> 

Seule la première zone de texte fonctionne. Comment puis-je saisir course1, course2, course3, units1, units2, letterGrade1, etc?

Ce code provient du formulaire HTML pour entrer les cours, les notes et les unités.

<?php 
    for ($i=0; $i<5; $i+=1) { 
    print "<tr>\n"; 
    print "\t<td><input type='text' name='course$i'></td>\n"; 
    print "\t<td><input type='text' name='units$i' size=5></td>\n"; 
    print "\t<td><input type='text' name='letterGrade$i' size=5></td>\n"; 
    print "</tr>\n"; 
    } 
    ?> 
+0

Vous pouvez avoir 'name = "cours []"' et '$ _REQUEST [ 'cours']' sera un array, afaicr .. – MiniGod

Répondre

0

Remplacer calculateQualityPoints($course, $units, $letterGrade, $qualityPoints); ce ... Il devrait fonctionner

for ($i=0; $i<5; $i+=1) { 
    echo "<tr><td>".$_REQUEST['course'.$i]."</td><td>".$_REQUEST['units'.$i]."</td>";  
    echo "<td>$letterGrade</td><td>$qualityPoints</td></tr>"; 
} 
+0

Cela semble fonctionner. Merci, mais je dois utiliser une fonction définie par l'utilisateur car mon devoir nécessite que j'utilise une fonction – yan

1

Votre aide de la méthode post dans votre formulaire, donc en semesterGPA2.php, vous devez utiliser POST $ [ 'nom'] pour accéder à ces variables d'entrée, où le nom est Course 0, 1, 2, etc. Vous pouvez utiliser une autre boucle pour l'afficher.

Votre code devrait ressembler à ceci, espérons que cela aide. Ne garantissez pas qu'il n'y a pas de fautes de frappe!

<?php 
//maybe put the th tag here, course, units lettergrade, etc. 
$qualityPoints = 0; 
$units = 0; 
for($i=0; $i<5; $i++) { 

    //these are just the names in input name = "", can rename yo anything you want 
    $courseName = 'course'.$i; 
    $unitsName = 'units'.$i; 
    $letterGradeName = 'lettergrade'.$i; 

    //we are using post to retrieve these form input variables 
    $letterGrade = $POST[$letterGradename]; 
    $units = $POST[$unitsName]; 
    $course = $POST[$courseName]; 
    //calculate the quality points for each one 
    $qualityPoints = calculateQualityPoints($units, $letterGrade); 
    //maybe hereyou can just output(echo) each row with the above information 
    //echo above info 

    //you can aggregate them here for output of the final grade, like a report card 
    $qualityPoints += $qualityPoints; 
    $units += $units; 
} 

//here you can use the total quality points and the total units to calculate gpa 
$GPA = ($qualityPoints/$units)/25; 
echo "GPA:". $GPA; 
//or even make a function to calculate GPA 
//Why not even create a report card class that encapsulates all of this, but may be over kill! 
function calculateQualityPoints($units, $letterGrade) { 
    if($letterGrade == 'A') { 
     //you can conver the letter grade to number grade, or you can just do it directly 
     $qualityPoints = 100 * $units; 
    } elseif ($letterGrade == 'B') { 
     $qualityPoints = 75 * $units;                   
    } elseif ($letterGrade == 'C') { 
     $qualityPoints = 50 * $units;                   
    } elseif ($letterGrade == 'D') { 
     $qualityPoints = 25 * $units;                   
    } else { 
     $qualityPoints = 0;                   
    } 
    return $qualityPoints; 
} 

?> 
+0

J'ai oublié d'ajouter que les champs de texte peuvent être laissés en blanc, donc si je laisse un champ de texte vide. Je pense que j'obtiens une erreur en utilisant cette boucle – yan

+0

juste ajouter une coche pour voir ce que la valeur de la publication est, si noir '' ou NULL, et rediriger votre code en conséquence –

1

faire un chèque, si la valeur == '' ou NULL

Questions connexes