anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: So 15 Jun, 2025 20:55

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Array in der Datenbank
BeitragVerfasst: Fr 06 Okt, 2006 17:55 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
So... Ich habe eine kleine Frage...

Ich bin momentan an einem kleinen Skript und würde nun gerne wissen wieso das folgende nicht funktioniert (oder beziehungsweise ob es überhaupt funktionieren könnte).

[php]<?php
require_once "common.php";
addcommentary();
page_header("Saal der Attribute");

if($session['user']['attribut']){



switch ($_GET['op']){

case '':
output('Erst einmal probeweise etwas Text...`n`n`n`n');
viewcommentary("attribut","`nVorschlag:",15,"schlägt vor");
addnav("Momentane Werte","attribut.php?op=werte");
addnav("Attribute verbessern","attribut.php?op=train");
addnav("Zurück");
addnav("Zurück","superuser.php");
break;


case werte:
rawoutput("Stärke: ".$session['user']['attribut']['stärke']."/100 ".grafbar(100,$session['user']['attribut']['stärke'])." <br>");
rawoutput("Geschicklichkeit: ".$session['user']['attribut']['geschicklichkeit']."/100 ".grafbar(100,$session['user']['attribut']['geschicklichkeit'])." <br>");
rawoutput("Geschwindigkeit: ".$session['user']['attribut']['geschwindigkeit']."/100 ".grafbar(100,$session['user']['attribut']['geschwindigkeit'])." <br>");
addnav("Zurück");
addnav("Zurück","attribut.php");
break;


case train:
addnav("Verbessern");
addnav("Stärke trainieren","attribut.php?op=staerke");
addnav("Geschicklichkeit trainieren","attribut.php?op=geschicklichkeit");
addnav("Geschwindigkeit trainieren","attribut.php?op=geschwindigkeit");
addnav("Zurück");
addnav("Zurück","attribut.php");
break;


case staerke:
output("Du willst also wirklich deine Stärke verbessern? Es würde dich `^5000 Gold `0 kosten. Falls du dich so entscheiden solltest, kannst du dort in jenen Raum gehen. Dort wirst du für einige Runden trainieren können.");
addnav("Trainieren","attribut.php?op=raumst");
addnav("Zurück");
addnav("Etwas anderes wählen","attribut.php?op=train");
break;


case geschicklichkeit:
output("Du willst also wirklich deine Geschicklichkeit verbessern? Es würde dich `^5000 Gold `0 kosten. Falls du dich so entscheiden solltest, kannst du dort in jenen Raum gehen. Dort wirst du für einige Runden trainieren können.");
addnav("Trainieren","attribut.php?op=raumge");
addnav("Zurück");
addnav("Etwas anderes wählen","attribut.php?op=train");
break;


case geschwindigkeit:
output("Du willst also wirklich deine Geschwindigkeit verbessern? Es würde dich `^5000 Gold `0 kosten. Falls du dich so entscheiden solltest, kannst du dort in jenen Raum gehen. Dort wirst du für einige Runden trainieren können.");
addnav("Trainieren","attribut.php?op=raumgeschw");
addnav("Zurück");
addnav("Etwas anderes wählen","attribut.php?op=train");
break;


case raumst:
if ($session['user']['gold']<5000 || $session['user']['turns']<3){
output("Du willst soeben den Raum betreten, doch wird dir der Eintritt verwehrt... Du hast wohl nicht genug Gold dabei, ode rdann scheinst du den Wächtern einfach zu erschöpft zu sein. Leise seufzend drehst du dich wieder um.");
} else{
output("Du kommst in einen grossen Raum. Sofort wirst du aufgehalten. Doch drückst du den Wächtern die verlangten `^5000 Gold `0 in die Hand und so lassen sie dich unbeschadet passieren. Rings um dich herum befinden sich auch andere Krieger, welche sich den verschiedensten Arten von Training widmen... Einige hantieren mit Hanteln, andere werfen Bälle in die Luft oder rennen schnellst möglich umher.`n`n
Und beinahe sofort kommt ein Betreuer auf dich zu der dir sagt, dass er bereits instruiert worden sei und dir helfen werde, deine Stärke zu verbessern.
`nDu nickst nur und folgst ihm zu den angedeuteten Gerätschaften. Ebenfalls zeigt er dir einige Übungen, die auch hilfreich sein könnten. Nach einer Weile lässt er dich dann auch alleine und du beginnst höchstmotiviert dein Training. Erst ganze 3 Stunden später hörst du wieder auf. Das ganze hat dich ziemlich müde gemacht, doch hat es sich auch gelohnt, du meinst die Veränderung bereits richtig zu fühlen.
Verschwitzt, doch wirklich zufrieden verlässt du den Raum langsam wieder.
");
$session['user']['gold']-=5000;
$session['user']['attribut']['stärke']++;
$session['user']['turns']-=3;
}
addnav("Zurück");
addnav("Zurück","attribut.php");
break;


case raumge:
if ($session['user']['gold']<5000 || $session['user']['turns']<3){
output("Du willst soeben den Raum betreten, doch wird dir der Eintritt verwehrt... Du hast wohl nicht genug Gold dabei, ode rdann scheinst du den Wächtern einfach zu erschöpft zu sein. Leise seufzend drehst du dich wieder um.");
} else{
output("Du kommst in einen grossen Raum. Sofort wirst du aufgehalten. Doch drückst du den Wächtern die verlangten `^5000 Gold `0 in die Hand und so lassen sie dich unbeschadet passieren. Rings um dich herum befinden sich auch andere Krieger, welche sich den verschiedensten Arten von Training widmen... Einige hantieren mit Hanteln, andere werfen Bälle in die Luft oder rennen schnellst möglich umher.`n`n
Und beinahe sofort kommt ein Betreuer auf dich zu der dir sagt, dass er bereits instruiert worden sei und dir helfen werde, deine Geschicklichkeit zu verbessern
`nDu nickst nur und folgst ihm zu den angedeuteten Gerätschaften. Ebenfalls zeigt er dir einige Übungen, die auch hilfreich sein könnten. Nach einer Weile lässt er dich dann auch alleine und du beginnst höchstmotiviert dein Training. Erst ganze 3 Stunden später hörst du wieder auf. Das ganze hat dich ziemlich müde gemacht, doch hat es sich auch gelohnt, du meinst die Veränderung bereits richtig zu fühlen.
Verschwitzt, doch wirklich zufrieden verlässt du den Raum langsam wieder.
");
$session['user']['gold']-=5000;
$session['user']['attribut']['geschicklichkeit']++;
$session['user']['turns']-=3;
}
addnav("Zurück");
addnav("Zurück","attribut.php");
break;


case raumgeschw:
if ($session['user']['gold']<5000 || $session['user']['turns']<3){
output("Du willst soeben den Raum betreten, doch wird dir der Eintritt verwehrt... Du hast wohl nicht genug Gold dabei, ode rdann scheinst du den Wächtern einfach zu erschöpft zu sein. Leise seufzend drehst du dich wieder um.");
} else{
output("Du kommst in einen grossen Raum. Sofort wirst du aufgehalten. Doch drückst du den Wächtern die verlangten `^5000 Gold `0 in die Hand und so lassen sie dich unbeschadet passieren. Rings um dich herum befinden sich auch andere Krieger, welche sich den verschiedensten Arten von Training widmen... Einige hantieren mit Hanteln, andere werfen Bälle in die Luft oder rennen schnellst möglich umher.`n`n
Und beinahe sofort kommt ein Betreuer auf dich zu der dir sagt, dass er bereits instruiert worden sei und dir helfen werde, deine Geschwindigkeit zu erhöhen
`nDu nickst nur und folgst ihm zu den angedeuteten Gerätschaften. Ebenfalls zeigt er dir einige Übungen, die auch hilfreich sein könnten. Nach einer Weile lässt er dich dann auch alleine und du beginnst höchstmotiviert dein Training. Erst ganze 3 Stunden später hörst du wieder auf. Das ganze hat dich ziemlich müde gemacht, doch hat es sich auch gelohnt, du meinst die Veränderung bereits richtig zu fühlen.
Verschwitzt, doch wirklich zufrieden verlässt du den Raum langsam wieder.
");
$session['user']['gold']-=5000;
$session['user']['attribut']['geschwindigkeit']++;
$session['user']['turns']-=3;
}
addnav("Zurück");
addnav("Zurück","attribut.php");
break;
}
}else{
$session['user']['attribut'] = array('stärke', 'geschicklichkeit', 'geschwindigkeit');
redirect('attribut.php');
}
page_footer();
?>
[/php]


Was ich will ist wohl klar, und zwar dass die Fähigkeiten in einem Array im DB-Feld attribut gespeichert werden (Text, not null).

Die Fehlermeldung (wenn der Wert erhöht werden sollte) ist folgende

$this->bbcode_second_pass_code('', 'Fatal error: Cannot increment/decrement overloaded objects nor string offsets in /home/www/web267/html/logd/attribut.php on line 224')

Falls jemand ne Idee hat wäre ich sehr froh, wenn dieser jemand mir diese auch mitteilen könnte ;-)

Bis anhin
Harthas


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr 06 Okt, 2006 18:04 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
1. Für case werte: solltest du gehängt werden. Das sind Strings, keine Konstanten!

case "werte":
Für jedes mal. Und wehe, ich seh sowas nochmal... :P

2. 224 Zeilen? Ich hab 123 im Editor. Da stimmt was nicht.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr 06 Okt, 2006 18:06 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
mist :-D

Hab die " oder ' vergessen :-D

Und wegen den Zeilen...
Habe oben etwas weggenommen...(Copyright und einige kleine Einbauanleitungszeilen, hierfür wohl unwichtig)
Die fehlermeldung kommt allerdings immer wenn es so verwendet wird

[php]$session['user']['attribut']['stärke']++; [/php]


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr 06 Okt, 2006 18:37 
Offline
Freak
Freak
Benutzeravatar

Registriert: Mi 06 Jul, 2005 19:10
Beiträge: 543
Wohnort: Bremen
Geschlecht: Männlich
LoGD: http://my-logd.com/motwd
wie wäre das?

[php]
$attribut = unserialize($session['user']['attribut']);
$attribut['stärke'] += 10;
//der rest vom code.....
//und wenn du fertig bist das hier:
$session['user']['attribut'] = serialize($attribut);
[/php]

_________________
Das schwarze Schaf der LotGD-Community, 2. platzierter, beim Giga.de Homepage-Award 2007 und 1. platzierter beim German Web Award 2008.
PC-ACTION meint: "Sehr gut" für MotWD!
Mind of the White Dragon => http://my-logd.com/motwd


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr 06 Okt, 2006 18:48 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
Ja, ich danke dir vielmals, so klappts genau wie es soll. *g*


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 20 Nov, 2006 11:33 
Offline
Lehrling
Lehrling

Registriert: Sa 28 Okt, 2006 00:43
Beiträge: 44
LoGD: http://www.logd.wing-clan.de/
sorry, dass ich diesen älteren Thread noch mal aufgreife, aber passt zu dem Thema (da auch Harthas mir mit dem Hinweis auf serialize und unserialize im Thread: Das Spiel im Spiel
geholfen hat)

Ich würde gerne einen Array in eine andere Tabelle schreiben, anstatt in die accounts tabelle. Also die Zuweisung:

$this->bbcode_second_pass_code('', '$building = array(1 => array("A",10,2,3,55,usw.));

Tabelle: kf_settings, Feld: building = serialize($building);')

Wie sähe das aus? Nächste Frage wäre dann, wie man das auch wieder mit unserialize aus einer anderen Tabelle ausliesst *gg*

An der Frage sieht man, dass da SQL und PHP technisch noch ne Menge Fragezeichen sind ;)

Nachtrag: Hat sich erledigt. Hatte nur einen Knoten im Hirn ;) UPDATE bzw. INSERT hat nicht funktioniert, da ich die ' vergessen habe.... bei den Values. Anscheinend..


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 12 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum