anpera.net https://anpera.dyndns.org/phpbb3/ |
|
Schatzkammer erweiterung https://anpera.dyndns.org/phpbb3/viewtopic.php?f=34&t=5146 |
Seite 1 von 1 |
Autor: | Fleeting20 [ Do 06 Mai, 2010 17:25 ] |
Betreff des Beitrags: | Schatzkammer erweiterung |
Hallo, ich hatte vor die Schatzkammer ein wenig zu erweitern. Und zwar in dem Sinne, dass alle Bewohner (die ein Schlüssel für dieses Haus haben) in einer Spalte mit Namen aufgelistet werden sowie angezeigt wird wieviel Gold/Edelsteine sie eingezahlt haben (Grüner Wert) bzw wieviel sie abgehoben(Wrt in Rot) haben. Habe das jetzt so versucht: $this->bbcode_second_pass_code('', ' //extra gold $sqlgo = "SELECT * FROM hausvermoegen WHERE hausid=".$row[houseid].""; $resultgo = db_query($sqlgo) or die(db_error(LINK)); //ende output("`2`b`c$row[housename] `2(In der Schatzkammer)`c`b`n"); if($row[description]) output("`0`c$row[description]`c`n"); if ($showroomimages) output("<img src='images/house-money1.gif' width='150' height='143' align='right'/>",true); //output("<img src='images/house-money2.gif' width='150' height='126' align='right'/>",true); output("`2Du und deine Mitbewohner haben `^$row[gold]`2 Gold und `#$row[gems]`2 Edelsteine im Haus gelagert.`nEs ist jetzt `^".getgametime()."`2 Uhr.`n`n"); output("<table border='1'>",true); output("<tr class='trhead'><td width='200' align='center'>Bewohnername</td><td width='50' align=center>Gold</td><td width='25' align=center>Edelsteine</td></tr>",true); while($rowgo = db_fetch_assoc($resultgo)){ if ($rowgo[gold]>=0){ $goldlager= "`@".$rowgo[gold].""; }else{ $goldlager= "`\$".$rowgo[gold].""; } if ($rowgo[edelstein]>=0){ $edelsteinlager= "`@".$rowgo[edelstein].""; }else{ $edelsteinlager= "`\$".$rowgo[edelstein].""; } output("<tr><td width='200' align='left'>`2".$rowgo[name]."</td><td width='50' align=right>".$goldlager."</td><td width='25' align=right>".$edelsteinlager."</td></tr>",true); } output("</table>",true);') Meine Tabelle für hausvermoegen sieht so aus: Zitat: `hausid` int(10) NOT NULL, nur gibt er mir in der Tabelle nichts aus `gold` int(10) unsigned NOT NULL, `diamant` int(10) unsigned NOT NULL, `name` varchar(50) NOT NULL, `id` int(10) NOT NULL ![]() Habe auch die stellen wo man einzahlt/auszahlt erweitert doch es tut sich nichts. wo könnte der fehler liegen? |
Autor: | Kevz [ Do 06 Mai, 2010 17:30 ] |
Betreff des Beitrags: | Re: Schatzkammer erweiterung |
Existieren überhaupt Datensätze in der Tabelle??! |
Autor: | Patzue [ Do 06 Mai, 2010 17:36 ] |
Betreff des Beitrags: | Re: Schatzkammer erweiterung |
Gibts das nich schon da sAdd on in ireinem Haussystem? |
Autor: | MySql [ Do 06 Mai, 2010 17:52 ] |
Betreff des Beitrags: | Re: Schatzkammer erweiterung |
*push* Musst Du ggf. abändern. |
Autor: | Welv [ Do 06 Mai, 2010 17:57 ] |
Betreff des Beitrags: | Re: Schatzkammer erweiterung |
Kevz hat geschrieben: Existieren überhaupt Datensätze in der Tabelle??! Ist schon mal ein guter Tipp. Außerdem würde ich: 1. vor while() mit db_num_rows() prüfen ob überhaupt Datensätze übergeben wurden. 2. in der while() Schleife nicht die <td> Tags vergessen, sonst hauts dir die Tabelle zusammen. 3. die Arrayschlüssel in Single Quotes setzen 4. Texte ohne Farbcodes (auch nur HTML wie sowas output("</table>",true);) nur mit rawoutput() ausgeben. |
Autor: | Fleeting20 [ Do 06 Mai, 2010 18:15 ] |
Betreff des Beitrags: | Re: Schatzkammer erweiterung |
Welv hat geschrieben: Kevz hat geschrieben: Existieren überhaupt Datensätze in der Tabelle??! Ist schon mal ein guter Tipp. Außerdem würde ich: 1. vor while() mit db_num_rows() prüfen ob überhaupt Datensätze übergeben wurden. 2. in der while() Schleife nicht die <td> Tags vergessen, sonst hauts dir die Tabelle zusammen. 3. die Arrayschlüssel in Single Quotes setzen 4. Texte ohne Farbcodes (auch nur HTML wie sowas output("</table>",true);) nur mit rawoutput() ausgeben. zu 1: Hat $this->bbcode_second_pass_code('', '//extra gold $sqlgo = "SELECT * FROM hausvermoegen WHERE hausid=".$row[houseid].""; $resultgo = db_query($sqlgo) or die(db_error(LINK)); //ende') nicht den selben Effekt? :O zu 2: müssten sie nicht über der whileschleife stehen? zu 3: Dürften sie eigendlich sein zu 4: Danke für den Tip mit rawoutput. Habe ich mal gemacht. Zitat: Existieren überhaupt Datensätze in der Tabelle??! Also eingetragen wird nichts =( |
Autor: | MySql [ Do 06 Mai, 2010 18:29 ] |
Betreff des Beitrags: | Re: Schatzkammer erweiterung |
Um etwas einzutragen, benötigst Du wiederum einen Query. ![]() $this->bbcode_second_pass_code('', 'INSERT INTO TBL_NAME (TBL_FIELDS) VALUES (FIELD_VALUES);') bzw. $this->bbcode_second_pass_code('', 'db_query('INSERT INTO TBL_NAME (TBL_FIELDS) VALUES (FIELD_VALUES)');') (: |
Autor: | Laserian [ Do 06 Mai, 2010 18:51 ] |
Betreff des Beitrags: | Re: Schatzkammer erweiterung |
Fleeting20 hat geschrieben: Welv hat geschrieben: [...] 3. die Arrayschlüssel in Single Quotes setzen [...] [...] zu 3: Dürften sie eigendlich sein [...] damit sind $row[description] gemeint da fehlen die Single Quotes Bsp.: $row[description] wird zu $row['description'] ![]() |
Autor: | Fleeting20 [ Do 06 Mai, 2010 19:00 ] |
Betreff des Beitrags: | Re: Schatzkammer erweiterung |
Sollte $this->bbcode_second_pass_code('', ' output("`2Du hast `^$amt`2 Gold deponiert. Insgesamt befinden sich jetzt `^$row[gold]`2 Gold im Haus."); $sql="UPDATE houses SET gold=$row[gold] WHERE houseid=$row[houseid]"; db_query($sql)or die(db_error(LINK)); //extra gold $sql = "UPDATE hausvermoegen SET gold=gold+$amt WHERE hausid=".$row[houseid]." AND id=".$session[user][acctid].""; db_query($sql); //ENDE') nicht auch gehen? o0 |
Autor: | Laserian [ Do 06 Mai, 2010 19:10 ] |
Betreff des Beitrags: | Re: Schatzkammer erweiterung |
Mh wenn in der Tabelle hausvermoegen der entsprechende Eintrag schon vorhanden ist geht es ja, wenn das aber nicht der Fall ist muss der Eintrag über einen Insert Befehl erst in die Tabelle eingetragen werden. Wo nichts ist kann man nichts ändern ![]() |
Autor: | Welv [ Do 06 Mai, 2010 20:55 ] |
Betreff des Beitrags: | Re: Schatzkammer erweiterung |
Fleeting20 hat geschrieben: zu 1: Hat $this->bbcode_second_pass_code('', '//extra gold $sqlgo = "SELECT * FROM hausvermoegen WHERE hausid=".$row[houseid].""; $resultgo = db_query($sqlgo) or die(db_error(LINK)); //ende') nicht den selben Effekt? :O Nein. Das query fordert gewisse Daten an, was nicht heißt dass es unter Umständen (zb nix gefunden, da keine Einträge vorhanden sind) keine Daten bekommt, $resultgo also leer ist. Fleeting20 hat geschrieben: zu 2: müssten sie nicht über der whileschleife stehen? Wie die Tabelle aufgebaut wird ist egal, hauptsache sie wird es. Bei dir fehlten nicht nur <td> sondern auch <tr> Tags. Und für den Fall dass keine Daten vorhanden sind, also die schleife nicht funzt, sollten auch noch dementsprechend Tabellen Tags gesetzt werden. Fleeting20 hat geschrieben: zu 3: Dürften sie eigendlich sein Wie bereits gesagt wurde. bla['blub'] nicht bla[blub]. Es sei denn "blub" ist ne Konstante die vorher definiert wurde. zb. definde("quark","blub"); bla['blub'] (Name des Arrayschlüsses in ' gefasst) wäre dann das selbe wie bla[quark] (Konstante die als Wert den Namen des Arrayschlüsses enthällt) Fleeting20 hat geschrieben: Zitat: Existieren überhaupt Datensätze in der Tabelle??! Also eingetragen wird nichts =( Sind keine Daten vorhanden müssen sie erst per INSERT Befehl hineingeschrieben werden. Sind sie doch vorhanden, müssen sie mit UPDATE aktualisiert werden. Wenn du nach $this->bbcode_second_pass_code('', ' $sqlgo = "SELECT * FROM hausvermoegen WHERE hausid=".$row[houseid].""; $resultgo = db_query($sqlgo) or die(db_error(LINK));') die Anzahl der Datensätze mit zb. $datensaetze = db_num_rows($resultgo); prüfst bzw in der Variable $datensaetze speicherst, kannst du diese Variable verwenden um zu sehen ob du INSERT oder UPDATE brauchst. $this->bbcode_second_pass_code('', ' if($datensaetze>0){ UPDATE }else{ INSERT } ') |
Seite 1 von 1 | Alle Zeiten sind UTC + 1 Stunde |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |