Avatar billede challenge Praktikant
20. november 2006 - 13:07 Der er 9 kommentarer og
1 løsning

husk brugervalg - cookie eller database?

Hej allesammen.

På en side jeg er ved at lave, jeg jeg udviklet et sprogsystem, hvor alle mine phrases kommer direkte fra en MySQL database.
Mit problem opstår nu, da jeg gerne vil have siden til at huske, hvilket sprog brugeren har valgt (dvs. enhver bruger på siden, ikke kun "tilmeldte/registrerede" brugere).
Jeg står derfor foran valget mellem at bruge cookies eller bruge database.
Nogen der har erfaringer med databasen? Jeg kan forestille mig at den hurtigt kan blive overbelastet, når der hele tiden indsættes data deri, og dermed gøre resten af siden langsom. Sker dette, eller kan jeg roligt bruge en database?

Challenge
Avatar billede phliplip Nybegynder
20. november 2006 - 13:16 #1
Hej Challenge,

Umiddelbart vil jeg sige at du skulle bruge cookies, da du ønsker at ikke-registrerede brugere også skal huskes. Vil mene det er overkill at gemme sådanne data i en db.
Avatar billede phliplip Nybegynder
20. november 2006 - 13:18 #2
Btw. Trækker du alle dine phrases i databasen hver gang en bruger besøger siden?
For det er tungt! Så skulle du hellere lavet et script der sørger for at gemme dine phrases i en include fil. Altså få noget caching ind omkring det.
Avatar billede phliplip Nybegynder
20. november 2006 - 13:18 #3
Smider lige et svar for god ordens skyld :)
Avatar billede challenge Praktikant
20. november 2006 - 13:35 #4
Hej phliplip (jeg troede faktisk der stod phillip :))

Tak for dit svar - Jeg tror nok jeg holder mig til cookies så!

mht. mine phrases, så kalder jeg dem med mysql_query() og mysql_fetch_array(), som jeg normalt ville gøre.
Tænker du på at store alle mine phrases i en .txt fil og derefter explode() eller hvordan?

Tak for dit svar, jeg venter lige lidt med at acceptere hvis det er ok :)
Avatar billede phliplip Nybegynder
20. november 2006 - 13:49 #5
Det jeg mener er at du kan en php fil der inderholder de data du har i databasen.

Nu ved jeg ikke hvordan din db er sat op.. men:

key // En unik identifier
gb // indeholder engelsk
dk // indeholder dansk

Hvis du så vil opdatere din danske sprogfil, så lav et script der hedder export_lang.php eller noget i den stil

$query = mysql_query("SELECT key, da FROM languages");

$save = "<?php\n";
while($data = mysql_fetch_array($query)) {
  $save .= "\$lang['".$data['key']."'] = \"".str_replace('"', '\"', $data['dk'])."\";\n";
}
$save .= "?>";

Så skal du bare gemme $save til en fil du kan kalde dk.php i en languages/ mappe, evt. kan du kopiere den eksisterende til backup. fx ved at rename den til dk_datoOgTid.php

Så skal du kun køre export_lang.php når du har foretaget ændringer i dine phrases. Og du include()'er bare languages/dk.php når du ønsker dansk på siden!

Det skal selvfølgelig tilpasses dit system.
Avatar billede ducks Nybegynder
20. november 2006 - 13:52 #6
Jeg tror han mener, at hvis al teksten fra siden skal hentes i databasen hele tiden, vil det kunne overbelaste serveren hurtigt, så det er bedre hvis du gemmer dem i php filer i en language mappe.

Fx

..\lang\danish.lng.php

og så underholder den variabler med teksten

$lng_welcomemsg = "Hej og velkommen til min side";

osv.
Avatar billede challenge Praktikant
20. november 2006 - 13:53 #7
Superfedt, jeg takker mange gange.
Det vil jeg helt klart prøve!

Tak for hjælpen!
Avatar billede challenge Praktikant
20. november 2006 - 13:55 #8
ducks,

Jeps, det var også sådan jeg forstod det - Jeg eksporterer alle mine phrases via et script, således at de ligger i en php fil, i stedet for at skulle hente dem alle hver gang siden køres.

Tak for hjælpen!
Avatar billede phliplip Nybegynder
20. november 2006 - 13:58 #9
Det var så lidt !-)

/Philip
Avatar billede challenge Praktikant
20. november 2006 - 14:22 #10
Jeg tilføjer lige dette, hvis der var nogen der i fremtiden har samme spørgsmål, og hvis de evt. ikke ved hvad de skal gøre efter phliplip's kodeeksempel. Håber at det er ok :)

Tillæg til phliplip's scripteksempel:

$writetofile = "languages/uk.php";
$writefile = fopen($writetofile, "w");
fwrite ($writefile, $save);
fclose ($writefile);
echo "Der blev succesfuldt skrevet til filen ".$writetofile;
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