doppelte berechnung der Punkte muss raus

egokyniker

Grünschnabel
Hallo

ich möchte, die doppelte berechnung der Punkte , also das maximum der punkte, nicht mehr in der berechnung haben, das script soll einfach nur die punkte zuammenrechnen
was muss ich ändern

insgesamt taucht ie berechnung der Punkte 3 mal auf.

die zahlen sollen nur einfach zusammengerechnet werden ohne das maximum herauzusuchen und auf die Summe dazuzurechnen

Wäre für eure Hilfe dankbar.


berechnung_mit_max_!.JPG berechnung_mit_max_2.JPG berechnung_mit_max_3.JPG
 
Hi

Einfach alle Zeilen, in denen was grün markiert ist, löschen?
Und dazu noch die dabei leergewordenen if, also mit nichts zwischen { und }

Code bitte als Code posten.
 
also reicht das so? ich kann es nicht überprüfen, da ich keinen user account habe.
PHP:
function hilfe_berechnePunkte($punkte, $teil, $info = false)
{
   $p = explode(':', $punkte);
   
   $summe = 0;
   
  for ($i = ($teil == 1 ? 0 : 6); $i < ($teil == 1 ? 6 : ($info ? 10 : 12)); $i++)
  if(is_numeric($p[$i]))
  {
  $summe += $p[$i];
  }
   
 
  return $summe;
}

_________________________________________________________

  // Gesamtpunktzahl ermitteln
  $gesamtpunkte = 0;
  for($i = 0; $i < 12; $i++)
  {
  if(is_numeric($werte['punkte'][$i]))
  {
  $gesamtpunkte += $werte['punkte'][$i];
   
  }
  if ($i == 5 || $i == 11)
  {
     
  }
  }
________________________________________________________

  // Gesamtpunktzahl ermitteln

  $gesamtpunkte = 0;
  for($i = 0; $i < 12; $i++)
  {
  if(is_numeric($werte['punkte'][$i]))
  {
  $gesamtpunkte += $werte['punkte'][$i];
   
  }
  if ($i == 5 || $i == 11)
  {

  }
  }
sorry, bin ein blutiger Anfänger, daher meine doofe fragen.
aber gelobe besserung
 
Zuletzt bearbeitet von einem Moderator:
Diese Teile:
PHP:
if ($i == 5 || $i == 11)
  {
     
  }
könnte man noch entfernen, wiel sie nichts machen.
Aber es schadet auch nicht, wenns drinbleibt.
 
Dann hast du wohl einige relevante Stellen im Code übersehen ... da wir den gesamten Code nicht kennen, wirds schwer zu helfen. Jedenfalls ist das Wesentliche wohl nicht, die Berechnung zu entfernen, sondern die Ausgabe...
 
ist die ausgabe denn in dem template kartei.tpl

siehe zeile 134 und 146

HTML:
<h1>Kartei{if $modus == 'formular' && !$neu} {$studenten_index+1}/ {$studenten_anzahl}{/if}</h1>

{if $meldung != ''}<p><span class="formmeldung">{$meldung|escape}</span></p>{/if}

{if $modus == 'uebersicht'}

<form method="post" action="{$self}">
   <input type="hidden" name="formular" value="filter" />
   Zeige folgende Studenten an
   <select name="filter">
     <option value="all"{if $filter=='all'} selected="selected"{/if}>Alle</option>
     <option value="info"{if $filter=='info'} selected="selected"{/if}>Informatiker</option>
     <option value="ninfo"{if $filter=='ninfo'} selected="selected"{/if}>nicht Informatiker</option>
   </select>
   <input type="submit" value="OK" />
</form>


<script type="text/javascript">

var studenten = new Array();
{section name=myS loop=$studenten}
studenten[{$smarty.section.myS.index}] = new Array('{$studenten[myS].id}', '{$studenten[myS].matrikelnummer}', '{$studenten[myS].name}', '{$studenten[myS].vorname}', '{$studenten[myS].fachrichtung}', '{$studenten[myS].semester}', '{$studenten[myS].wiederholer}', '{$studenten[myS].punkte}', '{$studenten[myS].punktesumme}', '{$studenten[myS].note}', '{$studenten[myS].sortname}');
{/section}

{literal}
function showStudenten(von)
{
   var bis = von;
   bis += 20;
  
   var sfr = '<table><tr><td>#</td><td><b>Name</b></td><td><b>Vorname</b></td><td><b>Matrikelnummer</b></td><td><b>Fachrichtung</b></td><td></td></tr>';
  for (i = von; i < bis && i < studenten.length; i++)
  {
     j = i;
     j++;
  sfr += '<tr><td>'+j+'</td><td>'+studenten[i][2]+'</td><td>'+studenten[i][3]+'</td><td>'+studenten[i][1]+'</td><td>'+studenten[i][4]+'</td><td><a href="{/literal}{$self}{literal}'+studenten[i][0]+'/">bearbeiten</a></td></tr>';
  }
  sfr += '</table>';

  document.getElementById('studentenliste').innerHTML = sfr;
}

function sucheStudenten(str)
{
  document.getElementById('studentenliste').innerHTML = '<i>Suche Studenten...</i>';

  var sfr = '<table><tr><td>#</td><td><b>Name</b></td><td><b>Vorname</b></td><td><b>Matrikelnummer</b></td><td><b>Fachrichtung</b></td><td></td></tr>';

  for (i = 0; i < studenten.length; i++)
  {
     if (studenten[i][2].search(eval("/" + str + "/i")) != -1 || studenten[i][3].search(eval("/" + str + "/i")) != -1 || studenten[i][1].search(eval("/" + str + "/i")) != -1)
       sfr += '<tr><td>'+j+'</td><td>'+studenten[i][2]+'</td><td>'+studenten[i][3]+'</td><td>'+studenten[i][1]+'</td><td>'+studenten[i][4]+'</td><td><a href="{/literal}{$self}{literal}'+studenten[i][0]+'/">bearbeiten</a></td></tr>';
  }
  sfr += '</table>';

  document.getElementById('studentenliste').innerHTML = sfr;
}

function positionen()
{
   var sfr = 'Davon zeige Studenten <select onchange="showStudenten(this.value);">';
  for (i = 0; i < studenten.length; i += 20)
  {
  var von = i+1;
  var bis = i+20;
  if (bis > studenten.length)
  bis = studenten.length;
  
  sfr += '<option value="'+i+'"';
  
  if (i == 0)
  sfr += ' selected="selected"';
  
  sfr += '>'+von+' - '+bis+'</option>';
  }
  sfr += '</select> an <u>oder</u>';

  document.write(sfr);
}

{/literal}

positionen();

</script>

suche nach <input type="text" name="suchestud" /> <input type="button" value="Suche" onclick="sucheStudenten(document.getElementsByName('suchestud')[0].value);" />


<div id="studentenliste"></div>

<script type="text/javascript">
showStudenten(0, (20 > studenten.length ? studenten.length : 20));
</script>
{/if}

{if $modus == 'formular'}
<script type="text/javascript">
//wandelt einen String in eine Zahl um. Verwendet , statt . als Dezimaltrennzeichen
// gibt NaN zurueck, wenn keine gueltige Zahl dargestellt wird ('-' und '' werden dabei zu 0)
{if $studenten_index eq 0}
geht_zurueck=0;
{else}
geht_zurueck=1;
{/if}

{if $studenten_index eq ($studenten_anzahl-1)}
geht_vor =0;
{else}
geht_vor=1;
{/if}

{literal}
function toNumber(s)
{
  if (s == '-' || s == '')
  return 0*0;
  Ausdruck = /^(\d+)(,|.)?(\d*)$/;
  Ausdruck.exec(s);
  return (RegExp.$1+'.'+RegExp.$3)*1;
}

