Vinnaren i pepparkakshustävlingen!
2013-07-14, 19:52
  #1
Medlem
Hej!

Jag använder mig av MySQL och php (codeigniter) och jag är lite osäker på om detta är en databasfråga eller en PHP fråga i grund och botten.

Det är nämligen som så att jag har en tabell som uppdateras väldigt ofta och jag vill använda mig av en liknande funktion för att appenda ny data http://tablesorter.com/docs/example-ajax.html. Säg att en process med denna tabell ser ut såhär:
>Användaren ställer in sitt filter på vad han vill se
>Databastabellen visar resultatet med exempelvis limit 50
>Användaren klickar på visa nästa 50

Så långt är det inga problem men kruxet är att data kan läggas till och tas bort medan användaren klickar på nästa så jag vill inte behöva göra en ny databasquery när användaren klickar på visa nästa 50 för att hämta datan i intervallet 50-100 eftersom att det inte är säkert att den till 100% matchar hans 50 då det kan ha kommit in ny data. Ett exempel på detta skulle vara om användaren har valt att sortera efter pris, i de första 50 raderna kanske priset är 300-500 och under tiden användaren har läst igenom dessa resultat och klickar på visa fler så har 15 nya varor lagts till i prisintervallet 100-200. Om jag nu skulle göra en offset så skulle jag få med en massa gammal data på nytt vilket jag inte vill.

Så hur skulle ni rekommendera mig att lösa detta? Databastabellen ska även enbart sparas för en filtrering, dvs varje gång en eller flera användaren klickar på filtrera så kommer han att spara ned datan som fanns i tabellen just då han klickade på filtrera.

Hoppas att ni förstår vad jag är ute efter och kan ge mig några kloka råd och tips.
Citera
2013-07-14, 21:28
  #2
Moderator
Protons avatar
Citat:
Ursprungligen postat av mojitoboy
Hej!

Jag använder mig av MySQL och php (codeigniter) och jag är lite osäker på om detta är en databasfråga eller en PHP fråga i grund och botten.

Det är nämligen som så att jag har en tabell som uppdateras väldigt ofta och jag vill använda mig av en liknande funktion för att appenda ny data http://tablesorter.com/docs/example-ajax.html. Säg att en process med denna tabell ser ut såhär:
>Användaren ställer in sitt filter på vad han vill se
>Databastabellen visar resultatet med exempelvis limit 50
>Användaren klickar på visa nästa 50

Så långt är det inga problem men kruxet är att data kan läggas till och tas bort medan användaren klickar på nästa så jag vill inte behöva göra en ny databasquery när användaren klickar på visa nästa 50 för att hämta datan i intervallet 50-100 eftersom att det inte är säkert att den till 100% matchar hans 50 då det kan ha kommit in ny data. Ett exempel på detta skulle vara om användaren har valt att sortera efter pris, i de första 50 raderna kanske priset är 300-500 och under tiden användaren har läst igenom dessa resultat och klickar på visa fler så har 15 nya varor lagts till i prisintervallet 100-200. Om jag nu skulle göra en offset så skulle jag få med en massa gammal data på nytt vilket jag inte vill.

Så hur skulle ni rekommendera mig att lösa detta? Databastabellen ska även enbart sparas för en filtrering, dvs varje gång en eller flera användaren klickar på filtrera så kommer han att spara ned datan som fanns i tabellen just då han klickade på filtrera.

Hoppas att ni förstår vad jag är ute efter och kan ge mig några kloka råd och tips.
Tycker du försöker lösa ett ickeproblem ärligt talat, dessutom riskerar du att införa en massa overhead i dina frågor med det du vill ha, det är i alla fall mina spontana tankar.

Vad är det som gör att du prompt måste ha "jätterealtidsdata" i din tabell och inte kan populera om den vid exempelvis omsorteringar? Spelar det verkligen jättestor roll om data tillkommer eller försvinner mellan anropen?

Jag kan inte påminna mig om ett enda fall där detta har varit någon form av problem faktiskt och då har jag ändå kodat system med massvis med multipla användare med hög last vid varje givet tiillfälle, inte ens dessa gånger har jag varit med om att använda nån form av "snapshots" på det sätter du efterlyser.

Dessutom skulle den datan kunna vara ännu mer inaktuell än den data du läser upp på nytt för varje sorteringsändring om dett nu uppdateras så ofta som du gör gällande, iaf rent hypotetiskt? I sådana fall har du ju, om du skulle ro detta iland, snarare infört en bugg medvetet än att förhöja användarupplevelsen?
Citera
2013-07-15, 01:20
  #3
Medlem
förstår inte varför du vill göra så. Om det är så viktigt, så kan du vid varje besök skapa en ny tabell för användaren och kopiera över all innehåll från en "main" databas som alla nya saker samlas i.

När användaren bläddrar bland sakerna så kommer han bara se info som fanns i databasen när han precis gick in på sidan, ingenting nytt kommer att läggas till i hans tabell.

Så gör du så hela tiden och håller samtidigt koll på när han senaste klickade på någonting, för att sedan ta bort tabellen när den inte har användt på cirka 10 minuter eller nåt.

Väldigt dumt, opraktist men det löser ditt problem
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback