Module:Id increment: Difference between revisions

From Visual Data Wiki
Jump to navigation Jump to search
(Created page with "-- Funktion, um die höchste Zahl in der Struktur "Projekt/1", "Projekt/2", usw. zu finden function findMaxProjectNumber() local maxNumber = 0 -- Abfrage an die Datenbank (MediaWiki-Standardtabelle 'page') local result = mw.ext.mysql.query{ sql = "SELECT page_title FROM page WHERE page_title REGEXP 'Projekt/(%d+)' ORDER BY page_title DESC LIMIT 1" } -- Überprüfe das Ergebnis if result and result[1] and result[1].page_title then...")
 
No edit summary
 
(31 intermediate revisions by the same user not shown)
Line 1: Line 1:
-- Funktion, um die höchste Zahl in der Struktur "Projekt/1", "Projekt/2", usw. zu finden
local p = {}
function findMaxProjectNumber()
 
function p.findMaxProjectNumber()
     local maxNumber = 0
     local maxNumber = 0


     -- Abfrage an die Datenbank (MediaWiki-Standardtabelle 'page')
     -- API-Anfrage, um alle Seiten im Namensraum 0 zu erhalten
     local result = mw.ext.mysql.query{
     local apiUrl = mw.util.wikiScript('api') .. '?action=query&list=allpages&apnamespace=0&aplimit=max&format=json'
        sql = "SELECT page_title FROM page WHERE page_title REGEXP 'Projekt/(%d+)' ORDER BY page_title DESC LIMIT 1"
    local response = mw.api.get(apiUrl)
    }


     -- Überprüfe das Ergebnis
     -- Überprüfe die Antwort
     if result and result[1] and result[1].page_title then
     if response and response.query and response.query.allpages then
         local lastPage = result[1].page_title
         for _, page in ipairs(response.query.allpages) do
        local _, _, number = string.find(lastPage, "Projekt/(%d+)")
            local pageTitle = page.title
            local _, _, number = string.find(pageTitle, "Projekt/(%d+)")


        -- Überprüfe, ob eine Zahl gefunden wurde
            if number then
        if number then
                local currentNumber = tonumber(number)
            maxNumber = tonumber(number)
                if currentNumber and currentNumber > maxNumber then
                    maxNumber = currentNumber
                end
            end
         end
         end
     end
     end


     return maxNumber
     return maxNumber + 1
end
end


-- Beispielaufruf der Funktion
return p
local maxNumber = findMaxProjectNumber()
local nextNumber = maxNumber + 1
 
-- Gib die nächste verfügbare Nummer aus
print("Die nächste verfügbare Projekt-ID ist: Projekt/" .. nextNumber)

Latest revision as of 10:06, 12 March 2024

Documentation for this module may be created at Module:Id increment/doc

local p = {}

function p.findMaxProjectNumber()
    local maxNumber = 0

    -- API-Anfrage, um alle Seiten im Namensraum 0 zu erhalten
    local apiUrl = mw.util.wikiScript('api') .. '?action=query&list=allpages&apnamespace=0&aplimit=max&format=json'
    local response = mw.api.get(apiUrl)

    -- Überprüfe die Antwort
    if response and response.query and response.query.allpages then
        for _, page in ipairs(response.query.allpages) do
            local pageTitle = page.title
            local _, _, number = string.find(pageTitle, "Projekt/(%d+)")

            if number then
                local currentNumber = tonumber(number)
                if currentNumber and currentNumber > maxNumber then
                    maxNumber = currentNumber
                end
            end
        end
    end

    return maxNumber + 1
end

return p