Randomzahl erzeugen und in DB überprüfen

Klar:
PHP:
function generate_startnummer($eventid){ 
    $startnummer_zufall = rand(44,46); 
     
    if(check_startnummer($startnummer_zufall, $eventid)){ 
        return $startnummer_zufall; 
    }else{ 
        return generate_startnummer($eventid); 
    } 
}
Also mal von Anfang:
  1. Die Funktion generate_startnummer(...) wird aufgerufen
  2. Es wird ein Zufallswert bestimmt
  3. Wenn der Wert nicht existiert, wird dieser zurückgegeben und die Funktion beendet
  4. Wenn er bereits existiert wird der Wert zurückgegeben, der der Funktionswert der Funktion generate_startnummer() ist. Also gehts wieder von vorne los
So gehts dann hin und her, bis ein Zufallswert generiert wird, der noch nicht existert.

Hoffe, das das so verständlich war. Rekursive Funktionen muss man einfach verstehen, dann ist es eigentlich ganz einfach. Aber bis man die logik dahinter versteht ...
 
aber die Nummer wird doch jedesmal frisch generiert? printen kann ich sie ja auch....nur als returnwert gehts nicht. Sorry falls ich mich da grad blöd anstell ;)
 
Also bei mir funktionierts:
test.php:
PHP:
function check_startnummer($startnummer_zufall, $eventid) {
    return  ($startnummer_zufall==45) ? false : true;
}

function generate_startnummer($eventid){
    $startnummer_zufall = rand(44,46);
    echo $startnummer_zufall."<br>";
    if(check_startnummer($startnummer_zufall, $eventid)){
        return $startnummer_zufall;
    }else{
        return generate_startnummer($eventid);
    }
}
echo generate_startnummer(1);
Ergibt die Ausgabe (natürlich (fast) immer anders, aber mal so zum verdeutlichen):
Code:
45
44
44
Also wird die Funktion 2mal ausgeführt und würde letztendlich 44 zurückgeben
 
Zurück