function punktesummenAktualisieren()
{
  //erste Zeile:
  max1 = 0.0;
  summe = 0.0;
  for(i=0; i<6; i++){
  tempwert = toNumber(document.getElementById('punkte'+i).value);
  summe += tempwert;
  if(max1<tempwert)max1 = tempwert;
  }
  summe += max1;
  document.getElementById('tds1').firstChild.nodeValue=summe;
  document.getElementById('max1').firstChild.nodeValue=max1;
  
  //zweite Zeile:
  max2 = 0.0;
  summe2 = 0.0;
  for(i=6; i<12; i++){
  tempwert = toNumber(document.getElementById('punkte'+i).value);
  summe2 += tempwert;
  if(max2<tempwert)max2 = tempwert;
  }
  summe2 += max2;
  document.getElementById('tds2').firstChild.nodeValue=summe2;
  document.getElementById('max2').firstChild.nodeValue=max2;
  //Gesamtsumme:
  document.getElementById('summe').firstChild.nodeValue = summe + summe2;
  // note
  var note = 0;
  
  if (document.getElementsByName('fachrichtung')[0].value == 'info')
  {
  if (summe + summe2 <= 12.5) note = 5.0;
  else if (summe + summe2 <= 16.5) note = 5.0;//4.7;
  else if (summe + summe2 <= 18.5) note = 4.0;
  else if (summe + summe2 <= 20.5) note = 3.7;
  else if (summe + summe2 <= 22.5) note = 3.3;
  else if (summe + summe2 <= 24.5) note = 3.0;
  else if (summe + summe2 <= 26.5) note = 2.7;
  else if (summe + summe2 <= 28.5) note = 2.3;
  else if (summe + summe2 <= 30.5) note = 2.0;
  else if (summe + summe2 <= 32.5) note = 1.7;
  else if (summe + summe2 <= 34.5) note = 1.3;
  else note = 1.0;
  }
  else
  {
  if (summe + summe2 <= 15.5) note = 5.0;
  else if (summe + summe2 <= 19.5) note = 5.0;//4.7;
  else if (summe + summe2 <= 21.5) note = 4.0;
  else if (summe + summe2 <= 23.5) note = 3.7;
  else if (summe + summe2 <= 25.5) note = 3.3;
  else if (summe + summe2 <= 27.5) note = 3.0;
  else if (summe + summe2 <= 29.5) note = 2.7;
  else if (summe + summe2 <= 31.5) note = 2.3;
  else if (summe + summe2 <= 33.5) note = 2.0;
  else if (summe + summe2 <= 35.5) note = 1.7;
  else if (summe + summe2 <= 38) note = 1.3;
  else note = 1.0;
  }
  
  document.getElementById('note').firstChild.nodeValue = note;
//  document.getElementById('maxsumme').firstChild.nodeValue = max1 + max2; wird nicht benötigt
}

function aktualisieren(id, id2)
{
  //alert('test1');
  a = document.getElementById(id);
  if(a.value=='!') a.value='1,5';
  else if(a.value=='"') a.value='2,5';
  else if(a.value=='§') a.value='3,5';
  else if(a.value=='=') a.value='0,5';
  if(a.value=='0' || a.value=='1' || a.value=='2' || a.value=='3' || a.value=='4' ||
  a.value=='0,5' || a.value=='1,5' || a.value=='2,5' || a.value=='3,5' || a.value=='-'){
  //Firefox beschwert sich über die folgende Zeile, führt sie aber trotzdem wie erwartet aus...
  document.getElementById(id2).focus();
  //TODO: Zelleninhalt markieren
  }
  else{
  a.value='';
  }
  punktesummenAktualisieren();
}

function TasteLosgelassen (Ereignis)
{
  if (!Ereignis)
  Ereignis = window.event;
  if (Ereignis.which) {
  Tastencode = Ereignis.which;
  } else if (Ereignis.keyCode) {
  Tastencode = Ereignis.keyCode;
  }
  //alert('Tastenr. '+Tastencode+' losgel.');
  if(Tastencode==33 && geht_vor){
  document.getElementById('richtung').value='vor';
  document.getElementById('formstudent').submit();
  }
  else if(Tastencode==34 && geht_zurueck){ 
  document.getElementById('richtung').value='zur';
  document.getElementById('formstudent').submit(); 
  }
}
//document.onkeydown = TasteGedrueckt;
document.onkeyup = TasteLosgelassen;
{/literal}
</script>

{if not $neu}
<p>
   Schnellnavigation: In der Kartei vor/ zur&uuml;ck gehen von hier aus:<br />
  {foreach from=$links item=i}<a href="{$i.link}">{$i.text}</a>&nbsp;{/foreach}
