# Lottozahlen per Zufall in 7 Textfelder



## coyu (28. März 2004)

Hallo Leute,

ich habe ein Form mit sieben Textfelder (7 aus  50 Lott) und suche ein Javascript, mit dem man per Button-Klick sieben Zahlen (natürlich nach dem Prinzip "ohne zurücklegen") in die einzelnen Textfelder reinsetzen kann.

Hat jemand vielleicht einen Tipp für mich?

Vielen Dank!

Coyu


----------



## Thomas Lindner (28. März 2004)

Ich gebe vorerst nur einen Tiipp ab:

Nutze die Funktionen:

math.random()
math.round()

Zusätzlich wirst Du nicht um eine IF Abfrage rumkommen um doppelte Zaahlen zu verhindern.

Und eine "Schleife" wäre vermutlich auch hilfreich.

Mehr möchte ich noch nicht sagen, weil Du evtl. nur einen Gedankenansatz brauchtest und die Lösung selber finden willst!


----------



## coyu (28. März 2004)

**

Hallo,

vielen Dank für deine Antwort!

Ich habe von JS kein Ahnung und sucher eher ein fertiges Script bzw. ein ähnliches, welches ich modifizieren kann... 

Grüße,

Coyu


----------



## Fabian H (28. März 2004)

```
for (i=0; i<7; i++) {
    window.document.write('<input type="text" style="width:15px;" value="' + (Math.round(Math.random() * 48) + 1) + '" /> ');
}
```
Obwohl ich eigentlich eher gegen "sucher eher ein fertiges Script" bin.


----------



## Thomas Lindner (28. März 2004)

> _Original geschrieben von Fabian Hofmann _
> * [ [ ... ] Obwohl ich eigentlich eher gegen "sucher eher ein fertiges Script" bin. *



Genau aus diesem Grund hatte ich nur Ansatzweise "Schlagwörter" in den Raum gestellt, weil mit etwas Lektüre bei SelfHTML kommt man eigentlich schon auf die Lösung!


----------



## coyu (28. März 2004)

*Nochmal ich...*

Hallo Leute,

es geht darum, dass ich das Teil kommerziell benötige.
Und wenn ich es kommerziell nutze, sollte die Beschaffung auch kommerziell sein. Sprich gegen ein Entgelt.

Also nochmal anders:
Wer ist in der Lage, ein kleines Javascript für mich zu schreiben, welches auf Button-Klick sieben Zufallszahlen 7 aus 50 in sieben kleine Textfelder setzt und dabei natürlich auf Doppelte achtet?

Wie lange dauert sowas: 20 Minuten? Eine Stunde? Bitte einfach Preis nennen! 

Sorry, dass ein anderer Eindruck erweckt wurde!

Grüße,

Coyu


----------



## Fabian H (29. März 2004)

```
<script tpye="text/javascript">

function in_array(a_mVal, a_aArray)
{
    for (sIndex in a_aArray) {
        if (sIndex == a_mVal) {
            return true;
        }
    }

    return false;
}

function generateNumbers()
{
    for (i=0; i<7; i++) {
        aUsed = new Array();

        do {
            iRndNum = Math.round(Math.random() * 49) + 1;
        } while (in_array(iRndNum, aUsed));

        window.document.forms['LottoForm'].elements['num' + i].value = iRndNum;
        aUsed[aUsed.length] = iRndNum;
    }
}

</script>

<form name="LottoForm">
    <input type="text" name="num0" style="width:30px;" />
    <input type="text" name="num1" style="width:30px;" />
    <input type="text" name="num2" style="width:30px;" />
    <input type="text" name="num3" style="width:30px;" />
    <input type="text" name="num4" style="width:30px;" />
    <input type="text" name="num5" style="width:30px;" />
    <input type="text" name="num6" style="width:30px;" />
</form>
<br />
<br />
<input type="button" onclick="generateNumbers();" value=" Lottozahlen erzeugen " />
```
Das Geld (50€) bitte an Tutorials.de überweisen.


----------



## coyu (29. März 2004)

*Super*

Hey, vielen Dank!

Ich habe es auch gleich ausprobiert und hatte prompt zwei '9'er Zahlen drin!
Wenn du das noch abstellen kannst, wäre das klasse!

Und: Können wir über den Preis nicht verhandeln? ,-)

Coyu

P.S.: An Tutorials.de überweisen? Wie?


----------



## Fabian H (29. März 2004)

So, der Fehler ist behoben.

```
<script tpye="text/javascript">

function in_array(a_mVal, a_aArray)
{
    for (sIndex in a_aArray) {
        if (a_aArray[sIndex] == a_mVal) {
            return true;
        }
    }

    return false;
}

function generateNumbers()
{
    aUsed = new Array();

    for (i=0; i<7; i++) {
        do {
            iRndNum = Math.round(Math.random() * 49) + 1;
        } while (in_array(iRndNum, aUsed));

        window.document.forms['LottoForm'].elements['num' + i].value = iRndNum;
        aUsed[aUsed.length] = iRndNum;
    }
}

</script>

<form name="LottoForm">
    <input type="text" name="num0" style="width:30px;" />
    <input type="text" name="num1" style="width:30px;" />
    <input type="text" name="num2" style="width:30px;" />
    <input type="text" name="num3" style="width:30px;" />
    <input type="text" name="num4" style="width:30px;" />
    <input type="text" name="num5" style="width:30px;" />
    <input type="text" name="num6" style="width:30px;" />
</form>
<br />
<br />
<input type="button" onclick="generateNumbers();" value=" Lottozahlen erzeugen " />
```
Ok, mit dem Preis können wir auf 10 Euro runtergehen.
Für die Bankverbindung bitte bei Dominik Haubrich melden, am besten per PN.


----------



## coyu (29. März 2004)

*Check auf Doppelte*

OK, !
Wenn Du mir jetzt noch für einen zusätzlichen Submit-Button eine kleine Funktion schreibst, die eine Doppelte Zahl abfängt ("Sie dürfen keine Zahl doppelt spielen", wenn der User Zahlen selbst ändert z.B.!) und nur Zahlen von 1 bis 49 erlaubt, dann ist das Script perfekt und wir machen 15 Euro draus!

Grüße,

Coyu

P.S.: Was ist PN?


----------



## Fabian H (29. März 2004)

```
<script tpye="text/javascript">

function in_array(a_mVal, a_aArray)
{
    for (sIndex in a_aArray) {
        if (a_aArray[sIndex] == a_mVal) {
            return true;
        }
    }

    return false;
}

function generateNumbers()
{
    aUsed = new Array();

    for (i=0; i<7; i++) {
        do {
            iRndNum = Math.round(Math.random() * 49) + 1;
        } while (in_array(iRndNum, aUsed));

        window.document.forms['LottoForm'].elements['num' + i].value = iRndNum;
        aUsed[aUsed.length] = iRndNum;
    }
}

function FocusField(a_iNum)
{
    window.document.forms['LottoForm'].elements['num' + a_iNum].focus();
}

function checkNumbers()
{
    aNums = new Array();

    for (i=0; i<7; i++) {
        iVal = parseInt(window.document.forms['LottoForm'].elements['num' + i].value);
        if ((iVal <= 0) || (iVal >= 50) || isNaN(iVal)) {
            FocusField(i);
            window.alert('Bitte nur Zahlen von 1 bis 49 eingeben');
            return false;
        } else if (in_array(iVal, aNums)) {
            FocusField(i);
            window.alert('Bitte keine doppelten Zahlen eingeben');
            return false;
        }
        aNums[aNums.length] = iVal;
    }
    return true;
}

</script>


<form name="LottoForm" action="lotto.php" method="post"
      onsubmit="return checkNumbers();">
    <input type="text" name="num0" style="width:30px;" />
    <input type="text" name="num1" style="width:30px;" />
    <input type="text" name="num2" style="width:30px;" />
    <input type="text" name="num3" style="width:30px;" />
    <input type="text" name="num4" style="width:30px;" />
    <input type="text" name="num5" style="width:30px;" />
    <input type="text" name="num6" style="width:30px;" />
    <br />
    <br />
    <input type="submit" value=" Lottozahlen eintragen " />
</form>

<script type="text/javascript">
generateNumbers();
</script>
```
Eine PN ist einfach eine Private Nachricht, so etwas wie eine E-Mail, nur auf
Tutorials.de.

