Nach Umstellung der PHP Version

CreativPur

Erfahrenes Mitglied
Ich habe mehrer UPDATE in diesem Lottosystem, allerdings ohne dem
PHP:
$nr = count($_POST['wochentag']);
$aktiv = [];
for ($i = 0; $i < $nr; $i++) {
    $aktiv[$i] = 0;
        }
for ($j = 0; $j < count($_POST['aktiv']); $j++) {
    $i = $_POST['aktiv'][$j];
    $aktiv[$i] = 1;
        }
Da funktioniert es und die Daten werden gespeichert.

Ich verstehe es ja selbst nicht...
 

Zvoni

Erfahrenes Mitglied
Moment.
Deine Zeile 6 bis 8 kommt mir doch seltsam vor.
In Zeile 3 bis 5 initialisierst du das array $aktiv mit 0 (=False)
In Zeile 7 holst du einen Wert ab (Boolean?) und weist ihn $i zu (was bedeuten würde, $i kann nur 0 oder 1 sein).
Müsste das nicht sein:
PHP:
 $aktiv[$j] = i;
Oder hab ich was falsch verstanden?
 

CreativPur

Erfahrenes Mitglied
In der Datenbank habe ich die Spalte "aktiv".
Dort wird festgelegt ob die Lottozahl aktiv "1" oder deaktiviert "0" ist.

Diese Funktion benötige ich, um bei der Ausgabe über einen Zufallsgenerator nur die Lottozahlen ausgegeben werden, welche aktiv sind
 

CreativPur

Erfahrenes Mitglied
Wie gesagt..
Vor der PHP-Umstellung hat es wunderbar funktioniert.
Entweder bin ich schon Code-Blind, oder einfach zu blöd....
 

Zvoni

Erfahrenes Mitglied
In der Datenbank habe ich die Spalte "aktiv".
Dort wird festgelegt ob die Lottozahl aktiv "1" oder deaktiviert "0" ist.

Diese Funktion benötige ich, um bei der Ausgabe über einen Zufallsgenerator nur die Lottozahlen ausgegeben werden, welche aktiv sind
Genau das meine ich ja: In Zeile 8 oben sprichst du nur $aktiv[0] und $aktiv[1] an, da i nur 0 oder 1 sein kann
Vielleicht knallts deshalb
 

Sempervivum

Erfahrenes Mitglied
Dieses:
Code:
    $aktiv = [];
    for ($i = 0; $i < $nr; $i++) {
        $aktiv[$i] = 0;
    }
    for ($j = 0; $j < count($_POST['aktiv']); $j++) {
        $i = $_POST['aktiv'][$j];
        $aktiv[$i] = 1;
    }
verstehe ich ein wenig anders: $_POST['aktiv'][$j] enthält den Wert des value-Attributes der betr. Checkbox. Ich bin nicht in den kompletten Code eingestiegen aber dieser kann auch andere Werte als 0 und 1 annehmen, wahrscheinlich einen Index. Glaube nicht, dass der Fehler hier liegt, auch weil @CreativPur schreibt, dass es vor der Umstellung funktioniert hat.
 

Sempervivum

Erfahrenes Mitglied
Etwas anderes gibt mir jedoch zu denken, siehe meine Kommentare im Code:
Code:
        // for ($i = 0; $nr; $i++) {
               // $aktiv ist zunächst ein Array. Hier überschreibst Du
               // jedoch beim ersten Schleifendurchlauf dieses Array
               // mit 0 oder 1. D. h. bei den nächsten Durchläufen handelt
               // es sich nicht mehr um ein Array und auf $aktiv[$i]
               // kann nicht zugegriffen werden:
        //     $aktiv = $aktiv[$i];
        //     var_dump($aktiv);
        // }
        // So funktioniert es:
        for ($i = 0; $i < $nr; $i++) {
            $aktiv2 = $aktiv[$i];
            var_dump($aktiv2);
        }
 

m.scatello

Erfahrenes Mitglied
Hier überschreibst Du jedoch beim ersten Schleifendurchlauf dieses Array mit 0 oder 1. D. h. bei den nächsten Durchläufen handelt es sich nicht mehr um ein Array und auf $aktiv[$i] kann nicht zugegriffen werden:
Genau, und deshalb kann das nicht sein:
Mit "error_reporting" habe ich schon alles durchgecheckt
Das Error-Reporting und Display-Errors nicht aktiviert und einfach nur mal so hier geschrieben.

Es sind ja auch keine Debug-Ausgaben zu sehen.
 

Neue Beiträge