Jak podzielić ilość rekordów na paczki by je wysłać?

0

No co zrobię kod to coraz lepszy. Sprawa jest taka:

  1. Pobieram z bazy ilośc rekordów np niech to bedzie 23
  2. Chce podzielić te rekordy na ilość paczek po 10 sztuk
  3. Powinienem mieć zatem 3 paczki. Dwie pełne po 10 sztuk i ostatnia 3 sztuki
  4. Za każdym sprawdzeniem 10 sztuk wysyłam pake i dalej kolekcjonuje 10 sztuk
    Mój kod (no błagam kod buaha) wypociny wyglądają tak:
   $arrayCount = count(Tablica rekordow z bazy w $parParams['id_reciver']);
    $varSqlParams = ''; //init string

    for ($i = 1; $i <= $arrayCount; $i++) {
        $varSqlParams[] = "(" . $parParams['id_reciver'][$i - 1]['id'] . ")";  //sklejona paka
        if (($i % 10) == 0) { //tu sprawdzam czy reszta dzielenia z 10 ma 0 jesli tak to wysylam
            //send package
            $this->objDB->query($varSql.implode(',',$varSqlParams)); //wyslij to cos
            $varSqlParams = array(); //wyczysc tablice
        } 
    }

A jak teraz sprawdzić tę resztę co zostaje te 3 sztuki i je wysłać ? A może jest prostszy sposób niż te moje czary mary ?

0

Sprawdź za pętlą czy varSqlParams jest niepuste i wyślij?

0

Zamień pętlę for na while lub repeat (czy co tem w w PHP jest) i dodaj sobie zmienną z licznikiem.

0

Calośc zrobiłem tak ale jakos średno mi sie to podoba.

   $arrayCount = count(Tablica rekordow z bazy w $parParams['id_reciver']);
    $varSqlParams = ''; //init string

    for ($i = 1; $i <= $arrayCount; $i++) {
        $varSqlParams[] = "(" . $parParams['id_reciver'][$i - 1]['id'] . ")";  //sklejona paka
        if (($i % 10) == 0) { //tu sprawdzam czy reszta dzielenia z 10 ma 0 jesli tak to wysylam
            //send package
            $this->objDB->query($varSql.implode(',',$varSqlParams)); //wyslij to cos
            $varSqlParams = array(); //wyczysc tablice
        } 

        $countRest = count($varSqlParams); //badam czy reszta jest
        if($countRest > 0) { //jesli jest to petla 
            for ($k = $i; $k <= $countRest; $k++) { //zacznij petle od miejsca w ktorym skoczyla sie ostatnia pelna paczka
                $varSqlParams[] = "(" . $parParams['id_reciver'][$k - 1]['id']. ")";
            }
            $this->objDB->query($varSql.implode(',',$varSqlParams)); //wyslij
        }
    }

Nie wiem moze to powinno byc w 4 linijkach kodu a nie w takim rozlazlym czyms. Powalcze jeszcze, dzieki za pomoc

1 użytkowników online, w tym zalogowanych: 0, gości: 1