</p>

<p>
   {if $filter == 'info'}Es werden nur <u>Informatiker</u> angezeigt. Wenn sie andere
   Studenten anzeigen wollen, klicken Sie im Men&uuml; auf Studentenkartei und w&auml;hlen eine
   andere Fachrichtung, oder alle Studenten aus.{/if}
  {if $filter == 'ninfo'}Es werden nur <u>nicht Informatiker</u> angezeigt. Wenn sie andere
   Studenten anzeigen wollen, klicken Sie im Men&uuml; auf Studentenkartei und w&auml;hlen eine
   andere Fachrichtung, oder alle Studenten aus.{/if}
  {if $filter == '' || $filter == 'all'}Es werden <u>alle Studenten</u> angezeigt.{/if}
</p>
<hr />
{/if}

<form action="{$self}" method="post" id="formstudent">

  <table border="0">
  <tr>
     <td>Name</td>
     <td>{if $klausurchanges == 0}<input type="text" name="name" value="{$student.name}" size="20" />{else}{$student.name}{/if}</td>
  </tr>
  <tr>
     <td>Vorname</td>
     <td>{if $klausurchanges == 0}<input type="text" name="vorname" value="{$student.vorname}" size="20" />{else}{$student.vorname}{/if}</td>
  </tr>
  <tr>
     <td>Matrikelnummer</td>
     <td>{if $klausurchanges == 0}<input type="text" name="matrikelnummer" value="{$student.matrikelnummer}" size="20" />{else}{$student.matrikelnummer}{/if}</td>
  </tr>
  <tr>
     <td>Semester</td>
     <td>{if $klausurchanges == 0}<input type="text" name="semester" value="{$student.semester}" size="2" />{else}{$student.semester}{/if}</td>
  </tr>
  <tr>
     <td>Wiederholer?</td>
     <td>
  {if $klausurchanges == 0} 
  <input type="radio" name="wiederholer" value="1" {if $student.wiederholer}checked="checked"{/if} /> Ja
  <input type="radio" name="wiederholer" value="0" {if !$student.wiederholer}checked="checked"{/if} /> Nein
  {else}
  {if !$student.wiederholer}<u>kein</u>{/if} Wiederholer
  {/if}
  </td>
  </tr>
  <tr>
     <td>Fachrichtung</td>
     <td>
     {if $klausurchanges == 0}
       <select name="fachrichtung">
       {foreach from=$fachrichtungen item=i key=k}
  <option value="{$k}" {if $student.fachrichtung eq $k}selected="selected"{/if}>{$i.name}</option>
  {/foreach}
  </select>
  {else}
  {foreach from=$fachrichtungen item=i key=k}
  {if $student.fachrichtung eq $k}{$i.name}{/if}
  {/foreach}
  {/if}
  </td>
  </tr>
  </table>

  <table cellpadding="3" cellspacing="0" border="1">
     <tr>
       <th>Aufgabe</th>
       <th>1</th>
       <th>2</th>
       <th>3</th>
       <th>4</th>
       <th>5</th>
       <th>6</th>
       <th>Max</th>
       <th>Summe</th>
  <th>Note</th>
     </tr>
     <tr>
       <td>Teil I</td>
  <td><input type="text" id="punkte0" name="punkte0" value="{$punkte.0}" size="3" onKeyUp="aktualisieren('punkte0','punkte1')" /></td>
  <td><input type="text" id="punkte1" name="punkte1" value="{$punkte.1}" size="3" onKeyUp="aktualisieren('punkte1','punkte2')" /></td>
  <td><input type="text" id="punkte2" name="punkte2" value="{$punkte.2}" size="3" onKeyUp="aktualisieren('punkte2','punkte3')" /></td>
  <td><input type="text" id="punkte3" name="punkte3" value="{$punkte.3}" size="3" onKeyUp="aktualisieren('punkte3','punkte4')" /></td>
  <td><input type="text" id="punkte4" name="punkte4" value="{$punkte.4}" size="3" onKeyUp="aktualisieren('punkte4','punkte5')" /></td>
  <td><input type="text" id="punkte5" name="punkte5" value="{$punkte.5}" size="3" onKeyUp="aktualisieren('punkte5','punkte6')" /></td>
  <td id="max1">0</td>
  <td id="tds1">0</td>
  <td></td>
  </tr>
  <tr>
     <td>Teil II</td>
     <td><input type="text" id="punkte6" name="punkte6" value="{$punkte.6}" size="3" onKeyUp="aktualisieren('punkte6','punkte7')" /></td>
     <td><input type="text" id="punkte7" name="punkte7" value="{$punkte.7}" size="3" onKeyUp="aktualisieren('punkte7','punkte8')" /></td>
     <td><input type="text" id="punkte8" name="punkte8" value="{$punkte.8}" size="3" onKeyUp="aktualisieren('punkte8','punkte9')" /></td>
  {if $student.fachrichtung eq 'info'}
  <td><input type="text" id="punkte9" name="punkte9" value="{$punkte.9}" size="3" onKeyUp="aktualisieren('punkte9','save0')" /></td>
  <td><input type="text" id="punkte10" name="punkte10" disabled="disabled" value="-" size="3" /></td>
  <td><input type="text" id="punkte11" name="punkte11" disabled="disabled" value="-" size="3" /></td>
  {else}
  <td><input type="text" id="punkte9" name="punkte9" value="{$punkte.9}" size="3" onKeyUp="aktualisieren('punkte9','punkte10')" /></td>
  <td><input type="text" id="punkte10" name="punkte10" value="{$punkte.10}" size="3" onKeyUp="aktualisieren('punkte10','punkte11')" /></td>
  <td><input type="text" id="punkte11" name="punkte11" value="{$punkte.11}"size="3" onKeyUp="aktualisieren('punkte11','save0')" /></td>
  {/if}
  <td id="max2">0</td>
  <td id="tds2">0</td>
  <td></td>
  </tr>
  <tr>
     <td>Gesamt</td>
     <td colspan="7"></td>
     <td id="summe">0</td>
  <td id="note">{$student.note/10}</td>
  </tr>
  </table>

  <p>
     <input type="hidden" id="richtung" name="richtung" value="nichtgesetzt" />
     <input type="hidden" name="formular" value="student_speichern" />
     <input type="hidden" name="student_id" value="{$student.id}" />
     <input type="hidden" name="student_hash" value="{$hash}" />
  </p>

