also, ich hab nen scrip gefunden, welches zufällig 6 zahlen aus 49 ausgeibt. also lottozahlen. danke dafür an den spender.
ich hab mir daraus ein script gebastelt, welches die zufälligen zahlen dann in eine datenbank speichert, zuvor jedoch per do-while-schleife die bereits vorhandenen einträge in der datenbank überprüft, ob es keine doppelten gibt. und das ganze script ist noch mal von einer do-while-schleife umgeben, die von zähler 1 bis zähler < 13983817, was der anzahl der kombinationsmöglichkeiten für 6 aus 49 entspricht, hochzählt.
das script stürzt aber ab, es macht nur 6 einträge in die datenbank und dann geht es nicht weiter.
zugegeben, die 13983816 ist ne groe zahl und und mit zunehmender db-größe hat auch die interne do-while mehr zu tun, da hat die anlage zu rödeln aber selbst wenn ich das z.b. auf <50 für das schleifenende stelle stürzt sie ab. es funktiont entweder immer einzeln oder max, wenn es auf <7 stelle. dann trägt er 6 datensätze ein und dann muss ich wieder aktualisieren.
hab ich ein fehler im script oder woran könnte es liegen?
als milchmädchen-lösung könnte man die seite ja nach 10 sec wieder aufrufen, dann würde es auch nach und nach gehen. gibt es dafür ne möglichkeit in php oder hat einer ne ganz andere idee?
thx und hier mal das script:
achja, an der stelle: "datensatz schon vorhanden" stirbt das script, dort wäre es schön, wenn auch dort dann automatisch das script neu starten würde und nicht da stehen bleibt.
gibt es da sowas wie goto zeile 1 oder so?
ich hab mir daraus ein script gebastelt, welches die zufälligen zahlen dann in eine datenbank speichert, zuvor jedoch per do-while-schleife die bereits vorhandenen einträge in der datenbank überprüft, ob es keine doppelten gibt. und das ganze script ist noch mal von einer do-while-schleife umgeben, die von zähler 1 bis zähler < 13983817, was der anzahl der kombinationsmöglichkeiten für 6 aus 49 entspricht, hochzählt.
das script stürzt aber ab, es macht nur 6 einträge in die datenbank und dann geht es nicht weiter.
zugegeben, die 13983816 ist ne groe zahl und und mit zunehmender db-größe hat auch die interne do-while mehr zu tun, da hat die anlage zu rödeln aber selbst wenn ich das z.b. auf <50 für das schleifenende stelle stürzt sie ab. es funktiont entweder immer einzeln oder max, wenn es auf <7 stelle. dann trägt er 6 datensätze ein und dann muss ich wieder aktualisieren.
hab ich ein fehler im script oder woran könnte es liegen?
als milchmädchen-lösung könnte man die seite ja nach 10 sec wieder aufrufen, dann würde es auch nach und nach gehen. gibt es dafür ne möglichkeit in php oder hat einer ne ganz andere idee?
thx und hier mal das script:
achja, an der stelle: "datensatz schon vorhanden" stirbt das script, dort wäre es schön, wenn auch dort dann automatisch das script neu starten würde und nicht da stehen bleibt.
gibt es da sowas wie goto zeile 1 oder so?
PHP-Code:
<?
// timeout30 für scriptlaufzeit ausser kraft setzen
ini_set("max_execution_time","0");
require("connect.inc.php");
$a = 1;
do
{
// die folgende Zeile erzeugt einen internen
//Startwert für den Zufallsgenerator
srand ((double)microtime()*1000000);
// die Schleife wird sooft durchlaufen wie
//$i kleiner 7 ist,
// da wir ja 6 Zahlen brauchen
for($i=1; $i<7; $i++){
$val = rand(1,49);
// $val ist eine zufällige Zahl
//zwischen 1 und 49
(!strpos(" ".$vals, "$val")) ?
$vals .= $val." " : $i--;
// Ist $val noch nicht in $vals
//enthalten hänge es zzgl. Leerzeichen an
// wenn doch verringere $i um 1
//damit am Ende 6 Zahlen rauskommen
}
$arrayLotto = explode(" ",
trim($vals));
// zum Sortieren verwandeln wir
// die Zahlen am Besten in ein Array
// trim() entfernt das hintere Leerzeichen
sort($arrayLotto);
// Anzahl der Datensätze auslesen
$query = ("SELECT lz_id FROM lottozahlen");
$result = mysql_query($query);
$anzahl = mysql_num_rows($result);
//echo "Anzahl der Datensätze: ".$anzahl."</br>";
// Überprüfung ob arrayLotto schon vorhanden ist
$i = 1;
$anzahl++;
do
//so lange die vorhandenen datensätze
//überprüfen, bis übereinstimmung oder letzte id
{
$query1 = mysql_query("SELECT n1,n2,n3,n4,n5,n6
FROM lottozahlen WHERE lz_id = $i");
$data = mysql_fetch_array($query1);
if (in_array($data,$arrayLotto))
{
echo "Datensatz schon vorhanden"."</br>";
die;
}
else
{
echo " ";
}
$i++;
} while ($i < $anzahl);
// einzelnen Inhalte des Arrays auf einzelne neue
// Variabeln übertragen
$zahl1 = $arrayLotto[0];
$zahl2 = $arrayLotto[1];
$zahl3 = $arrayLotto[2];
$zahl4 = $arrayLotto[3];
$zahl5 = $arrayLotto[4];
$zahl6 = $arrayLotto[5];
mysql_query("INSERT INTO lottozahlen VALUES
('','$zahl1','$zahl2','$zahl3','$zahl4','$zahl5','$zahl6')");
$a++;
} while ($a < 7);
$query = ("SELECT lz_id FROM lottozahlen");
$result = mysql_query($query);
$anzahl = mysql_num_rows($result);
echo "Anzahl der Datensätze: ".$anzahl."</br>";
?>
Kommentar