Einen Link, um Dominik eine zu schreiben, findest du in seinem Profil.


----------



## coyu (2. April 2004)

*Bisserl anders...*

Hallo.

also das sollte schon so bleiben, dass man immer neue Tipps generieren kann, bloß dass ein ZWEITER Submit-Button da ist, der nochmal alles kontrolliert und mit einer offenen Action gekoppelt ist.

Habe übrigens Dominik kontaktiert, aber nich nix von ihm gehört!

Grüße,

Coyu


----------



## Fabian H (2. April 2004)

```
// Die Zeile hier:
<input type="submit" value=" Lottozahlen eintragen " />

// In die hier ändern:
<input type="submit" value=" Lottozahlen eintragen " />
<br />
<br />
<input type="button" onclick="generateNumbers();" value=" Lottozahlen erzeugen " />
```
Und der Dominik meldet sich schon noch, keine Angst


----------



## coyu (3. April 2004)

*Zum letzten Mal ich *

Also ich weiß nicht, von was Du den Submit-Button abhängig machst?!

Wäre es möglich, den Submit-Button einfach mit einer Funktion zu verknüpfen? So kann ich das nicht nutzen, weil mein Submit-Button ganz woanders liegt!

z.B.

 <input name="submit" type="submit" class="button"  value="SPEICHERN" onclick="checkNumbers();"> 
o.ä.

Grüße,

Coyu


----------



## Fabian H (3. April 2004)

Ok, also nochmal:

```
<script type="text/javascript">

function in_array(a_mVal, a_aArray)
{
    for (sIndex in a_aArray) {
        if (a_aArray[sIndex] == a_mVal) {
            return true;
        }
    }

    return false;
}

function generateNumbers()
{
    aUsed = new Array();

    for (i=0; i<7; i++) {
        do {
            iRndNum = Math.round(Math.random() * 49) + 1;
        } while (in_array(iRndNum, aUsed));

        window.document.forms['LottoForm'].elements['num' + i].value = iRndNum;
        aUsed[aUsed.length] = iRndNum;
    }
}

function FocusField(a_iNum)
{
    window.document.forms['LottoForm'].elements['num' + a_iNum].focus();
}

function checkNumbers()
{
    aNums = new Array();

    for (i=0; i<7; i++) {
        iVal = parseInt(window.document.forms['LottoForm'].elements['num' + i].value);
        if ((iVal <= 0) || (iVal >= 50) || isNaN(iVal)) {
            FocusField(i);
            window.alert('Bitte nur Zahlen von 1 bis 49 eingeben');
            return false;
        } else if (in_array(iVal, aNums)) {
            FocusField(i);
            window.alert('Bitte keine doppelten Zahlen eingeben');
            return false;
        }
        aNums[aNums.length] = iVal;
    }
    window.document.forms['LottoForm'].submit();
}

</script>


<form name="LottoForm" action="lotto.php" method="post">
    <input type="text" name="num0" style="width:30px;" />
    <input type="text" name="num1" style="width:30px;" />
    <input type="text" name="num2" style="width:30px;" />
    <input type="text" name="num3" style="width:30px;" />
    <input type="text" name="num4" style="width:30px;" />
    <input type="text" name="num5" style="width:30px;" />

    <input type="text" name="num6" style="width:30px;" />
</form>

<script type="text/javascript">
generateNumbers();
</script>


<!-- dieser Button kann an einer beliebigen Stelle im Dokument stehen -->
<input type="button" value=" Speichern " onclick="checkNumbers();">

<!-- dieser auch: -->
<input type="button" value=" Lottozahlen erzeugen "
       onclick="generateNumbers();">
```
Passt es so?


----------



## coyu (3. April 2004)

*Perfekt! ,-) Vielen Dank!   o.T.*

...


----------

