lefsaker Skrevet 11. mars 2008 Del Skrevet 11. mars 2008 (endret) Jeg holder på å videreutvikle et ban-script jeg bruker, men etter at jeg byttet tabell, så virker ikke spørringen lenger o.O Feilmeldingen jeg får er: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\iqsperre\admin\unbanaccount.php on line 7 unbanaccount.php <?php $sql = "SELECT * FROM accounts where banned='1' ORDER BY id DESC"; $query = mysql_query($sql); while($rad = mysql_fetch_array($query)) { $account = $rad['login']; $id = $rad['acct']; echo '<div id="containerthing"><div class="right"><a href="?id=Administration&mod=unbanaccount2&accountid='; echo "$id"; echo '"><img src="style/img/delete.png" class="noborder"></a></div>'; echo "<b>$account</b>"; echo "</div><br />"; } ?> Greier: -- Table "accounts" DDL CREATE TABLE `accounts` ( `acct` bigint(20) unsigned NOT NULL auto_increment, `login` varchar(255) collate utf8_unicode_ci NOT NULL default '', `password` varchar(28) collate utf8_unicode_ci NOT NULL default '', `gm` varchar(27) collate utf8_unicode_ci NOT NULL default '', `banned` int(1) unsigned NOT NULL default '0', `lastlogin` timestamp NOT NULL default '0000-00-00 00:00:00', `lastip` varchar(15) collate utf8_unicode_ci NOT NULL default '', `email` varchar(50) collate utf8_unicode_ci NOT NULL default '', `flags` int(11) unsigned NOT NULL default '0', `forceLanguage` varchar(5) collate utf8_unicode_ci NOT NULL default 'enUS', PRIMARY KEY (`acct`,`login`), UNIQUE KEY `acct` (`acct`) ) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; Det jeg syns er merkelig, er at det funker hvis jeg kjører spørringen mot andre tabeller o.O Endret 11. mars 2008 av lefsaker Lenke til kommentar
Vikdal Skrevet 11. mars 2008 Del Skrevet 11. mars 2008 (endret) Så vidt jeg kan se så har du ikke feltet "id" i den tabellen der. Da vil det jo ikke fungere så bra Order by acct vil vel fungere ? Endret 11. mars 2008 av Nero Burningwr00m Lenke til kommentar
lefsaker Skrevet 11. mars 2008 Forfatter Del Skrevet 11. mars 2008 Da går jeg og skyter meg selv Har bare jobbet med det problemet i 4-5 timer -.- Hjertlig takk for et våkent øye Funka fjell Lenke til kommentar
Vikdal Skrevet 11. mars 2008 Del Skrevet 11. mars 2008 Ikke noe problem. Sitter her selv med en spørring som jeg akkurat fikk til etter flere timers prøv og feil Har kun en igjen nå, og den kommer som en tråd her på forumet i løpet av noen minutter. Lenke til kommentar
lefsaker Skrevet 12. mars 2008 Forfatter Del Skrevet 12. mars 2008 Jeg fortsetter på denne tråden jeg, IOM at problemet ligner litt... Samme databasesystem osv. SQL-ting CREATE TABLE `characters` ( `guid` int(6) unsigned NOT NULL default '0', `acct` int(20) unsigned NOT NULL default '0', `name` varchar(21) NOT NULL default '', `race` smallint(3) NOT NULL, `class` smallint(3) NOT NULL, `gender` tinyint(1) NOT NULL, `custom_faction` int(30) NOT NULL default '0', `level` int(3) NOT NULL, `xp` int(30) NOT NULL, `exploration_data` longtext NOT NULL, `skills` longtext NOT NULL, `watched_faction_index` bigint(40) NOT NULL, `selected_pvp_title` int(30) NOT NULL, `available_pvp_titles` int(30) NOT NULL, `gold` int(30) NOT NULL, `ammo_id` int(30) NOT NULL, `available_prof_points` int(30) NOT NULL, `available_talent_points` int(30) NOT NULL, `current_hp` int(30) NOT NULL, `current_power` int(30) NOT NULL, `pvprank` int(30) NOT NULL, `bytes` int(30) NOT NULL, `bytes2` int(30) NOT NULL, `player_flags` int(30) NOT NULL, `player_bytes` int(30) NOT NULL, `positionX` float NOT NULL default '0', `positionY` float NOT NULL default '0', `positionZ` float NOT NULL default '0', `orientation` float NOT NULL default '0', `mapId` int(8) unsigned NOT NULL default '0', `zoneId` int(8) unsigned NOT NULL default '0', `taximask` longtext NOT NULL, `banned` int(40) unsigned NOT NULL default '0', `banReason` varchar(255) NOT NULL, `timestamp` int(30) default NULL, `online` int(11) default NULL, `bindpositionX` float NOT NULL default '0', `bindpositionY` float NOT NULL default '0', `bindpositionZ` float NOT NULL default '0', `bindmapId` int(8) unsigned NOT NULL default '0', `bindzoneId` int(8) unsigned NOT NULL default '0', `isResting` int(3) NOT NULL default '0', `restState` int(5) NOT NULL default '0', `restTime` int(5) NOT NULL default '0', `playedtime` text NOT NULL, `deathstate` int(5) NOT NULL default '0', `TalentResetTimes` int(5) NOT NULL default '0', `first_login` tinyint(1) NOT NULL default '0', `forced_rename_pending` tinyint(1) NOT NULL default '0', `arenaPoints` int(10) NOT NULL, `totalstableslots` int(10) unsigned NOT NULL default '0', `instance_id` int(10) NOT NULL, `entrypointmap` int(10) NOT NULL, `entrypointx` float NOT NULL, `entrypointy` float NOT NULL, `entrypointz` float NOT NULL, `entrypointo` float NOT NULL, `entrypointinstance` int(10) NOT NULL, `taxi_path` int(10) NOT NULL, `taxi_lastnode` int(10) NOT NULL, `taxi_mountid` int(10) NOT NULL, `transporter` int(10) NOT NULL, `transporter_xdiff` float NOT NULL, `transporter_ydiff` float NOT NULL, `transporter_zdiff` float NOT NULL, `spells` longtext NOT NULL, `deleted_spells` longtext NOT NULL, `reputation` longtext NOT NULL, `actions` longtext NOT NULL, `auras` longtext NOT NULL, `finished_quests` longtext NOT NULL, `honorPointsToAdd` int(10) NOT NULL, `killsToday` int(10) NOT NULL default '0', `killsYesterday` int(10) NOT NULL default '0', `killsLifeTime` int(10) NOT NULL default '0', `honorToday` int(10) NOT NULL default '0', `honorYesterday` int(10) NOT NULL default '0', `honorPoints` int(10) NOT NULL default '0', `difficulty` int(4) NOT NULL default '0', PRIMARY KEY (`guid`), KEY `acct` (`acct`), KEY `name` (`name`), KEY `b` (`banned`), KEY `c` (`online`), KEY `d` (`forced_rename_pending`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; Kode: <?php $charname =($_GET['charname']); $sql = "SELECT * FROM characters WHERE name='$charname'"; $query = mysql_query($sql); while($rad = mysql_fetch_array($query)) { $xpos = $rad['bindpositionX']; $ypos = $rad['bindpositionY']; $zpos = $rad['bindpositionZ']; $mapid = $rad['bindmapId']; $zoneid = $rad['bindzoneId']; } $insert = "update characters set positionX='$xpos', positionY='$ypos', positionZ='$zpos', mapId='$mapid', zoneId='$zoneid', where name='$charname'"; if(mysql_query($insert)) { echo "<b>$charname</b> was successfully teleported to his/her hearthstone-location."; } else { echo("An error occured, the character wasn't teleported!"); } ?> Det scriptet skal gjøre, er å kopiere innholdet fra radene "bindpositionX, bindpositionY, bindpositionZ, bindmapId, bindzoneId" inn i radene "positionX, positionY, positionZ, mapId, zoneId" Men det skjer en feil når jeg kjører scriptet. Informasjonen blir hentet ut, det har jeg sjekket ved å echoe variablene. Hvor ligger feilen? Er det en annen måte å gjøre dette på? Lenke til kommentar
G2Petter Skrevet 12. mars 2008 Del Skrevet 12. mars 2008 Den tabellen din så ut som om den kunne hatt godt av litt normalisering. Lenke til kommentar
lefsaker Skrevet 13. mars 2008 Forfatter Del Skrevet 13. mars 2008 Hva mener du med normalisering? Lenke til kommentar
G2Petter Skrevet 13. mars 2008 Del Skrevet 13. mars 2008 (endret) Når jeg tenker meg om er det kanskje ikke normalisering jeg mener, fordi tabellen din ikke lider veldig av fare for dobbeltlagring (du kan lese mer om det her, men du hadde hatt godt av å redesigne den. Eksempelvis er alle kolonnene dine som har flertallsnavn, som skills, en dårlig idé. Det beste ville være å lage en ny tabell som heter skills og som ser ut som dette: user_skill ( skill_name user_id ) Hvis du da bruker en sammensatt primærnøkkel sikrer du deg at hver bruker kun kan ha hver skill én gang, og du slipper disse hårreisende longtext-ene dine. Dersom du vil være skikkelig nøye kan du lage en egen tabell som heter skills, og som bare inneholder skill_name. Der putter du inn alle skills det er mulig å ha. Når du så skal opprette en ny skill til en bruker sjekker du først at brukeren og skillen eksisterer før du setter inn verdiene i user_skill. På den måten sørger du for at en bruker kun kan ha en skill som du har definert, og ikke finne opp sine egne. Noe lignende kan du gjøre for hele position-systemet ditt (tror jeg), spells, deleted_spells, finished_quests, actions, auras og kanskje noen til. Edit: og når du gjør en spørring kan det lønne seg å spørre om kun det du trenger og ikke alle kolonnene. Endret 13. mars 2008 av G2Petter Lenke til kommentar
lefsaker Skrevet 13. mars 2008 Forfatter Del Skrevet 13. mars 2008 Jeg kan ikke endre på databasen... Da vil den ikke funke sammen med serveremulatoren Lenke til kommentar
G2Petter Skrevet 13. mars 2008 Del Skrevet 13. mars 2008 (endret) Du har en feil i spørringen din, et komma for mye: update characters set positionX='$xpos', positionY='$ypos', positionZ='$zpos', mapId='$mapid', zoneId='$zoneid', where name='$charname' Endret 13. mars 2008 av G2Petter Lenke til kommentar
lefsaker Skrevet 13. mars 2008 Forfatter Del Skrevet 13. mars 2008 Hva skjer med meg og skrivefeil fortiden da ><? Hjertlig takk 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å