2016-05-02 12 views
0

Ich habe ein Problem mit etwas PHP-Code. Grundsätzlich habe ich ein Array von ID-Werten, $challengeIDs, und einen Wert $number, der die aktuelle Position in diesem Array speichert (es beeinflusst, welche Seite in den Körper geladen wird). Ich möchte überprüfen, dass ich das Ende des Arrays nicht erreicht habe, bevor ich zum nächsten ID-Wert gehe.PHP, wenn die Bedingung nicht korrekt auswertet

if (($number+1) < (count($challengeIDs)-1)) { 
    $n = $number+1; 
    echo "window.location = './challenge.php?n={$n}';"; 
} else { 
    $_SESSION['n'] = 0; 
    $_SESSION['playlist'] = ""; 
    echo "window.location = './index.php';";    
} 
echo "});}</script>"; 

Ich habe legte eine console.log() Aussage unmittelbar über diesem Code-Schnipsel, die berichtet, dass der Wert von $number 1 und count($challengeIDs) 4. ist aber aus irgendeinem Grund die Seite wird eher auf index.php, als sich auf die nächste Seite in der Liste. Es kann an anderer Stelle im Code sein, aber irgendwelche Ideen? Alles Vorschläge werden dankbar empfangen :)

EDIT: Hier ist der Konsolenausgang. Die Werte geben die Zeile vor diesem Snippet aus, und die Seite ändert sich entsprechend dem Wert. Es funktioniert kein Problem von Seite 1 (n = 0) bis Seite 2 (n = 1), aber scheitert und geht zu index.php geht zur Seite 3 (n = 2).

Screenshot of console

LÖSUNG: Ended bis es ausarbeitet - sorry Jungs, es wurde zu diesem Code überhaupt nicht verwandt. Es gab eine Überprüfung an anderer Stelle, bei der die Werte aufgrund eines GET-Parameters falsch zurückgesetzt wurden.

+0

Warum kombinieren Sie PHP und JS auf diese Weise? Sie sollten PHP Header-Funktion verwenden. –

+1

'console.log()' ist JS nicht PHP ?! – Rizier123

+0

@JayBlanchard Ich mache das, weil ich das Skript brauche, um einige Werte aus der Session cookie/sessionStorage zu übernehmen. Ich baue das ganze Skript auf der Seite mit PHP - ich konnte in diesem Fall keine andere Problemumgehung finden. – Brae

Antwort

1

Das mag dumm klingen, aber ich glaube, Sie die falsche Verwendung werden, wenn Klausel Im Code I

if (($number+1) < (count($challengeIDs)-1)) { 

sehen und Sie schrieb, dass

count ($ challengeIDs) 4 So.

wenn Seite 3 (n = 2), wo es ist Ihr Problem, es geht an die else-Klausel, weil

if (($number+1) < (count($challengeIDs)-1)) 

bedeutet

if ((2+1) < (4-1)) 

und 3 nicht weniger als 3 ist also die if-Klausel ändern.

+0

Weil das PHP auf die Seite druckt, nicht wirklich die Weiterleitung selbst, das ist, was zu geschehen ist.Wenn es auf Seite 3 ist, wird die JavaScript save() - Funktion im angezeigten Code erstellt geschrieben, um es zur index.php zu bringen, nicht zur nächsten Herausforderung, aber das passiert nur, wenn die Speicherfunktion aufgerufen wird, nicht wenn PHP ausgeführt wird Ich habe das Problem jetzt gelöst Danke für den Versuch g um zu helfen - kein blöder Punkt überhaupt - ich verbrachte eine lange Zeit damit, diese Werte zu überprüfen und zu überprüfen, für den Fall, dass ich verwirrt wurde oder die Ausführungszeiten für die PHP/Js zu unerwarteten Zeiten stattfanden – Brae

Verwandte Themen