anpera.net
https://anpera.dyndns.org/phpbb3/

Schalter - Switch - Code
https://anpera.dyndns.org/phpbb3/viewtopic.php?f=25&t=2582
Seite 1 von 1

Autor:  Steny [ Di 23 Mai, 2006 17:06 ]
Betreff des Beitrags:  Schalter - Switch - Code

Also, wie mache ich einen Schalter bzw. Switch oder wie auch immer man das nennt...
Also hier ein Beispiel:
Man kauft eine Flasche Milch = Schalter "Milch"=ON
Man geht zu einem NPC = IF Schalter "Milch"=ON {"Du hast eine Flasche Milch"}

Wär nett wenn mir das mal jemand kurz erklären könnte.
Ich weis, dass es irgendwas mit [session] zu tun hat... aber ich blick da nicht durch...

Steny

Autor:  Kevz [ Di 23 Mai, 2006 17:53 ]
Betreff des Beitrags: 

Für was soll den der Schalter genau sein? Dies könnte evtl. uns etwas weiter bringen...

Autor:  Eliwood [ Di 23 Mai, 2006 18:11 ]
Betreff des Beitrags:  Re: Schalter - Switch - Code

[php]$milch = false;

if($milch === true) {
print "Du hast Milch";
$milch = false; // "NSC" "nimmt" Milch
} else {
print "Du hast keine Milch, bekommst aber mal welche!";
$milch = true;
}

if($milch === true) {
print "Nun hast du Milch =D";
}[/php]

So gemeint?

Autor:  Steny [ Di 23 Mai, 2006 20:14 ]
Betreff des Beitrags: 

Hm ne funktioniert nicht so richtig... schau dir das bitte mal kurz an:

[php]<?php
require_once "common.php";

$mode = 'op'; // Nur für die Übergabe nötig, sonst frei änderbar;
$file = basename("testing.php"); // Name der Datei;
$ch_day = TRUE; // TRUE = 1; FALSE = 0;
$header = 'Die Testarea'; // Kopftitel

/*
* Jetzt Starten wir das ganze Script und
* überprüfen direkt unsere Einstellungen mit.
*/
if ($ch_day) checkday();
if (empty($_GET[$mode])) $_GET[$mode] = '';
page_header($header);


switch ($_GET[$mode]) {
case 'Milch nehmen':
output('Du bekommst Milch');
$milch = true
addnav('Zurück zur Auswahl', $file);
break;
case 'Milch weggeben':
output('Milch weggegeben.');
$milch = false
addnav('Zurück zur Auswahl', $file);
break;
default:
if($milch === true) {
output("Du hast Milch");
} else {
output("Du hast keine Milch, bekommst aber mal welche!");
}
addnav("Milch nehmen","$file?$mode=Milch nehmen");
addnav("Milch weggeben","$file?$mode=Milch weggeben");
}

addnav("Optionen");
addnav("Zurück zur Grotte","superuser.php");

page_footer();
?>[/php]

Tja, das ist mein Event... ich hab sicher was falsch gemacht, denn es kommt immer sowas in der Art:

Parse error: parse error, unexpected T_STRING in /var/www/vhosts/granatenforum.com/httpdocs/LOTGD/testing.php on line 22

Und wenn ich den Code direkt eingebe:

[php]<?php
require_once "common.php";

$mode = 'op'; // Nur für die Übergabe nötig, sonst frei änderbar;
$file = basename("testing.php"); // Name der Datei;
$ch_day = TRUE; // TRUE = 1; FALSE = 0;
$header = 'Die Testarea'; // Kopftitel

/*
* Jetzt Starten wir das ganze Script und
* überprüfen direkt unsere Einstellungen mit.
*/
if ($ch_day) checkday();
if (empty($_GET[$mode])) $_GET[$mode] = '';
page_header($header);

$milch = false;

if($milch === true) {
output("Du hast Milch");
$milch = false; // "NSC" "nimmt" Milch
} else {
output("Du hast keine Milch, bekommst aber mal welche!");
$milch = true;
}

if($milch === true) {
output("Nun hast du Milch =D");
}

addnav("Optionen");
addnav("Zurück zur Grotte","superuser.php");

page_footer();
?>[/php]

Kommt einfach:

Du hast keine Milch, bekommst aber mal welche! Nun hast du Milch =D

Hm... was mach ich falsch?

Steny, am verzweifeln.

Autor:  Eliwood [ Di 23 Mai, 2006 20:20 ]
Betreff des Beitrags: 

[php]<?php
require_once "common.php";

$mode = 'op'; // Nur für die Übergabe nötig, sonst frei änderbar;
$file = basename("testing.php"); // Name der Datei;
$ch_day = TRUE; // TRUE = 1; FALSE = 0;
$header = 'Die Testarea'; // Kopftitel

/*
* Jetzt Starten wir das ganze Script und
* überprüfen direkt unsere Einstellungen mit.
*/
if ($ch_day) checkday();
if (empty($_GET[$mode])) $_GET[$mode] = '';
page_header($header);


switch ($_GET[$mode]) {
case 'Milch nehmen':
case 'Milch%20nehmen':
output('Du bekommst Milch');
$milch = true; // Fehlte Semikolon
addnav('Zurück zur Auswahl', $file);
break;
case 'Milch weggeben':
case 'Milch&20nehmen':
output('Milch weggegeben.');
$milch = false; // Fehlte Semikolon
addnav('Zurück zur Auswahl', $file);
break;
default:
if($milch === true) {
output("Du hast Milch");
} else {
output("Du hast keine Milch, bekommst aber mal welche!");
}
addnav("Milch nehmen","$file?$mode=Milch nehmen");
addnav("Milch weggeben","$file?$mode=Milch weggeben");
}

addnav("Optionen");
addnav("Zurück zur Grotte","superuser.php");

page_footer();
?>[/php]

So. Nun aber seh ich dass du das nun völlig anders meinst wie ich gedacht hab... Du müsstest anstatt $milch schreiben:

$session['milch'] um die Milch für die Zeit der "Sitzung" zu speichern.

Autor:  Auric [ Di 23 Mai, 2006 20:23 ]
Betreff des Beitrags: 

natürlich kann das nicht gehen, da $milch von einem Seitenaufruf zum anderen nicht übergeben wird. Wenn du willst, das es länger gespeichert wird, solltest du ein neues Feld in der `accounts` Tabelle der Datenbank anlegen. Dann kannst du beispielsweise per $session['user']['milch'] darauf zugreifen. LotgD handelt die Übergabe und Datenbankverwaltung schon für dich, du musst also nur die entsprechenden Daten ins $session['user'] - Array packen. Das entsprechende Feld (in diesem Falle ['milch']) muss allerdings bereits in de Datenbank existieren, sonst geht's nicht.

Viel Erfolg!

Auric :wink:

Autor:  Steny [ Di 23 Mai, 2006 20:33 ]
Betreff des Beitrags: 

Also muss ich jeden "Schalter" in die Datenbank eintragen?
Das kann nicht sein... ich nutzt die Schalter als ON-OFF Elemente und nicht als Werte (2 Einheiten, 6 Einheiten, usw.)

Ich probier jetzt mal das mit dem session (hab mir schon sowas in die Richtung gedacht)

Danke schonmal für die schnelle Hilfe =)

EDIT:
Ahh, jetzt klappts. Also mit [session] davor klappts genauso wie ich es wollte. Vielen danke, dannach hab ich jetzt schon sehr lang gesucht (Kommt mir so dumm vor wenn man weis wie es geht ^^)

Aber noch ne Frage: Überdauert dieses Element auch einen neuen Tag? Oder einen DK?
Also wenn ich Milch hab, hab ich die dann auch noch am nächsten Tag (oder sogar nach nem DK?)

Steny

Autor:  Auric [ Di 23 Mai, 2006 21:10 ]
Betreff des Beitrags: 

Den Tag: Ja
Den DK: Nein

Jeweils im Normalzustand - wenn du es anders haben willst sehe einfach ind er dragon.php oder newday.php nach. Dort werden die Werte entsprechen zurückgesetzt oder davor bewahrt.

In der Newady z.B:
$session['user']['seenbar']=0;
In der dragon.php z.B: ( ZWEI MAL!!!)
,"name"=>1

Auric
:wink:

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/