Hallo, ik heb hieronder een script om de openingstijden in de database te zetten, ook is er een php check of de winkel niet meer dan 80 uur open is.

Alleen nu wil ik ervoor zorgen dat hij automatisch berekend hoeveel uren de winkel open is (afhankelijk van de ingevulde waardes).

Het script zoals ik het nu heb:

<?php
if(DB::Filter($row_online->user_id) == '0'){
    include("pages/home.php");
}elseif(DB::NumRows($sql_supermarket) == 0){
    include("pages/supermarket/start/index.php");
}else{
?>
    <div class="c_box">
        <div class="heading green">Openingstijden</div>
                        
        <div class="inner">
        <?php
        if(isset($_POST['confirm'])){
            $total = 0;
                for ($i = 1; $i < 8; $i++) {
                $total += ($_POST['closed'.$i] - $_POST['open'.$i]);
            }
                
            if($total > 80){
                echo'<div class="error">Het is maar mogelijk om maximaal 80 uur per week open te zijn.</div>';
            }else{
                for ($i = 1; $i < 8; $i++) {
                    $sql = DB::Query("SELECT * FROM hoursofoperation WHERE supermarket_id = '".DB::Escape($row_supermarket->id)."' AND day = '".$i."' ORDER BY id DESC LIMIT 1 ");
                    if(DB::Numrows($sql) == 0){
                        DB::Query("INSERT INTO hoursofoperation (supermarket_id,day,open,closed) VALUES('".DB::Filter($row_supermarket->id,ENT_QUOTES)."','".$i."','".DB::Filter($_POST['open'.$i])."','".DB::Filter($_POST['closed'.$i])."')")or die(mysql_error());
                    }else{
                        DB::Query("UPDATE hoursofoperation SET open = '".DB::Filter($_POST['open'.$i])."', closed = '".DB::Filter($_POST['closed'.$i])."' WHERE supermarket_id = '".DB::Escape($row_supermarket->id)."' AND day = '".$i."' ORDER BY id DESC LIMIT 1")or die(mysql_error());
                    }
                }
                echo'<div class="correct">De openingstijden zijn met succes aangepast.</div>';
            }
        }
        ?>
        <form method="POST" action="index.php?p=supermarket&a=hoursofoperation">
            <table width="100%">
                <tr>
                    <td><strong>Dag</strong></td>
                    
                    <td><strong>Geopend vanaf</strong></td>
                    
                    <td><strong>Gesloten om</strong></td>
                </tr>
                    
                <?php
                for ($i = 1; $i <= 7; $i++) {
                    $sql_open = DB::Query("SELECT * FROM hoursofoperation WHERE supermarket_id = '".DB::Escape($row_supermarket->id)."' AND day = '".$i."' ORDER BY id DESC LIMIT 1");
                    $row_open = DB::FetchObject($sql_open);
                ?>
                    
                    <tr>
                        <td width="40%">
                        <?php
                        switch ($i) {
                            case 1:
                                echo "Maandag";
                                break;
                            case 2:
                                echo "Dinsdag";
                                break;
                            case 3:
                                echo "Woensdag";
                                break;
                            case 4:
                                echo "Donderdag";
                                break;
                            case 5:
                                echo "Vrijdag";
                                break;
                            case 6:
                                echo "Zaterdag";
                                break;
                            case 7:
                                echo "Zondag";
                                break;
                            default : 
                            echo "geen dag gekozen";
                        }
                        
                        ?>
                        </td>
                                
                        <td width="30%">
                        <select name = "open<?php echo $i; ?>">
                        <?php
                        for ($open = 8; $open <= 22; $open++) {
                        ?>
                            <option value="<?php echo $open; ?>" onclick="calc()"
                            <?php
                            if(DB::Numrows($sql_open) != 0){
                                if(DB::Filter($row_open->open) == $open){
                            ?>
                                    selected="selected";
                            <?php
                                }    
                            }
                            ?>
                            />
                            <?php echo $open; ?>:00</option>
                        <?php
                        }
                        ?>
                        </select> uur
                        </td>
                                
                        <td width="30%">
                        <select name = "closed<?php echo $i; ?>">
                        <?php
                        for ($closed = 14; $closed <= 22; $closed++) {
                        ?>
                            <option value="<?php echo $closed; ?>" onclick="calc()"
                            <?php
                            if(DB::Numrows($sql_open) != 0){
                                if(htmlentities($row_open->closed) == $closed){
                            ?>
                                    selected="selected";
                            <?php
                                }   
                            }
                            ?>
                            />
                            <?php echo $closed; ?>:00</option>
                        <?php
                        }
                        ?>
                        </select> uur
                        </td>
                    </tr>
                <?php
                }
                ?>
                <tr>
                    <td><input type="submit" value="Bevestig openingstijden" name="confirm"></td>
                </tr>
            </table>
        </form>
        </div>
    </div>
<?php
}
?>


Het script dat ik gevonden heb op internet
Link

Ik hoop dat ik hiermee voldoende informatie heb gegeven, indien dat niet het geval is hoor ik het wel.

Alvast bedankt
Dat zou kunnen, maar je moet wel nog wat extra controles uitvoeren, want als er bijvoorbeeld nog niets is ingevoerd, staan zowel de openings- als sluitingstijd op nul vandaar die negatieve waarden.

Ook moet je controleren of de openingstijd niet groter is dan de sluitingstijd.

Maar met het gegeven voorbeeld kan jij dat makkelijk zelf inbouwen.
Ik heb even een tesje gedaan en schijnbaar kan je in Javascript closed niet als variabelenaam gebruiken.
Als je die veranderd zou het moeten werken.
Hartstikke bedankt :)

De rest kan ik zelf !

[size=xsmall]Toevoeging op 06/01/2015 21:08:39:[/size]

p.s. is het mogelijk om ervoor te zorgen dat zodra het totaal meer dan 80 uur is, dat het niet mogelijk is om op de submit button te klikken?
Behalve omhoogvallen (letterlijk) en omlaagstijgen is niets onmogelijk:
[code lang="js"]
submit = document.getElementById('MySubmit');
if (total > 80) {
submit.setAttribute('disabled', 'disabled');
}
else {
submit.removeAttribute('disabled');
}
[/code]
@Ger,

Ik was weer te moeilijk aan het denken zeker? Het is niet meer dan een aggregate query natuurlijk..

Ja in javascript is een oplossing al zou ik voor AJAX gegaan zijn en dan nieuw record => versturen met AJAX en direct response met openingsuren maar smaken verschillen natuurlijk.
Inderdaad Frank, de berekening had direct in de aggegrate functie van de hoofdquery gekund.

Met je laatste opmerking ben ik het niet eens, je gaat geen gegevens opslaan zonder dat een gebruiker daarvoor kiest. Daarbij staat de J (als ik goed geinformeerd ben) voor Javascript, alleen je ga dan telkens een request uitvoeren wat helemaal niet nodig is.

Reageren