Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Jak zrobic numerowanie?
Forum PHP.pl > Forum > Przedszkole
adi121
Witam szukałem na forach i nie wiem jak zrobić numerowanie coś w stylu numerowania faktur czyli np:
10/P/09/2013 nastepny ma być numer 11/P/09/2013 i tak co nowy miesiąc to od nowa numeracjaczyli np dla pażdziernika 1/P/10/2013 potem 2/P/10/2013.

Za zadne skarby nie wiem jak to zrobić byl bym wdzieczny za pomoc. Albo jakąś podpowiedz

Damonsson
Pseudokod
  1. if( w tym miesiącu była już jakaś faktura, czyli początek ciągu jest większy od 1) {
  2. $i = pobranie ostatniego numeru faktury;
  3. $i++;
  4. } else {
  5. $i = 1
  6. }
  7. echo date("$i/\P/m/Y");
adi121
Zrobiłem coś takiego niestety nie działa poprawnie co może być zle ?

  1. $pobnr = mysql_query("SELECT MAX(nr) FROM umowyPracownik") or die("Błąd w zapytaniu!");
  2. if (mysql_num_rows($pobnr)==0) {
  3. echo "
  4. <input type=\"text\" name=\"nr\" id=\"nr\" value=\"auto\" class=\"pole\" size=\"15\" /><br />
  5. ";
  6. }
  7. else {
  8. while($data3 = mysql_fetch_array($pobnr)) {
  9. $next_id = $data3['MAX(nr)'] + 1;
  10. $nastepnynr = date("$next_id/\P/m/Y");
  11. echo '<input type=\"text\" name=\"nr\" id=\"nr\" value="'.$nastepnynr.'" class=\"pole\" size=\"15\" /><br />';
  12. }
  13. echo '</select>';
  14. }


a tak wyglada baza

  1. CREATE TABLE IF NOT EXISTS `umowyPracownik` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `idRodzaj` int(11) DEFAULT '1',
  4. `idPracownik` int(11) NOT NULL,
  5. `imie` varchar(100) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
  6. `nazwisko` varchar(150) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
  7. `adres` varchar(150) NOT NULL,
  8. `kod` varchar(6) NOT NULL,
  9. `poczta` varchar(150) NOT NULL,
  10. `nr` varchar(50) NOT NULL,
  11. `data` date NOT NULL,
  12. `dataEnd` date DEFAULT NULL,
  13. `stawka` float(5,2) DEFAULT '0.00',
  14. `kwota` float(10,2) DEFAULT NULL,
  15. `kwotaBrutto` float(10,2) DEFAULT NULL,
  16. `stawkaTransport` float(5,2) DEFAULT NULL,
  17. `przedmiot` varchar(250) DEFAULT NULL,
  18. `idUmowaPracodawca` int(11) DEFAULT NULL,
  19. `rozliczanie` SET('m','t') NOT NULL DEFAULT 't',
  20. PRIMARY KEY (`id`)
  21. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Damonsson
Temat: Jak poprawnie zadac pytanie
adi121
Pomoże ktoś bo męcze się z tym i niemam pojęcia może ktoś ma cos na wzór
markonix
Wycinek z mojej aplikacji. Może Cię naprowadzi.
$user->invoice_format to dowolny format ustawiany przez użytkownika (dzięki czemu można w przystępny sposób zmienić format numeracji).
Np. [number]-[month]-[year]

  1. $regexp = str_replace(array('[number]', '[month]', '[year]'), array('[[:digit:]]+', $currentMonth, $currentYear), $user->invoice_format);
  2. $sql = "SELECT `invoice_number` FROM $table_name [...] `invoice_number` REGEXP '^$regexp$' ORDER BY `id` DESC LIMIT 1";
  3. [...]
  4. if (!empty($result->invoice_number))
  5. {
  6. $regexp = str_replace(array('[number]', '[month]', '[year]'), array('(\\d*)', $currentMonth, $currentYear), str_replace('/', '\/', $user->$invoiceTypeFormat));
  7. preg_match('/^' . $regexp . '/', $result->invoice_number, $matches);
  8. $lastNumber = $matches[1];
  9. }
  10. else
  11. {
  12. $lastNumber = 0;
  13. }
  14. $newNumber = str_replace(array('[number]', '[month]', '[year]'), array($lastNumber + 1, $currentMonth, $currentYear), $user->$invoiceTypeFormat);
  15.  
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.