Gå til innhold

velge fra alle tabeller i en database.


Anbefalte innlegg

Hei, har en side med registreringscript.

Skal nå lage bildegalleri til alle brukerne, Slik at tabellenavnet blir brukerens id, og hver rad i den tabellen blir info om bildet.

Men jeg skal jo kunne godkjenne dem, Og slik jeg har gjort med profilbilder så skjekker jeg bare om cellen bilde_waiting er satt til noe annet en "tom" om den er det skal alle bilder som er det listes opp slik at dem kan godkjennes eller ikke.

Problemet er hvordan skal jeg gjøre dette, det kommer jo til og bli en mange brukere etterhvert, så jeg kan ikke sitte og skrive inn alle id manualt, slik at jeg tenkte while els må være tingen.

 

Eller noe bedre forslag til hvordan jeg kan gjøre det.

 

MVH en meget tenkende kar :S

 

Sefflgelig, jeg kunne jo laget en tabell for alle bilder som venter, og overføre dem som blir godkjent til den ideen og bruker INSERT INTO osv.

Men det ser jeg som tungvindt, blir så mye mer skriving fra min side. Men gjør det om jeg ikke får noen løsning =)

Lenke til kommentar
Videoannonse
Annonse

Denne formen for horisontal partisjonering av data er lite hensiktsmessig i slike sammenhenger. Av designmessige hensyn vil jeg anbefale deg å bruke én tabell til dette, og heller finne en metode for å begrense tilgangen på hverandres data. En metode for å gjøre dette er å ha brukernavnet (eller en fremmednøkkel til en tabell med dette) sammen med bildeinformasjon, og så bruke en funksjon som blant annet benytter brukernavnet til å filtrere dataene.

Lenke til kommentar
Om du forklarer meg hva en fremmednøkkel er og hvordan jeg skal filtere det osv så hadde jeg blit meget glad =)

5823110[/snapback]

Fremmednøkkel er et databaseobjekt som sørger for integritet mellom to tabeller, dvs at en verdi i en tabell må samsvare med en verdi i en annen tabell. Ved bruk av dette kan man f eks ikke opprette en ordre uten at et gyldig kundenummer fylles inn.

 

Men, til det andre: Hvordan denne filtreringen foregår vil jo variere med databasen som benyttes, og da velger jeg Microsoft SQL Sever som jeg kjenner best. Følgende kodesnutt bør vel si det meste (Et view vil muligens være mer praktisk enn en funksjon):

use tempdb;
go

create table Demo (
 id integer identity,
 someinfo varchar(255),
 username varchar(255) default suser_name()
);
go

create view vDemo as
 select 
   id, someinfo
 from
   Demo
 where
   username = suser_name();
go

-- Brukere kan sette inn data via viewet
insert into vDemo values ('Some info');

-- Eller man kan legge data inn direkte for en annen bruker
insert into Demo values ('Some other info','localhost\someotheruser');
go

-- Men en bruker kan bare hente ut sine egne data fra viwet
select * from vDemo;
go

Merk, ingen sluttbrukere skal ha tilgang til å gjøre spørringer rett mot tabellen Demo i dette eksempelet.

Lenke til kommentar

Skjønner oppbygninga, såe jeg kan sette fremmednøkkel til f.eks vær bruker sin id ?

Men er ikke denne spørringen veldig tung og kjøre, jeg bruker MySQL.

Lette gjennom f.eks 11 000 rader for og finne 3 av dine bilder, og deretter vise dem fram ?

Og galleriet til folk vil vel være den delen av siden som vil bli kjørt en god del oftere en alt annet. =)

Endret av stianiquniez
Lenke til kommentar
Skjønner oppbygninga, såe jeg kan sette fremmednøkkel til f.eks vær bruker sin id ?

Men er ikke denne spørringen veldig tung og kjøre, jeg bruker MySQL.

Lette gjennom f.eks 11 000 rader for og finne 3 av dine bilder, og deretter vise dem fram ?

Og galleriet til folk vil vel være den delen av siden som vil bli kjørt en god del oftere en alt annet. =)

5823403[/snapback]

Ang nøkler så kan sikkert Devsiden hjelpe deg (den eneste norske siden jeg vet om som forklarer nøkler, uten at jeg dermed sagt er enig i alt som står på siden).

 

Dersom 11000 rader er noen hindring for en database, så bør du se på designet av databasen. Noen har i så fall gjort noe seriøst galt på ett eller annet stadie, det være seg struktur på databasen eller hardwaren den kjører på. Dette forumet har noen millioner poster, og det går greit nok rundt. Ellers skal det sies at jeg ikke vil anbefale deg å legge bilder direkte i databasen, men heller ha informasjon i databasen om hvor bildene finnes på filsystemet.

Lenke til kommentar

Dersom dere vet at det ikke er noen hindring er det flott, pc en serveren skal kjøre på er god nok i massevis til det =) IKke noe problem.

Nei jeg lagrer ikke bildene direkte i databasen, bare sti til bildet =)

Skal ta og lese på den linken. Takk for hjelpen :)

Lenke til kommentar

Jeg foreslår en atributt i bildetabellen som heter status der du kan legge inn tall med forskjellige betydninger.

0 = ny (ikke vurdert enda)

1 = godkjent

2 = ikke godkjent

osv

 

Hvis du vil ha liste over bilder til godkjenning legger du til dette i SQL:

WHERE status=0

SELECT * FROM bilde WHERE status=0

Når du godkjenner et bilde endrer du bare status-feltet.

 

Hvis du skal ha ut bildene til en bruker som er godkjent

SELECT * FROM bilde WHERE status=1 AND bruker=brukerID

Der brukerID er nr til brukeren du skal vise bildene til..

 

Dette går fort med Mysql selv om du har mange rader i tabellen.

 

Du går gjennom resultatsettet med en while etterpå. Eksempel: (ikke testet, så garanterer ikke at det er fritt for syntaxfeil)

$sql = "SELECT * FROM bilde WHERE status=1 AND bruker=brukerID";
$bilder = mysql_query($sql);
while ($bilde = mysql_fetch_array($bilder, MYSQL_ASSOC)) {
$bildetittel = $bilde["tittel"];
//      kode for alt du vil gjøre for hvert bilde... bla bla bla
}

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...