Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> problem z nadawaniem nr spraw
chrisstim
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 25.03.2014

Ostrzeżenie: (0%)
-----


Witam,

Mam taki problem z nadawaniem nr spraw od początku wraz z rozpoczęciem kolejnego roku.

Zaczął się nowy rok i chciałbym aby moja składnia nadawała numery od 1, a nie od ostatniego znajdującego się w bazie.

Funkcja wygląda tak:


Kod
public function nadajSprawy(array $bifs)
    {


        $rok = date('Y');

        $da = $this->getDefaultAdapter();
        try {
            // rozpocznij transakcję
            $da->beginTransaction();

            // zablokuj bazę (read only)
            $da->exec("lock table sprawy in share mode;");

            // trzeba wziąść listę tych bez sprawy, posortowane według bif_id
            $bezSpraw = $this->select()
                ->where("sprawa = ?", "")
                ->where(new Zend_Db_Expr("date_part('year', rekord_data) = " . $rok))
                ->order("bif_id ASC");
            $lista = $this->fetchAll($bezSpraw);
          
            //echo "Ilość pozycji bez spraw w tym roku: ".count($lista)."<br>";

            // pobrać ostatnią, najwyższą wartość sprawy
            $ostatnia = $this->select()
                //->columns(array("sprawa"))
                ->where("sygnatura <> ?", "")
                ->where(new Zend_Db_Expr("date_part('year', rekord_data) = " . $rok))
                ->order("bif_id DESC")
                ->limit("1");
            $ostatniWiersz = $this->fetchRow($ostatnia);

            $lp = 0;
            $indexOsobowy = 0;

            //echo "Rok: " . $rok . "<br>";

            if ($ostatniWiersz !== NULL) {

                //echo "Ostatnia sprawa: " . $ostatniWiersz->sprawa . "<br>";
                // wyizolować części ostatniej sprawy
                $parts = explode(".", $ostatniWiersz->sprawa);

                // odnaleźć indeks części osobowe w tabeli
                $indexOsobowy = array_search($parts[5], $this->osobowy);
                $lp = $parts[4];


            }

            //echo "ostatni LP: " . $lp . "<br>";
            //echo "ostatni osobowy: " . $this->osobowy[$indexOsobowy] . "<br>";

            // ustawic sprawe, zwiększająć wartość o jeden i wykorzytując wartość osobowa o wskazanym indeksie
            foreach ($lista as $row) {
                /** @var Zend_Db_Table_Row $row */
                $lp++;
                // jeśli wartość % 100 = 1, zwiększyć indeks osobowy o 1, chyba ze max osiagniety, wówczas licz od 0
                if ($lp % 100 == 1) {
                    $indexOsobowy++;
                    if ($indexOsobowy >= sizeof($this->osobowy)) {
                        $indexOsobowy = 0;
                    }
                }

                // ustaw wymagane wartosci pol wiersza i zapisz
                $row->lp = $lp;
                $row->osobowy_index = $indexOsobowy;
                //echo "BIF_ID: ".$row->bif_id."; LP: ".$row->lp. ";  Sprawa ".$row->sprawa ."<br>";

                $row->save();

            }

            // commit
            $da->commit();



Z góry dziękuję za pomoc.

Ten post edytował chrisstim 25.03.2014, 11:17:16
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.12.2025 - 16:30