Avatar billede lsskaarup Nybegynder
04. maj 2005 - 11:18 Der er 8 kommentarer og
1 løsning

Dobbelt submit eller noget lignede

Jeg har en siden, som nærmest minder om et lille excel regneark i opbygning. Der er en masse celler, som brugeren skal indtaste værdier i. De ligger i ca. 15 kolonner og ca. 7 rækker. For at gøre det nemmere for brugerne, har vi ændret siden, så de kun skal udfylde de 3 første kolonner, og de efterfølgende bliver så automatisk udregnet ud fra nogle parametre.

Problemet er at udregningen, først sker når siden indlæses, hvilket betyder at de kun er værdierne fra de 3 første kolonner, som reelt blvier gemt. Brugeren kan så trykke gem igen, og så bliver de nye værdier gemt, men det er jo ikke optimalt.

Er der ikke en eller anden måde, hvorpå jeg via submit til en proces-side, kan få reloadet og gemt output-siden igen.

Script (kalkulation.php), som vise og udregner værdier:

<?php

    for ($j = 1; $j <= count($kostpristabel); $j++) {
    $mld = 1;
        echo "<tr>\n";
        echo "<td>".$kostpristabel[$j]['spaendvidde']."</td>\n";
        echo "<td>".$kostpristabel[$j]['vaegt']."</td>\n";
        $antaltyper = count($typer);
       
        for ($i=1; $i<=($antaltyper*count($KORROSIONKLASSE)); $i++) {
            $modulus = $i % $antaltyper;
            if ($modulus==0){
                $modulus=$antaltyper;
            }
            if($i>$antaltyper) {
                $standard = number_format($TILLAEGOVERFLADE[$mld] + $KOSTPRIS1[$j][$modulus], 2, '.', '');
                echo "<td><input class=\"small\" type=\"text\" name=\"kost1[$j][$i]\" value=\"".$standard."\"></td>\n";
                if($modulus==$antaltyper){
                    $mld++;
                }
            } else {
                echo "<td><input class=\"small\" type=\"text\" name=\"kost1[$j][$i]\" value=\"".$KOSTPRIS1[$j][$i]."\" onChange=\"document.ds.submit();\"></td>\n";
                if($modulus==$antaltyper){
                    $mld++;
                }
            }
        }
        echo "</tr>\n";
    }
?>

Scriptet (kalkulation_process.php) som gemmer værdierne i dette tilfælde i en fil på serveren:

    $KOSTPRIS1 = array();'."\n";   
    for ($i=1; $i<=8; $i++) {
        $res .= '$KOSTPRIS1['.$i.'] ='." array('0";
        for($j=1; $j<=(count($PRODUKTIONSMETODE)*count($KORROSIONKLASSE)); $j++) {
            $res .= "','";
            if ($_POST['kost1'][$i][$j] == '') $res .= '0';
            else $res .= str_replace(",", ".", $_POST['kost1'][$i][$j]);
        }
        $res .= "');\n\n";
    }

Begge er selvfølgelig klippet ud af en større sammenlæng.
Avatar billede sukos Juniormester
04. maj 2005 - 11:24 #1
Du kan bruge sessions, til at registrere brugerens input
Avatar billede lsskaarup Nybegynder
04. maj 2005 - 12:58 #2
og....?
Avatar billede lsskaarup Nybegynder
04. maj 2005 - 14:36 #3
Hvordan skal jeg eventuelt bruge det?
Avatar billede sukos Juniormester
04. maj 2005 - 15:08 #4
hmm, har jeg forstået det ret, at ved den første submit laves nogle udregninger, som så senere skal bruges til "endelig" udregning?

Er ikke lige helt med, men ved første submit kan div. posts jo registreres med sessions,  og senere kan der så tjekkes om en session er sat, og er den det, så lav beregninger ud fra satte sessions
Avatar billede lsskaarup Nybegynder
04. maj 2005 - 15:13 #5
Nej ikke helt, ved første submit, har brugeren skrevet nogle værdier i f.eks. de 3 første kolonner. Det vil sige, at alle værdier ud består af 3 kolonne som er opdaterede, og resten som stadigvæk har den gamle værdi. Dette gemmes i en fil, og først når siden via header loades igen, bliver den gamle værdier overskrevet af udregningerne, fordi udregningen først kommer når siden skal vises, altså efter gem.

Jeg skal bruge en løsning til at få udregnet værdierne før de gemmes, eventuelt som jeg egentlig har beskrevet her, en dobbelt submit, hvor siden lige reloades ind i mellem, for så bliver værdierne jo også udregnet.
Avatar billede lsskaarup Nybegynder
04. maj 2005 - 15:15 #6
Men måske kan brugerne accepetere, at i de felter de om skrive i er en onChange, som beregner værdierne, og de kan så derefter gemme resultatet.
Avatar billede lsskaarup Nybegynder
13. maj 2005 - 14:55 #7
Slet ingen som kan hjælpe?
Avatar billede lsskaarup Nybegynder
13. maj 2005 - 15:05 #8
Jeg tænkte på en anden mulighed, i forbindelse med onChange. Kan man styre hvilket felt man er kommet til, f.eks. ved tabulering, så siden springer ned til det felt eller det efterfølgende, og eventuelt hvordan?
Avatar billede lsskaarup Nybegynder
20. maj 2005 - 11:24 #9
Jeg har selv fået løst det nu.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester