anpera.net https://anpera.homeip.net/phpbb3/ |
|
Schandesliste https://anpera.homeip.net/phpbb3/viewtopic.php?f=34&t=989 |
Seite 1 von 2 |
Autor: | Scartha [ Sa 19 Feb, 2005 10:56 ] |
Betreff des Beitrags: | Schandesliste |
Zitat: SELECT count(shame.acctid) AS c FROM accounts, shame WHERE shame.acctid=accounts.acctid AND ( stolengold > 0 OR stolengems > 0 )
Column: 'stolengold' in where clause is ambiguous Diese Meldung bekomme ich aufeinmal, wenn ich jetzt auf die Schandesliste zugreifen will. Ich nehm an das ich was in der DB ändern muss, aber weiss nit genau was... Vorschlag ? Kiitos |
Autor: | Kevz [ Sa 19 Feb, 2005 10:59 ] |
Betreff des Beitrags: | |
[php]SELECT count(shame.acctid) AS c FROM accounts, shame WHERE shame.acctid=accounts.acctid AND ( stolengold > 0 OR stolengems > 0 ) Column: 'stolengold' in where clause is ambiguous[/php] Was soll das denn bringen: [php]FROM accounts, shame[/php] Ich denke wohl kaum das dass hinhaut, es klar ist das dann ein fehler kommt weil du dort einfach 2 dbs abfragst...aber nur in einer reinkannst so... Du musst es mit LEFT JOIN versuchen, so müsste es eig. gehn |
Autor: | Scartha [ Sa 19 Feb, 2005 11:01 ] |
Betreff des Beitrags: | |
Ja, aber warum ging es bisher denn immer, dass versteh ich nit... |
Autor: | Kevz [ Sa 19 Feb, 2005 11:10 ] |
Betreff des Beitrags: | |
Weil dort evtl. LEFT JOIN oder INNER JOIN vorhanden war? |
Autor: | Scartha [ Sa 19 Feb, 2005 11:13 ] |
Betreff des Beitrags: | |
Kevz hat geschrieben: Weil dort evtl. LEFT JOIN oder INNER JOIN vorhanden war?
Nein eben nicht, ich hab daran gar nichts verändert, des war immer so, es kommt mir so vor als wenn mehrere SPieler jetzt grössere Mengen erbeutet haben und des jetzt nimmer angezeigt wird, aber des ist unlogisch eigendlich.... |
Autor: | Kevz [ Sa 19 Feb, 2005 11:56 ] |
Betreff des Beitrags: | |
Des is ja auch egal, wieviele wieviel erbeutet haben^^, das spielt keine rolle... Versuch es mal so: [php]SELECT count(shame.acctid) AS c FROM accounts, shame WHERE shame.acctid=accounts.acctid AND ( accounts.stolengold > 0 OR accounts.stolengems > 0 ) [/php] |
Autor: | Scartha [ Sa 19 Feb, 2005 11:58 ] |
Betreff des Beitrags: | |
Ja sag ich ja.. Aber erklär mir mal, wieso es vorher ging und jetzt nimmer ?!? |
Autor: | Kevz [ Sa 19 Feb, 2005 11:59 ] |
Betreff des Beitrags: | |
Kevz hat geschrieben: Des is ja auch egal, wieviele wieviel erbeutet haben^^, das spielt keine rolle...
Versuch es mal so: [php]SELECT count(shame.acctid) AS c FROM accounts, shame WHERE shame.acctid=accounts.acctid AND ( accounts.stolengold > 0 OR accounts.stolengems > 0 ) [/php] guck ma da^^ bzw versuch es mal so |
Autor: | Scartha [ Sa 19 Feb, 2005 12:05 ] |
Betreff des Beitrags: | |
[php]SELECT count(shame.acctid) AS c FROM accounts, shame WHERE shame.acctid=accounts.acctid AND ( accounts.stolengold > 0 OR accounts.stolengems > 0 ) Unknown column 'accounts.stolengems' in 'where clause'[/php] kann ja nit gehn :p[/php] so denkt er die Tabelle heisst so... |
Autor: | Kevz [ Sa 19 Feb, 2005 12:11 ] |
Betreff des Beitrags: | |
hrhr stimmt woher hast du denn dieses bsp, damit man evtl. gucken könnte |
Autor: | Scartha [ Sa 19 Feb, 2005 12:13 ] |
Betreff des Beitrags: | |
von meinem Server ? oder was meinst jetzt ? http://www.scartha.info einlogen, rathhaus, dann Hallen der Schande.... |
Autor: | Kevz [ Sa 19 Feb, 2005 12:23 ] |
Betreff des Beitrags: | |
hm, hast du irgendeine standart datei wo dies vorhanden ist??? Also so art bsp, wo du das her hast |
Autor: | Meteora [ Sa 19 Feb, 2005 12:28 ] |
Betreff des Beitrags: | |
einfach mal so von Rabenthal geklaut is das |
Autor: | Scartha [ Sa 19 Feb, 2005 12:30 ] |
Betreff des Beitrags: | |
Meteora hat geschrieben: einfach mal so von Rabenthal geklaut is das
Nein, von dort nicht! Ausserdem frage ich vorher IMMER an ob ich was haben darf ![]() |
Autor: | Scartha [ Sa 19 Feb, 2005 12:32 ] |
Betreff des Beitrags: | |
[php]<? ############################################################################# # Chance History: # # 27.09.2004/beleggrodion: adding this History # # 27.09.2004/beleggrodion: Ratshaus Link # ############################################################################# // Galerie der Schande // based upon: // New Hall of Fame features by anpera // http://www.anpera.net/forum/viewforum.php?f=27 // with modifications from centralserver for 0.9.8; re-imported to 0.9.7 // with modifications by gargamel @ http://www.rabenthal.de require_once "common.php"; page_header("Halle der Schande"); checkday(); $op = "burglary"; if ($_GET['op']) $op = $_GET['op']; $subop = "shame"; if ($_GET['subop']) $subop = $_GET['subop']; $sql = "SELECT count(shame.acctid) AS c FROM accounts, shame WHERE shame.acctid=accounts.acctid AND burglary > 0"; $sql2 = "SELECT count(shame.acctid) AS c FROM accounts, shame WHERE shame.acctid=accounts.acctid AND ( accounts.stolengold > 0 OR accounts.stolengems > 0 )"; //if ($op == "kills") { // $sql = "SELECT count(acctid) AS c FROM accounts WHERE locked=0 AND dragonkills>0"; //} elseif ($op == "days") { // $sql = "SELECT count(acctid) AS c FROM accounts WHERE locked=0 AND dragonkills>0 AND bestdragonage>0"; //} if ($_GET[op]=="burglary") { $result = db_query($sql); $row = db_fetch_assoc($result); $totalplayers = $row['c']; $playersperpage = 20; } else { $result = db_query($sql2); $row = db_fetch_assoc($result); $totalplayers = $row['c']; $playersperpage = 20; } $page = 1; if ($_GET['page']) $page = (int)$_GET['page']; $pageoffset = $page; if ($pageoffset > 0) $pageoffset--; $pageoffset *= $playersperpage; $from = $pageoffset+1; $to = min($pageoffset+$playersperpage, $totalplayers); $limit = "$pageoffset,$playersperpage"; if ($_GET[op]==""){ output("`nAngewiedert schaust Du Dich in der Galerie der Schande um. In diesem etwas heruntergekommenen Raum wirst Du über die Schandtaten informiert, die sich die Bewohner von Lahra bereits geleistet haben.`n `9Schnell merkst Du, dass dies hier wirklich keine Bestenliste ist!`0"); } addnav("Schandregister"); addnav("angeprangerte Einbrüche", "shamelist.php?op=burglary&subop=$subop&page=1"); addnav("Diebeskarrieren", "shamelist.php?op=career&subop=$subop&page=1"); addnav("Gold-Diebstahl", "shamelist.php?op=biggold&subop=$subop&page=1"); addnav("Edelstein-Klau", "shamelist.php?op=biggem&subop=$subop&page=1"); if ($_GET[op]=="career") { addnav("Sortieren nach"); addnav("Gold", "shamelist.php?op=$op&subop=gold&page=$page"); addnav("Edelsteine", "shamelist.php?op=$op&subop=gem&page=$page"); } if ($_GET[op]!="") { addnav("Seiten"); for($i = 0; $i < $totalplayers; $i+= $playersperpage) { $pnum = ($i/$playersperpage+1); $min = ($i+1); $max = min($i+$playersperpage,$totalplayers); addnav("Seite $pnum ($min-$max)", "shamelist.php?op=$op&subop=$subop&page=$pnum"); } } addnav("Sonstiges"); if ($session[user][alive]){ addnav("Zurück zur Wartehalle","rathaus.php"); //addnav("Zurück zum Dorf","village.php"); }else{ addnav("Zurück zu den Schatten","shades.php"); } function display_table($title, $sql, $none=false, $foot=false, $data_header=false, $tag=false){ global $session, $from, $to, $page; output("`c`b`^$title`0`b `7(Seite $page: $from-$to)`0`c`n"); output('<table cellspacing="0" cellpadding="2" align="center"><tr class="trhead">',true); output("<td>`bRang`b</td><td>`bName`b</td>", true); if ($data_header !== false) { for ($i = 0; $i < count($data_header); $i++) { output("<td>`b".$data_header[$i]."`b</td>", true); } } $result = db_query($sql) or die(db_error(LINK)); if (db_num_rows($result)==0){ $size = ($data_header === false) ? 2 : 2+count($data_header); #echo $size; if ($none === false) $none = "Keine Spieler gefunden"; output('<tr class="trlight"><td colspan="'. $size .'" align="center">`&' . $none .'`0</td></tr>',true); } else { for ($i=0;$i<db_num_rows($result);$i++){ $row = db_fetch_assoc($result); if ($row[name]==$session[user][name]){ //output("<tr class='hilight'>",true); output("<tr bgcolor='#005500'>",true); } else { output('<tr class="'.($i%2?"trlight":"trdark").'">',true); } output("<td>".($i+$from).".</td><td>`&{$row[name]}`0</td>",true); if ($data_header !== false) { for ($j = 0; $j < count($data_header); $j++) { $id = "data" . ($j+1); $val = $row[$id]; if ($tag !== false) $val = $val . " " . $tag[$j]; if ($tag == "lastjailtime") { $val = substr($val,5,3).". Tag ".substr($val,0,4); } output("<td align='right'>$val</td>",true); } } output("</tr>",true); } } output("</table>", true); if ($foot !== false) output("`n`c$foot`c"); } $order = "DESC"; if ($_GET[subop] == "honor") $order = "ASC"; if ($_GET[op]=="burglary"){ $sql = "SELECT name, burglary AS data1 FROM accounts, shame WHERE shame.acctid=accounts.acctid AND burglary > 0 ORDER BY burglary $order LIMIT $limit"; $adverb = "meist-geprangerten"; if ($_GET[subop] == "honor") $adverb = "wenig-geprangerten"; $title = "Die $adverb Einbrecher in diesem Land"; $foot = "Seit dem 259. Tag des Jahres 1002"; $headers = array("angeprangerte Einbrüche"); display_table($title, $sql, false, $foot, $headers, false); } if ($_GET[op]=="career"){ $sort = $_GET[subop]; if ( $sort == 'gem' ) { $sql = "SELECT name, stolengold AS data1, stolengems AS data2 FROM accounts, shame WHERE shame.acctid=accounts.acctid AND ( stolengold > 0 OR stolengems > 0 ) ORDER BY stolengems $order, stolengold $order LIMIT $limit"; } else { $sql = "SELECT name, stolengold AS data1, stolengems AS data2 FROM accounts, shame WHERE shame.acctid=accounts.acctid AND ( stolengold > 0 OR stolengems > 0 ) ORDER BY stolengold $order, stolengems $order LIMIT $limit"; } $adverb = "schlimmsten"; if ($_GET[subop] == "honor") $adverb = "kleinsten"; $title = "Die $adverb Verbrecherkarrieren in diesem Land"; $foot = "Seit dem 361. Tag des Jahres 1002"; $headers = array("Gold-Diebstahl","Edelsteinklau"); //$tags = "lastjailtime"; display_table($title, $sql, false, $foot, $headers, false); } if ($_GET[op]=="biggold"){ $sql = "SELECT name, maxstolengold AS data1 FROM accounts, shame WHERE shame.acctid=accounts.acctid AND ( maxstolengold > 0 ) ORDER BY maxstolengold $order, maxstolengems $order LIMIT $limit"; $adverb = "schlimmsten"; if ($_GET[subop] == "honor") $adverb = "kleinsten"; $title = "Die $adverb Beutezüge in diesem Land"; $foot = "Seit dem 361. Tag des Jahres 1002"; $headers = array("erbeutetes Gold"); //$tags = "lastjailtime"; display_table($title, $sql, false, $foot, $headers, false); } if ($_GET[op]=="biggem"){ $sql = "SELECT name, maxstolengems AS data1 FROM accounts, shame WHERE shame.acctid=accounts.acctid AND ( maxstolengems > 0 ) ORDER BY maxstolengems $order, maxstolengold $order LIMIT $limit"; $adverb = "schlimmsten"; if ($_GET[subop] == "honor") $adverb = "kleinsten"; $title = "Die $adverb Beutezüge in diesem Land"; $foot = "Seit dem 361. Tag des Jahres 1002"; $headers = array("geklaute Edelsteine"); //$tags = "lastjailtime"; display_table($title, $sql, false, $foot, $headers, false); } page_footer(); ?>[/php] da der Code... |
Autor: | Kevz [ Sa 19 Feb, 2005 12:35 ] |
Betreff des Beitrags: | |
Kevz hat geschrieben: Des is ja auch egal, wieviele wieviel erbeutet haben^^, das spielt keine rolle...
Versuch es mal so: [php]SELECT count(shame.acctid) AS c FROM accounts, shame WHERE shame.acctid=accounts.acctid AND ( accounts.stolengold > 0 OR accounts.stolengems > 0 ) [/php] [php]$sql2 = "SELECT count(shame.acctid) AS c FROM accounts, shame WHERE shame.acctid=accounts.acctid AND ( accounts.stolengold > 0 OR accounts.stolengems > 0 )"; [/php] Sind doch beides die gleichen... ![]() |
Autor: | Scartha [ Sa 19 Feb, 2005 12:38 ] |
Betreff des Beitrags: | |
[php]$sql = "SELECT count(shame.acctid) AS c FROM accounts, shame WHERE shame.acctid=accounts.acctid AND burglary > 0"; $sql2 = "SELECT count(shame.acctid) AS c FROM accounts, shame WHERE shame.acctid=accounts.acctid AND ( stolengold > 0 OR stolengems > 0 )";[/php] so sieht des aus... |
Autor: | Kevz [ Sa 19 Feb, 2005 12:46 ] |
Betreff des Beitrags: | |
dann versuch es doch ohne die ( ) |
Autor: | Scartha [ Sa 19 Feb, 2005 12:51 ] |
Betreff des Beitrags: | |
Da komt der Selbe Fehler aber was sagt denn "ambiguous" aus ? |
Autor: | Chaosmaker [ Sa 19 Feb, 2005 13:27 ] |
Betreff des Beitrags: | |
Lustig, was hier so für Vorschläge kommen. ![]() Ambiguous heißt mehrdeutig/unklar. Das ist ein Zeichen dafür, daß die Spalten in beiden Tabellen vorhanden sind. Ganz offensichtlich ist stolengold in beiden Tabellen vorhanden, stolengems hingegen nur in einer (da sonst die andere Fehlermeldung nicht gekommen wäre). Funktionieren sollten daher folgende 2 SQLs (das richtige mußt Du selbst auswählen): SELECT count(shame.acctid) AS c FROM accounts, shame WHERE shame.acctid=accounts.acctid AND ( accounts.stolengold > 0 OR stolengems > 0 ) SELECT count(shame.acctid) AS c FROM accounts, shame WHERE shame.acctid=accounts.acctid AND ( shame.stolengold > 0 OR stolengems > 0 ) |
Seite 1 von 2 | Alle Zeiten sind UTC + 1 Stunde |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |