Avatar billede lldjezll Nybegynder
28. februar 2007 - 17:46 Der er 9 kommentarer og
1 løsning

Vælg første

Denne database bliver brugt i forbindelse med et spil.
Hver spiller har 10 marker som kan være alt fra level 0 (ingen mark) til level 10 (den bedste).
Hver bruger har 1 gård som også kan være fra level 0 (ingen gård) til level 10 (den bedste).

Desuden kan hver spiller flytte gården til et andet land (også kaldet 'location').

Hver gård og mark kan slettes og erstattes af en ny.


Databasen ser sådan ud:
CREATE TABLE farm (
  id int(11) NOT NULL auto_increment,
  bruger text NOT NULL,
  farm text NOT NULL,
  field1 text NOT NULL,
  field2 text NOT NULL,
  field3 text NOT NULL,
  field4 text NOT NULL,
  field5 text NOT NULL,
  field6 text NOT NULL,
  field7 text NOT NULL,
  field8 text NOT NULL,
  field9 text NOT NULL,
  field10 text NOT NULL,
  location text NOT NULL,
  PRIMARY KEY  (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Hvordan får jeg et script til at vise mig hvilket field nummer der er det først med værdi 0 (nul) ?

Det skal bruges i forbindelse med køb/salg af marker og gård.
Avatar billede overchord Nybegynder
28. februar 2007 - 17:55 #1
Fremfor at laegge dem ind paa denne maade ville den muligvis vaere bedre at lave to tabeller, en med farms og en med fields.
Saa i famrs ahr du f.eks felterne:
ID, farm, bruger

og i fields har du saa:
field, status, farm

Du kan saa autmatisk oprette 10 felter i field tabellen hver gang der oprettes en farm

Paa den maade kan du saa snildt hente den foerste mark med status 0
SELECT fields.field, field.farm FROM fields INNER JOIN farms ON fields.farm = farm.id WHERE field.status=0;
Avatar billede lldjezll Nybegynder
28. februar 2007 - 18:05 #2
Så hvis der er 1000 brugere bliver det let uoverskueligt og fylder for meget ?
Avatar billede lldjezll Nybegynder
28. februar 2007 - 18:12 #3
Desuden kan hver spiller flytte gården til et andet land (også kaldet 'location').

Hver gård og mark kan slettes og erstattes af en ny.
Avatar billede mochr Nybegynder
28. februar 2007 - 19:29 #4
10000 rækker i en table er da ingen ting...
Tænk på hvor mange tråde og spørgsmål der er på Eksperten.
Og du ind sætter da bare 'location' i den første table som overchord beskriver.
Avatar billede lldjezll Nybegynder
28. februar 2007 - 20:13 #5
Bruger den metode.. Der er nu bare 1 problem tilbage, denne kode virker nu ikke længere:

for($i=1; $i<11; $i++){
$db_hent3 = mysql_query("SELECT * FROM field WHERE bruger = '$_SESSION[user]'");
$hent3 = mysql_fetch_array($db_hent3);

    if($hent3['fieldlvl'] >= 1){
    $fieldimg[$i] = "field1.jpg";
    $fieldlvl[$i] = $hent3['fieldlvl'];
    }else{
    $fieldimg[$i] = "field0.jpg";
    $fieldlvl[$i] = "0";
    }

    $markp[$i] = $hent3['fieldlvl']*500;   
    $totalmark += $markp[$i];
}
Avatar billede overchord Nybegynder
01. marts 2007 - 15:13 #6
ok du skal joine din tabel med markerne via tabellen med farms som jo holder bruger info ogsaa.

Saa du kan bruge noget i retning af:
SELECT field.fieldlvl FROM field INNER JOIN farms ON field.farm = farm.id WHERE farm.bruger = '".$_SESSION['user']."'"
Avatar billede overchord Nybegynder
01. marts 2007 - 15:14 #7
mlige en kommentar til dine to andre posts:
Stoerrelsen paa tabellerne er ikke specielt problematiske. Reelt set gemmer du ikke ret meget mere data end foer.
Og faktisk er det en hurtigere operation for dig at lade en gaard flytte land nu du opdteringen sker i en mindre tabel.

Haaber det hjaelper :-)
Avatar billede lldjezll Nybegynder
01. marts 2007 - 18:13 #8
overchord > Jamen det overstående benytter jo kun fieldlvl til at regne total produktion ud, som er fieldlvl * 500, og hvis fieldlvl er over nul skal den smide billede "field1.jpg" ud. Ellers skal det bare være field0.jpg.
Avatar billede overchord Nybegynder
01. marts 2007 - 22:14 #9
ok, men det burde ogsaa stadig virke. Jeg gik ud fra at grunden til at det ikke virkede er fordi dit link til bruger-data nu kun eksisterer i farm-tabellen, og derfor skal du have lavet det join. Saa al koden under SQL'en burde stadig virke ok.
Avatar billede lldjezll Nybegynder
03. marts 2007 - 10:39 #10
Kan ikke lige huske hvad jeg gjorde med det virker da .. Jeg har rigtig mange funktioner der skal laves, så der er ikke altid til at huske hvad jeg gjorde :)

Men tak for al jeres hjælp.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester