Beiträge von Modula

    Na gut, aber diese Lösung ist mit ner Tabelle ;)

    [php:1:cfe629b858]<?php
    function shutdown() {
    // Löschen aller Session-Variablen.
    $_SESSION = array();

    // Falls die Session gelöscht werden soll, löschen Sie auch das
    // Session-Cookie.
    // Achtung: Damit wird die Session gelöscht, nicht nur die Session-Daten!
    if (isset($_COOKIE[session_name()])) {
    setcookie(session_name(), '', time()-42000, '/');
    }

    // Zum Schluß, löschen der Session.
    @session_destroy();

    // Session neustarten um Loginfehler zu umgehen
    session_id(md5(time()));
    session_start();
    }

    ?>[/php:1:cfe629b858]

    [php:1:b86af61a0c]<?php

    /*
    Array, der die Bestellnummern enthält die bereits storniert wurden
    */
    $temp_bnr = array();
    while($res=oci_fetch_array($sql))
    {
    if(!in_array($res['BESTNR'], $temp_bnr))
    /*
    Prüfen, ob für die aktuelle Bestellnummer die Bestellungen schon storniert wurden
    wenn ja, ist diese im array und die Bedingung gibt true zurück
    */
    {
    /*
    Die Bestellungen für die aktuelle Bestellnummer wurden noch nicht storniert
    $res['VORBESTELLT'] enthält die Anzahl in der $res['BESTNR'] vorbestellt wurde
    muss also aus dem lager von der vorbestellten Menge abgezogen werden.
    */
    $sql0= ociparse($c,"update lager set vorbestellt = vorbestellt - {$res['VORBESTELLT']} where bestnr = '". $res['BESTNR'] ."'");
    ociexecute($sql0); // Datenbank String senden
    /*
    Damit die aktuelle Bestellnummer nicht erneut storniert wird schreiben wir sie in einen Array
    */
    $temp_bnr[] = $res['BESTNR'];
    }
    /*
    Löschen der Bestellung
    */
    $sql1= ociparse($c,"delete from bestellungen where fixiert is Null and ID = '".$res['ID']."' and kurzz = '".$_SESSION['kuerzel'] ."'");
    ociexecute($sql1);

    ocicommit($c);
    }

    ?>[/php:1:b86af61a0c]

    besser?

    Ich muss jetzt erstmal nach Hause fahren, schaue aber später nochmal ins Forum.

    [php:1:72ee491966]<?php
    session_start();
    require('auth.php'); // ueberpruefung ob session vorhanden oder nicht nicht -> weiter interessant
    require('connect.php'); //datenbank connect

    $sql= ociparse($c,"select b.id,l.vorbestellt,b.bestnr from bestellungen b, lager l where b.fixiert is Null and b.kurzz = '" . $_SESSION['kuerzel'] ."' and b.bestnr=l.bestnr"); //selektiert alle eintraege im table bestellungen (wo die bestellungen der einzelnen kunden hinterlegt werden) die auf den user dieser session zutreffen
    ociexecute($sql);

    $temp_bnr = array();
    while($res=oci_fetch_array($sql))
    {
    if(!in_array($res['BESTNR'], $temp_bnr)) {
    $sql0= ociparse($c,"update lager set vorbestellt = vorbestellt - {$res['VORBESTELLT']} where bestnr = '". $res['BESTNR'] ."'"); //im lager table ist die produktpalette verspeichert mit den Beständen und vorbestellten mengen des produkts -> da ja hier ein storno vorgenommen wird, soll hier die vorbestellte menge wieder zurückgerechnet werden, wenn aber nun von einem artikel 2 einträge im bestellungen table sind funktioniert das nicht (auch nicht das von modula)
    ociexecute($sql0);
    $temp_bnr[] = $res['BESTNR'];
    }
    $sql1= ociparse($c,"delete from bestellungen where fixiert is Null and ID = '".$res['ID']."' and kurzz = '".$_SESSION['kuerzel'] ."'"); // und hier soll en eben dann endgültig die bestellungen des users aus dem bestellungen table gelöscht werden und somit ist der kunde wieder "bestellungslos"...
    ociexecute($sql1);

    ocicommit($c);
    }

    header('location:bestellungen.php');
    ?>[/php:1:72ee491966]

    So sollte es dann gehen.

    Brauchst du die änderungen erklärt oder verstehst du das so?

    wenn also im table mehrere sätze von einem Benutzer sind gibt deine SQL Abfrage ja auch mehere an $res=oci_fetch_array($sql) zurück - oder nicht?

    d.h. du müsstest bei jedem Durchlauf der while schleife "vorbestellt" um EINS zurücksetzen, oder nicht?

    Code
    ociparse($c,"update lager set vorbestellt = vorbestellt - 1 where bestnr = '". $res['BESTNR'] ."'")

    Wenns das nicht ist, dann brauch ich mal nen Beispieldatensatz - entweder über print_r($res) in der while schleife ausgegeben oder sonst wie ;)