2017-10-31 11 views
-1

Ich werde dies kurz halten, um nicht zu viel von Ihrem Tag zu nehmen, aber ich arbeite seit einiger Zeit an einem bestimmten Projekt in PHP, und ich bin endlich zu Ende darauf. Allerdings scheint es mir schwer zu fallen, dieses Konzept der globalen Variablen zu verstehen und es erfolgreich so zu nutzen, wie ich es möchte, und ich bin nicht ganz sicher, warum.Globale Variable Capture und Mathematik in PHP

Mein Programm im Wesentlichen Folgendes aus:

  • nimmt in einem Bündel von IDs und bilden Gruppen
  • eine Seite für sie schafft, die einen Bericht über alle Informationen verfügt, ermöglicht zum Herunterladen einmal eine Taste gedrückt wird
  • Nimmt die Gesamtströme des Elements auf, wenn die Schaltfläche gedrückt wird, und übersetzt diese in die globale Variable, die nun eine andere Option auf der Seite definiert (Elementänderung seit letztem Bericht) und den daraus resultierenden Gesamtwert subtrahiert

Einige Beispiele für meinen Code von der Seite Definition Start

$GLOBALS['TheDifference']; //defines the variable for later use 

Auf den tatsächlichen Beobachtungs Seiten für die Gruppen, beachten Sie diese Aussage in einer foreach, so wird es wiederholt jedes Mal für jede Gruppe beginnend

 $MemberDifference; 
     if ($MemberDifference == 0) { 
       $MemberDifference = $FailureMessage; 
     } 
//the above will be blank at first due to nothing being in it 
     $pastmembers = $GLOBALS['TheDifference']; 
     if ($pastmembers == 0) { 
      $pastmembers = $TotalMembers; 
     } 
//this activates when the variable becomes filled 
     $MemberDifference = $pastmembers - $TotalMembers; 

Und schließlich, wenn der Knopf auf den Berichtsseite geklickt werden:

$GLOBALS['TheDifference'] = $TotalMembers; 

das Problem ist, Im Wesentlichen sind meine MemberDifference-Variablen immer 0, und sie scheinen nicht so zu speichern, wie ich hoffe, sie sollten (aus dem Code direkt darüber wird 0 zu dem, was diese Variable ist, was dann dazu führt, dass die neuen TotalMembers von PastMembers subtrahiert werden).

Ich hoffe ich habe das meistens erklärt, vielleicht sogar mit zu vielen Informationen. PHP ist nicht meine beste Sprache und während ich fühle, dass ich etwas sehr einfaches verpasse, kann ich nicht für das Leben von mir meinen Kopf darum wickeln.

Vielen Dank im Voraus!

* Bearbeiten, der Grund, warum ich globale Variablen brauche, ist, weil dieses Programm im Wesentlichen über viele verschiedene Seiten läuft, mindestens 5 insgesamt, und die globalen Variablen sind die einzigen, die ich wirklich als eine Möglichkeit kenne. Wenn es einen besseren Weg gibt, lass es mich wissen!

+0

Versuchen Sie, Ihre Variablen auf dem Weg auszublenden, um zu sehen, auf was sie eingestellt sind. – aynber

+1

Wie ich verstehe, übergeben Sie '$ TotalMembers' an' $ pasmitmembers' und versuchen Sie dann '$ pasmitmembers - $ TotalMembers'. Hier sind Ihre "$ TotalMembers" und "$ Pasmembers" gleich. Thats, warum es 0 zeigt. Für globale Variable können Sie Sitzung für einfacheren Weg verwenden. – Vivek

+0

Wenn globale Variablen so funktionieren, wie Sie es erwarten, würde jeder Besucher Ihrer Site dieselbe globale Variable verwenden. Sicher nicht, was du willst. – deceze

Antwort

2

So funktionieren Webseiten nicht, wenn die Seite geladen ist, ist das Skript auf dem Server bereits beendet und Ihre Variablen wurden entfernt.

Wenn Sie den Status beibehalten möchten, sollten Sie keine globalen Variablen verwenden (Sie brauchen diese übrigens nicht ...), sondern eine Sitzung oder eine Datenbank.

Um eine Sitzung zu verwenden, müssen Sie jedes Skript mit session_start(); starten und dann können Sie das $_SESSION Array verwenden, um Ihre Daten zu speichern.

+1

Ich sehe! Ich werde es ausprobieren und sehen, wie es funktioniert, danke für die schnelle Antwort! – Twitchy

+0

Das ist eigentlich genau das, was ich suche! Eine letzte Frage, wenn Sie vielleicht wissen, wie würde ich dieses $ _SESSION-Array verwenden, um die meisten Dinge in einer foreach zu tun, um unterschiedlich auf jede Gruppe anzuwenden? – Twitchy

+0

@Twitchy Ich bin mir nicht sicher, was Sie meinen, es ist ein Array und Sie können es organisieren, wie Sie brauchen. Sie können also mehrere Ebenen verwenden, um Informationen zu gruppieren und Abschnitte zu durchlaufen. – jeroen

0

Es scheint, dass Sie versuchen, Informationen über einen Besucher über mehrere Besuche hinweg zu erhalten. (Zwei Seiten stellen zwei Besuche gemäß HTTP-Semantik dar.) In diesem Fall wäre eine gute Lösung, die PHP Session zu lernen und zu verwenden.

Gemeinsame Summen müssen eine Art persistenten Speicher wie Dateien oder eine SQL-Datenbank verwenden.