{if $neu}
  <input type="hidden" name="neu" value="1" />
  <input id="save1" type="submit" name="submit" value="Speichern" />
{else}
{if $klausurchanges == 0}
  <table border="0">
  <tr>
  {if $studenten_index neq 0}<td align="right"><input type="submit" name="submitvor" value="Speichern und zur&uuml;ck (...)" /></td>{/if}
  <td align="center"><input id="save1" type="submit" name="submit" value="Speichern" /></td>
  {if $studenten_index neq $studenten_anzahl-1}<td align="left"><input id="save0" type="submit" name="submitwei" value="Speichern und weiter (...)" /></td>{/if}
  </tr>
  </table>

  <input type="checkbox" name="wirklich" value="ja" /> wirklich <input type="submit" name='loeschen' value="Student l&ouml;schen">
{/if}
</form>
{/if}

<p>Kurzbeschreibung:</p>
<ul>
  <li>JavaScript sollte eingeschaltet sein</li>
  <li>M&ouml;gliche Eingaben bei den Punkte-Feldern: -, 0, 1, 2, 3, 4, shift+0, shift+1, shift+2, shift+3</li>
  <li>Hat man eine g&uuml;ltige Eingabe gemacht, wird das n&auml;chste Feld aktiviert; eine ung&uuml;ltige Eingabe wird sofort gel&ouml;scht.</li>
  <li>Die hier angezeigten Summen werden per JavaScript berechnet und k&ouml;nnen daher nicht richtig sein (falls z.B. JavaScript deaktiviert ist). An allen maßgeblichen Stellen wird nat&uuml;rlich mit der korrekten Punktesumme gerechnet.</li>
</ul>

<script type="text/javascript">

document.getElementById('punkte0').focus();

punktesummenAktualisieren();

</script>
{/if}
 
Zurück