thename2002 Skrevet 25. oktober 2011 Del Skrevet 25. oktober 2011 Har fått en error som jeg ikke får vekk Parse error: syntax error, unexpected T_IF, expecting T_FUNCTION in /home/stats/minestats.php on line 133 noen som klarer og finne feilen, og eventuelt rette den? class minestats{ private $config; private $mysqli; private $query; var $players; var $used_lang; var $lang; var $langs; var $search; var $sort; var $server; var $date; var $optable; var $opheadfoot; function minestats(){ require('config.php'); $this->config = $config; $this->mysqli = new mysqli($config['server'], $config['user'], $config['pass'], $config['db']); $this->server = $config['servername']; $this->date = $config['date']; $this->optable = $config['optable']; $this->opheadfoot = $config['opheadfoot']; if (mysqli_connect_error()) {die('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());} if ($_GET['lang']){ $this->lang = parse_ini_file('lang/'.$_GET['lang'].'.ini'); $this->used_lang = $_GET['lang']; } else{ $this->lang = parse_ini_file('lang/'.$config['lang'].'.ini'); $this->used_lang = $config['lang']; } if ($handle = opendir(dirname(__FILE__).'/lang')) { while (false !== ($file = readdir($handle))) { if (preg_match("/.*\.ini/", $file, $hit)) { $this->langs[] = preg_replace('/\.ini/', '', $hit[0]); } } closedir($handle); } } protected function fetch_array($iterator = 1,$index=''){ if ($result = $this->mysqli->query($this->query)) { $i=0; while ($row = $result->fetch_assoc()) { switch ($iterator) { case 0: $res_array = $row[$index]; break; case 1: $res_array[$row[$index]] = $row["value"]; break; case 2: $res_array[$i] = $row[$index]; $i++; break; case 3: $res_array[$row[$index]] = array(); break; } } $result->close(); return $res_array; }else{ printf("Errormessage: %s\n", $mysqli->error); return false; } } protected function fetch_stats(){ if ($result = $this->mysqli->query($this->query)) { $i=0; while ($row = $result->fetch_assoc()) { $this->players[$row['player']][$row['mlvl']][$row['mexp']][$row['wlvl']][$row['wexp']][$row['flvl']][$row['flvl']][$row['fexp']][$row['blvl']][$row['bexp']][$row['tlvl']][$row['texp']][$row['clvl']][$row['cexp']][$row['elvl']][$row['eexp']]; } $result->close(); }else{ printf("Errormessage: %s\n", $mysqli->error); return false; } } protected function fetch_stats_full(){ if ($result = $this->mysqli->query($this->query)) { $i=0; while ($row = $result->fetch_assoc()) { $this->players[$row['player']][$row['mlvl']][$row['mexp']][$row['wlvl']][$row['wexp']][$row['flvl']][$row['flvl']][$row['fexp']][$row['blvl']][$row['bexp']][$row['tlvl']][$row['texp']][$row['clvl']][$row['cexp']][$row['elvl']][$row['eexp']]; } $result->close(); }else{ printf("Errormessage: %s\n", $mysqli->error); return false; } } function get_stats(){ //get the stuff if ($_GET['search']){ $this->search = $_GET['search']; $filter = "WHERE `player` LIKE '".$this->search."%' ORDER BY `player` ASC"; } else { } $this->query = ("SELECT * FROM `".$this->config['table_stats']."` ".$filter.";"); $this->fetch_stats(); // $this->query = "SELECT `player`, `mlvl`, `mexp` FROM `".$this->config['table_stats']."` WHERE `mlvl` = 'Mining';"; $mining = $this->fetch_array(1,'player'); $this->query = "SELECT `player`, `wlvl`, `wexp` FROM `".$this->config['table_stats']."` WHERE `wlvl` = 'WoodCutting';"; $woodcutting = $this->fetch_array(1,'player'); $this->query = "SELECT `player`, `flvl`, `fexp` FROM `".$this->config['table_stats']."` WHERE `flvl` = 'Farming';"; $farming = $this->fetch_array(1,'player'); $this->query = "SELECT `player`, `blvl`, `bexp` FROM `".$this->config['table_stats']."` WHERE `blvl` = 'Building';"; $Building = $this->fetch_array(1,'player'); $this->query = "SELECT `player`, `tlvl`, `texp` FROM `".$this->config['table_stats']."` WHERE `tlvl` = 'Training';"; $Training = $this->fetch_array(1,'player'); $this->query = "SELECT `player`, `clvl`, `cexp` FROM `".$this->config['table_stats']."` WHERE `clvl` = 'Combatant';"; $Combatant = $this->fetch_array(1,'player'); $this->query = "SELECT `player`, `elvl`, `eexp` FROM `".$this->config['table_stats']."` WHERE `elvl` = 'Electrician';"; $Electrician = $this->fetch_array(1,'player'); } //put in the damage stuff seperatly if ($mining[$name]){$this->players[$name]['Mining'] = $mining[$name];} else {$this->players[$name]['Mining'] = 0;} if ($woodcutting[$name]){$this->players[$name]['Mining'] = $woodcutting[$name];} else {$this->players[$name]['woodcutting'] = 0;} if ($farming[$name]){$this->players[$name]['farming'] = $farming[$name];} else {$this->players[$name]['farming'] = 0;} if ($Building[$name]){$this->players[$name]['Building'] = $Building[$name];} else {$this->players[$name]['Building'] = 0;} if ($Training[$name]){$this->players[$name]['Training'] = $Training[$name];} else {$this->players[$name]['Training'] = 0;} if ($Combatant[$name]){$this->players[$name]['Combatant'] = $Combatant[$name];} else {$this->players[$name]['Combatant'] = 0;} if ($Electrician[$name]){$this->players[$name]['Electrician'] = $Electrician[$name];} else {$this->players[$name]['Electrician'] = 0;} //build sort arrays $Mining[] = $this->players[$name]['Mining']; $woodcutting[] = $this->players[$name]['woodcutting']; $farming[] = $this->players[$name]['farming']; $Building[] = $this->players[$name]['Building']; $Training[] = $this->players[$name]['Training']; $Combatant[] = $this->players[$name]['Combatant']; $Electrician[] = $this->players[$name]['Electrician']; //sort it if wanted if ($_GET['sort']){ array_multisort($$_GET['sort'], SORT_DESC, $this->players); } } "line 133" if ($mining[$name]){$this->players[$name]['Mining'] = $mining[$name];} Lenke til kommentar
BlueEAGLE Skrevet 25. oktober 2011 Del Skrevet 25. oktober 2011 ...og hva skulle linje 133 egentlig ha gjort og mere viktig NÅR skulle denne koden ha kjørt? Ja, jeg ser feilen men om jeg retter den for deg sånn uten videre så vil du ikke lære noe av den. Lenke til kommentar
BlueEAGLE Skrevet 25. oktober 2011 Del Skrevet 25. oktober 2011 Får jeg også foreslå at du begynner å hente assosiative matriser fra databasen fremfor å bruke tallindekser. Det vil gjøre koden MYE mer oversiktlig. 1 Lenke til kommentar
thename2002 Skrevet 25. oktober 2011 Forfatter Del Skrevet 25. oktober 2011 skal fikse de tall kodene og det, koden blir kjørt fra index.php som ikke er inkludert her, denne koden henter info fra mysql og deler den opp i en oversiktelig tabel det eneste jeg trenger hjelp til er den erroren Lenke til kommentar
Warz Skrevet 25. oktober 2011 Del Skrevet 25. oktober 2011 Dette er en klasse, du kan ikke bare skrive kode rett i den, du må lage metoder (funksjoner) og legge kode inn der... Fasit (en lettvint løsning hvor problemet er kommentert ut, så får du selv finne ut hvor du skal ha den koden): http://pastebin.com/T9r8Enju Lenke til kommentar
BlueEAGLE Skrevet 26. oktober 2011 Del Skrevet 26. oktober 2011 Nøkkelen ligger i når koden skal kjøres. Hvilket funksjonskall skal kjøre koden? Som Warz påpeker så er koden utenfor alle funksjonsdefinisjonene. Lenke til kommentar
Occi Skrevet 26. oktober 2011 Del Skrevet 26. oktober 2011 Beklager uttrykket, men fy faen for en jævlig kode. Lenke til kommentar
zoomsalabim Skrevet 26. oktober 2011 Del Skrevet 26. oktober 2011 Ville nok også begynt med å rydde opp i formateringen og sørget for at indentingen stemmer nedover. Da blir det også mye lettere å finne slike meh-feil. Har også hatt en del tilfeller i det siste der synlig syntaks har vert 100% korrekt, men der det åpenbart ligger skjulte tegn på en eller annen måte. Utrolig frustrerende å lete etter slike feil, men igjen begynner den prosessen med å ha "perfekt" formatering av koden og helst en editor som raskt viser at paranteser etc er balansert. Derfra må man egentlig bare markere eller midlertidig fjerne linjer med kode til syntaksen blir rett og sette inn igjen kode til man finner feilen igjen. Lenke til kommentar
Occi Skrevet 26. oktober 2011 Del Skrevet 26. oktober 2011 Indentproblemer oppstår ofte pga. det er annen behandling av tekst på forumet, særlig i ['code']-blokka. 4 spaces blir 8 osv., så er ikke vits å påpeke. Lenke til kommentar
thename2002 Skrevet 26. oktober 2011 Forfatter Del Skrevet 26. oktober 2011 er koden så galen? har ikke skrevet så mye php, er ca sjette gangen (: uansett, tenkte å bare begynne fra bunnen.... ---- er ikke lett og liste mysql rows :/ Player - mlvl - mexp - wlvl - wexp i en fin lite tabel som er oversikteli :/ , hadde kanskje vært bedre og legge til sånn at du må søke etter en "player" for og så returnere mysql raden ?, skal hver fall ha "top 15" liste... får google videre Edit// Noen så har noen sider å anbefale? tenkte å bare leie noen til og gjøre det Lenke til kommentar
Occi Skrevet 26. oktober 2011 Del Skrevet 26. oktober 2011 Du kan selecte alt du vil ha i en eneste query, og deretter hente ut alt via en while- eller for-løkke og eventuelt mellomlagre det til arrays. På den måten blir alle $this->query og fetch_array() til kun en av hver i stedet. For å klare det må du nesten forstå prinsippet bak løkker, queries (sql-syntax), fetching og array, skriver det ikke for deg beklager. Lenke til kommentar
thename2002 Skrevet 26. oktober 2011 Forfatter Del Skrevet 26. oktober 2011 Du kan selecte alt du vil ha i en eneste query, og deretter hente ut alt via en while- eller for-løkke og eventuelt mellomlagre det til arrays. På den måten blir alle $this->query og fetch_array() til kun en av hver i stedet. For å klare det må du nesten forstå prinsippet bak løkker, queries (sql-syntax), fetching og array, skriver det ikke for deg beklager. noen guider og anbefale? Lenke til kommentar
Occi Skrevet 26. oktober 2011 Del Skrevet 26. oktober 2011 For helt basic er w3schools.org helt greit, men ikke ta koden som står der som en fasit da det er sikkerhetshull i eksemplene deres m.mer. For oppdaterte eksempler følg php.net. Har dessverre ingen komplette guider, da jeg lærte endel av meg selv via php.net kombinert med at jeg studerer IT. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå