Log in

View Full Version : Info per sito con database



Zaider
25th May 2009, 12:46
Devo realizzare un progetto per la tesina di maturità, ho scelto di ricreare una versione semplificata di Flickr (perchè come argomento tratterò la fotografia).

Necessiterei di alcune info/consigli per delle cose che non sò fare ma che mi servono (o cmq prima di tagliarle vorrei vedere se son realizzabili).

Il database (parte principale del progetto) si occupa di memorizzare degli utenti con dati anagrafici ecc ecc, le foto aventi codice nome commento voto, genere avente nome e note ed album con un codice, un nome ed eventuale commento del creatore.

Ora, le associazioni le ho disegnate, e mi sembra abbia tutto un senso, rimango bloccato su 2 questioni.

La prima, i voti. Vorrei che ogni utente potesse votare ogni foto 1 volta, con una scala da 1 a 5, così da creare sul sito delle classifiche suddivise per genere (per il genere X richiamo le prime 5 foto in ordine di voto x esempio).
Il problema è che non sò come progettare questa parte, per ora mi sono limitato a disegnare un associazione N a N tra utente e foto di nome "vota", ma non credo funzionerebbe, perchè così ogni utente potrebbe votare più volte la stessa foto, e non voglio.
Dove sistemo questa parte? direttamente sul dbms? io penso che userò access 2007 per creare il db.


La seconda questione è sui commenti, vorrei che ogni utente potesse commentare le foto online, di tutti, un pò come su flickr (però niente lista amici, mi pare troppo complicata da realizzare bene), sulla falsariga dei blog.
Questa parte dove si progetta, nel database o fà parte del sito? come si realizza? (il sito sarà fatto in html ed asp, al massimo il template in css, altri linguaggi non conosco)

Grazie in anticipo per le risposte, e se avete eventuali consigli/critiche non fatevi problemi a scriverli

Mez
25th May 2009, 12:50
ma ti servirebbe la parte della programmazione?
Per il voto potresti usare ajax (così non refreshi neanche la pagina)

Tunnel
25th May 2009, 12:54
Se fai una tabella voti dove hai IDutente | IDfoto | voto e poi la query di insert controlli che non ci sia la riga avente le var @Idutente e @Idfoto e gg
la parte dei commenti va ugualmente nel db. come fai a metterla nell'html ? o_0
sarò un "tavolatore" ma anche qui table comment |IDRiga|IDFoto|IDUtente|Commento| e magari controlli che se IDutente where MAXIDriga= @IDutente print "vaffanculo usa edit" :nod:

Zaider
25th May 2009, 12:54
ma ti servirebbe la parte della programmazione?
Per il voto potresti usare ajax (così non refreshi neanche la pagina)

Ajax non sò cosa sia mez :/

E cmq vorrei dei consigli su come muovermi, almeno per sapere se gli elementi che ho chiesto vanno messi nella fase di progettazione o solo in quella di codifica!

Confesso che sono abbastanza niubbo in materia, non ho mai provato a realizzare un qualcosa di così complesso (x me)

Zaider
25th May 2009, 12:56
Se fai una tabella voti dove hai IDutente | IDfoto | voto e poi la query di insert controlli che non ci sia la riga avente le var @Idutente e @Idfoto e gg

beh in teoria con un associazione N a N tra utente e foto si crea una nuova relazione avente come Attributi utente.username, foto.codice e voto (perchè attributo dell'associazione)

fin qui ci sono arrivato pure io

Mez
25th May 2009, 13:06
i commenti puoi farli anche evitando il db volendo, salvando sul file .txt/.php


$config_use_cookies = TRUE;
$config_use_sessions = FALSE;
$config_check_referer = TRUE;





$all_comments = file("./cartella_tua/comments.txt");
foreach($all_comments as $news_comments){
$single_news_comments = explode("|>|", $news_comments);
$individual_comments = explode("||", $single_news_comments[1]);
$count_comments += count($individual_comments) - 1;
}

Zaider
25th May 2009, 15:10
Alla fine ho pensato di mettere sia i voti che i commenti come delle associazioni N a N tra utente e foto
in teoria dovrebbe funzionare...
rimane sempre il problema che non sò come far votare 1 volta sola la stessa foto

black
26th May 2009, 20:21
Alla fine ho pensato di mettere sia i voti che i commenti come delle associazioni N a N tra utente e foto
in teoria dovrebbe funzionare...
rimane sempre il problema che non sò come far votare 1 volta sola la stessa foto

al voto associ l'id dell'utente e l'id della foto. e li metti come chiave primaria entrambi.

Jarsil
26th May 2009, 20:42
Alla fine ho pensato di mettere sia i voti che i commenti come delle associazioni N a N tra utente e foto
in teoria dovrebbe funzionare...
rimane sempre il problema che non sò come far votare 1 volta sola la stessa foto

Te l'ha spiegato Tunnel

Se memorizzi il voto in una tabella separata in cui lo associ a id utente e id della foto, puoi fare in modo che per ogni id utente e id foto ci possa essere un solo record "voto".

si chiama chiave univoca o unique key, e nel tuo caso è composta da

utente.id, foto.id

Se corrispondono a una riga che già esiste nella tabella con questi valori, il db va in errore (e se gestisci l'errore, semplicemente mandi un mex all'utente ricordandogli che ha già votato).

Non solo, così puoi, se vuoi, consentire anche all'utente di modificare il proprio voto.

Tunnel
26th May 2009, 21:26
Due anni di lavoro su un programma con un db di 80 tabelle e inizio a capirci qualcosa :metal:

Zaider
31st May 2009, 13:52
Grazie a tutti per i consigli, il db pare funzionare, anche se non l'ho ancora testato per bene.

Ora stò sclerando per trovare un template decente già fatto per il sito internet, quelli che faccio sono orrendi, mi vergogno a presentarli in un colloquio.

Qualcuno conosce un sito dove comprarli a prezzi ridotti o, meglio ancora, a trovarli gratis?
Preferisco siano in html .. però valuto anche altro (più che altro "conosco" solo html, non saprei lavorare su progetti in flash)