Avatar billede sukos Juniormester
27. marts 2005 - 14:49 Der er 18 kommentarer og
2 løsninger

Hvor meget kan et array fylde?

Er vel afhængig af server, men nogen som kan "gi' et bud"?

Eks.
En database med brugernavne
Hvis jeg vil lave et array, med
brugerid => brugernavn
hvor stort kan så'n et array "tåle" at blive?????
Avatar billede bromer Nybegynder
27. marts 2005 - 14:55 #1
Der er flere måde du kan anskue det på. Du skal tænke på at dit array bliver oprettet og gemt i hukommelsen, så hvis din server har sat en begræsning på PHP med hensyn til hukommelsesforbrug så er der en naturlig grænse her. Jeg har ikke kunne finde nogle steder i manualen at der skulle være et prædefineret maksimum elementer eller en masksimal størrelse.
Avatar billede sukos Juniormester
27. marts 2005 - 15:04 #2
hmm, ja,
Det jeg primært vil bruge det til, er at vise navn til forrige/næste bruger, hvis man kikker på en brugerprofil.
(sekundært for at tjekke om profil findes, (id), men det kan jo gøres med en query.)

Men det er vel egentlig bedre at lave en query som henter disse forrige/næste, fremfor at putte alle ind i et array?
Avatar billede webcreator Nybegynder
27. marts 2005 - 15:10 #3
Ja, bestemt :)
Avatar billede webcreator Nybegynder
27. marts 2005 - 15:11 #4
En database (fx MySQL) skulle gerne kunne klare dette langt hurtigere end et Array. Så sådan bør du nok gøre :)
Avatar billede bromer Nybegynder
27. marts 2005 - 15:25 #5
sukos: Du vil aldrig hente alle elementerne ud idet der er en rigtig stor sandsynlighed for at de ikke bliver brugt. Hent dem du skal bruge og så lave dine tests med nogle andre querys.

Du skal tænke mere generelt. Hvad nu hvis du havde 100.000 brugere og du skulle få MySQL til at sortere dem, overføre dem til PHP hvorefter PHP skulle opbygge et array med 100.000 elementer. Det kan bestemt gøres men hvis du vil vise brugere i sider af 10 styks så er det et _vildt_ overhead.

--
Rune Bromer
Avatar billede sukos Juniormester
27. marts 2005 - 15:38 #6
Jahhhh, en gang imellem skal man jo tænke med røven, selvom den kun bør bruges til at sidde på og sk... med

Smid gerne et svar, begge to
Avatar billede bromer Nybegynder
27. marts 2005 - 15:40 #7
:)
Avatar billede bromer Nybegynder
27. marts 2005 - 15:44 #8
Det er jo bortset fra det meget normalt at man i sporg holder styr på array med integer, hvorfor er må ligge en begrænsning på antallet af elementer alt efter hvilken arkitektur man arbejder med.
Avatar billede sukos Juniormester
27. marts 2005 - 15:57 #9
tåger...... (skal også på arbejde nu!!!!))))))...........

men,
hvordan laver man en query som henter row'et før og efter viste row?

1 => admin
2 => test
5 => navn
7 => navn2

Hvis man ser 7, hentes 5
Ser man 5 hentes 2 0g 7

Eller skal det laves i to query´s?
Avatar billede bromer Nybegynder
27. marts 2005 - 16:10 #10
Umiddelbart kan du lave det i 2, hvor du finder elementet før det du vil vise og så en query hvor du henter det element og de 2 næste (noget limit 3 OFFSET <hvad jeg fandt før>
Avatar billede sukos Juniormester
27. marts 2005 - 21:51 #11
Hvad med webcreator, vil du smide et svar?

Og b.t.w., som jeg gør lige pt, henter jeg alle id og putter dem i et array.
Og ud fra det henter jeg forrige og næste.
Og laver to query's, for forrige og næste.
Det var disse to query's jeg ville udenom, ved at putte både id og navn ind i array'et

Hvis jeg ikke har aray'et, har jeg problemer med at hente forrige og næste, fordi der også er mulighed for at vælge hvordan der skal sorteres.
Lad os sige:
1 => admin
2 => test
5 => æsel
7 => donkey

sorteret efter navn, vil æsel komme sidst.
Og så har jeg problemet med at hente test.
Avatar billede sukos Juniormester
27. marts 2005 - 21:52 #12
hmm, eks. for hvordan det kører lige pt kan ses her:

http://users.showsource.dk/users/brugere.php
Avatar billede bromer Nybegynder
27. marts 2005 - 22:00 #13
Jeg tror egentlig at det hurtigste er at lave de to querys du snakker om! Men det kommer også an på, hvordan du sorterer dem idet du bør lave din index så det stemmer overens med den måde du tilgår din tabel.
Avatar billede sukos Juniormester
27. marts 2005 - 22:00 #14
hmm, bliver vel nødt til at hente alle to/tre i samme query, og så lave et par if'er til at finde ud af om brugeren skal vises, eller om det skal være et link?
Avatar billede bromer Nybegynder
27. marts 2005 - 22:08 #15
hvordan ser din tabel struktur ud?
Avatar billede sukos Juniormester
27. marts 2005 - 22:09 #16
CREATE TABLE `bruger_table` (
  `id` int(11) NOT NULL auto_increment,
  `navn` varchar(24) NOT NULL default '',
  `pass` varchar(32) NOT NULL default '',
  `email` varchar(255) NOT NULL default '',
  `oprettid` int(11) NOT NULL default '0',
  `tmp_mail` varchar(255) NOT NULL default '',
  `admin` int(1) NOT NULL default '0',
  `aktiv` int(1) NOT NULL default '0',
  `tmp_id` varchar(32) NOT NULL default '',
  `vismail` int(1) NOT NULL default '0',
  `realname` varchar(255) NOT NULL default '',
  `home` varchar(255) NOT NULL default '',
  `birth` varchar(10) NOT NULL default '',
  `www` varchar(255) NOT NULL default '',
  `icq` varchar(24) NOT NULL default '',
  `msn` varchar(255) NOT NULL default '',
  `billede` varchar(255) NOT NULL default '',
  `info` text NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `navn` (`navn`),
  UNIQUE KEY `email` (`email`)
) TYPE=MyISAM AUTO_INCREMENT=3 ;

Der kan sorteres på navn, admin og oprettid
Avatar billede bromer Nybegynder
27. marts 2005 - 22:13 #17
hmm.. jeg kan ikke umiddelbart se hvordan du kan lave det effektivt i een query :(
Avatar billede sukos Juniormester
27. marts 2005 - 22:18 #18
Gør heller ikke noget det er tre query's, blot det er de rigtige værdier som hentes!

Inden der laves output, tjekker jeg om der skal vises en bruger, (isset($_GET["userid"])), for at lave titel på doc samt en overskrift, eller evt. vise en fejlmeddelse.

og lige nu kan jeg sgutte finde ud af noget!
Må hellere se at komme ud og køre igen!
Avatar billede webcreator Nybegynder
28. marts 2005 - 02:42 #19
Sådan :)
Avatar billede sukos Juniormester
28. marts 2005 - 02:57 #20
Takker for input, og tror lige jeg prøver i mysql! :O)
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