Progetto per maturità ?

di il
80 risposte

80 Risposte - Pagina 4

  • Re: Progetto per maturità ?

    Okay allora non ci sono problemi, posto qui le tabelle giusto per fartele vedere:
    -- phpMyAdmin SQL Dump
    -- version 4.1.4
    -- http://www.phpmyadmin.net
    --
    -- Host: 127.0.0.1
    -- Generation Time: Feb 05, 2016 alle 16:07
    -- Versione del server: 5.6.15-log
    -- PHP Version: 5.5.8
    
    SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
    SET time_zone = "+00:00";
    
    
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;
    
    --
    -- Database: `scuola-questionario`
    --
    
    -- --------------------------------------------------------
    
    --
    -- Struttura della tabella `compila`
    --
    
    CREATE TABLE IF NOT EXISTS `compila` (
      `IDQUESTIONARIO` int(5) NOT NULL,
      `IDUTENTE` int(5) NOT NULL,
      `CODICE` int(5) NOT NULL,
      PRIMARY KEY (`IDQUESTIONARIO`,`IDUTENTE`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_520_ci;
    
    -- --------------------------------------------------------
    
    --
    -- Struttura della tabella `domanda`
    --
    
    CREATE TABLE IF NOT EXISTS `domanda` (
      `IDDOMANDA` int(5) NOT NULL AUTO_INCREMENT,
      `IDQUESTIONARIO` int(5) NOT NULL,
      `TIPO` varchar(6) COLLATE utf8_unicode_520_ci NOT NULL,
      `TESTO` varchar(144) COLLATE utf8_unicode_520_ci NOT NULL,
      PRIMARY KEY (`IDDOMANDA`),
      UNIQUE KEY `IDQUESTIONARIO` (`IDQUESTIONARIO`),
      KEY `TIPO` (`TIPO`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_520_ci AUTO_INCREMENT=1 ;
    
    -- --------------------------------------------------------
    
    --
    -- Struttura della tabella `opzione`
    --
    
    CREATE TABLE IF NOT EXISTS `opzione` (
      `IDOPZIONE` int(5) NOT NULL AUTO_INCREMENT,
      `IDDOMANDA` int(5) NOT NULL,
      `TESTO` varchar(10) COLLATE utf8_unicode_520_ci NOT NULL,
      `CONTATORE` int(5) NOT NULL,
      PRIMARY KEY (`IDOPZIONE`),
      UNIQUE KEY `IDDOMANDA` (`IDDOMANDA`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_520_ci AUTO_INCREMENT=1 ;
    
    -- --------------------------------------------------------
    
    --
    -- Struttura della tabella `questionario`
    --
    
    CREATE TABLE IF NOT EXISTS `questionario` (
      `IDQUESTIONARIO` int(5) NOT NULL AUTO_INCREMENT COMMENT 'id del questionario',
      `IDUTENTE` int(5) NOT NULL COMMENT 'id dell''utente che crea il questionario',
      `TITOLO` varchar(20) COLLATE utf8_unicode_520_ci NOT NULL COMMENT 'titolo del questionario',
      `FILE` mediumblob NOT NULL,
      PRIMARY KEY (`IDQUESTIONARIO`),
      KEY `IDUTENTE` (`IDUTENTE`,`TITOLO`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_520_ci AUTO_INCREMENT=1 ;
    
    -- --------------------------------------------------------
    
    --
    -- Struttura della tabella `risposta`
    --
    
    CREATE TABLE IF NOT EXISTS `risposta` (
      `IDRISPOSTA` int(5) NOT NULL AUTO_INCREMENT,
      `IDDOMANDA` int(5) NOT NULL,
      `TESTO` varchar(144) COLLATE utf8_unicode_520_ci NOT NULL,
      PRIMARY KEY (`IDRISPOSTA`),
      UNIQUE KEY `IDDOMANDA` (`IDDOMANDA`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_520_ci AUTO_INCREMENT=1 ;
    
    -- --------------------------------------------------------
    
    --
    -- Struttura della tabella `utente`
    --
    
    CREATE TABLE IF NOT EXISTS `utente` (
      `IDUTENTE` int(5) NOT NULL AUTO_INCREMENT COMMENT 'id dell''utente',
      `NOME` varchar(20) COLLATE utf8_unicode_520_ci NOT NULL COMMENT 'nome dell''utente',
      `COGNOME` varchar(20) COLLATE utf8_unicode_520_ci NOT NULL COMMENT 'cognome dell''utente',
      `CITTA` varchar(10) COLLATE utf8_unicode_520_ci DEFAULT NULL COMMENT 'città dell''utente',
      `USERNAME` varchar(20) COLLATE utf8_unicode_520_ci NOT NULL COMMENT 'username',
      `PASSWORD` varchar(12) COLLATE utf8_unicode_520_ci NOT NULL COMMENT 'password',
      `CLASSE` varchar(7) COLLATE utf8_unicode_520_ci DEFAULT NULL COMMENT 'classe dello studente',
      `MAIL` varchar(20) COLLATE utf8_unicode_520_ci NOT NULL COMMENT 'mail dell''utente',
      `SESSO` varchar(1) COLLATE utf8_unicode_520_ci DEFAULT NULL COMMENT 'sesso dell''utente',
      PRIMARY KEY (`IDUTENTE`),
      UNIQUE KEY `USERNAME` (`USERNAME`,`MAIL`),
      KEY `NOME` (`NOME`,`COGNOME`,`CITTA`,`CLASSE`,`SESSO`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_520_ci AUTO_INCREMENT=1 ;
    
    --
    -- Limiti per le tabelle scaricate
    --
    
    --
    -- Limiti per la tabella `domanda`
    --
    ALTER TABLE `domanda`
      ADD CONSTRAINT `domanda_ibfk_1` FOREIGN KEY (`IDQUESTIONARIO`) REFERENCES `questionario` (`IDQUESTIONARIO`) ON DELETE CASCADE ON UPDATE CASCADE;
    
    --
    -- Limiti per la tabella `opzione`
    --
    ALTER TABLE `opzione`
      ADD CONSTRAINT `opzione_ibfk_1` FOREIGN KEY (`IDDOMANDA`) REFERENCES `domanda` (`IDDOMANDA`) ON DELETE CASCADE ON UPDATE CASCADE;
    
    --
    -- Limiti per la tabella `questionario`
    --
    ALTER TABLE `questionario`
      ADD CONSTRAINT `questionario_ibfk_1` FOREIGN KEY (`IDUTENTE`) REFERENCES `utente` (`IDUTENTE`) ON DELETE CASCADE ON UPDATE CASCADE;
    
    --
    -- Limiti per la tabella `risposta`
    --
    ALTER TABLE `risposta`
      ADD CONSTRAINT `risposta_ibfk_1` FOREIGN KEY (`IDDOMANDA`) REFERENCES `domanda` (`IDDOMANDA`) ON DELETE CASCADE ON UPDATE CASCADE;
    
    /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
    /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
    /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
    
    Adesso devo procedere con la popolazione delle tabelle per verificare se funziona la relazione fra le tabelle? Oppure procedo con il php?
  • Re: Progetto per maturità ?

    Ti sei dimenticato le due chiavi esterne di COMPILA, ovvero IDQuestionario e IDUtente.

    Oltre a ciò, devi evitare di aggiungere index (dette anche KEY) a caso, soprattutto quando coinvolgono molti attributi. Sto pensando in particolare a KEY `NOME` (`NOME`,`COGNOME`,`CITTA`,`CLASSE`,`SESSO`) nella tabella utente. Per ogni indice mysql si crea delle strutture dati ausiliarie che se usate bene possono velocizzare alcuni tipi di query, ma se sono superflue al contrario riducono le prestazioni perché richiedono delle operazioni aggiuntive per essere mantenute.
  • Re: Progetto per maturità ?

    Mi sono dimenticato le due chiavi esterne nella tabella COMPILA?
    CREATE TABLE IF NOT EXISTS `compila` (
      `IDQUESTIONARIO` int(5) NOT NULL,
      `IDUTENTE` int(5) NOT NULL,
      `CODICE` int(5) NOT NULL,
      PRIMARY KEY (`IDQUESTIONARIO`,`IDUTENTE`)
    )
    prima avevamo detto che IDQUESTIONARIO e IDUTENTE sono chiavi primarie... adesso come faccio a dichiararle secondarie? Devo mettere FOREIGN KEY ('IDQUESTIONARIO','IDUTENTE') ?
    Comunque ho messo INDEX a quei campi per la ricerca.. nel caso in cui il professore volesse cercare gli studenti per nome e cognome ecc
  • Re: Progetto per maturità ?

    Ah si mi ero dimenticato di creare le relazioni, fatto comunque.
    Adesso come procedo? con il php? Inizio a fare l'interfaccia del prof? anche se pensandoci.. per i db non ci è voluto molto ma adesso con la creazione delle pagine ahah diventa un bel casino
  • Re: Progetto per maturità ?

    L'interfaccia e il back end possono essere sviluppati indipendentemente, quindi puoi anche svilupparli in parallelo.

    Non credo che vi abbiano insegnato ad usare un framework MVC, quindi forse il modo più semplice di procedere potrebbe essere:
    - paradigma procedurale: ti crei una sorta di albero di funzioni dove le foglie risolvono problemi elementari (es.: rispondi_domanda_chiusa(), rispondi_domanda_aperta(), ecc.) e i nodi interni richiamano i figli per risolvere problemi più complessi (es.: rispondi_domanda() richiama le funzioni precedenti a seconda che l'utente risponda ad una domanda aperta o chiusa). In generale, dovresti ottenere due alberi, uno con radice crea_questionario() e l'altro con radice rispondi_questionario(), più qualche funzione isolata (es.: login, logout ecc.);
    - paradigma ad oggetti: si potrebbe procedere in maniera simile, creando una classe façade questionario che funge da mediatore verso le classi domanda e risposta + delle classi di utilità (es.: classe utente). In questo caso avresti anche a disposizione l'ereditarietà e il polimorfismo che ti permetterebbero di dare al programma una struttura molto simile a quella descritta dal diagramma ER del database.
  • Re: Progetto per maturità ?

    Allora, premetto che ho "imparato" ad usare il php solo con il paradigma procedurale, il framework MVC non so manco cosa è ahah se lo avessi saputo usare sarebbe stato più semplice risolvere questi problemi? Comunque si può imparare ad usare tutto..
    Comunque, ho capito cosa intendi per "albero di funzioni", adesso provo a farlo su un foglio e posto qui la foto
  • Re: Progetto per maturità ?

    Eccolo qui:
    http://postimg.org/image/49l0uewzb
    magari avrò sbagliato da qualche parte.. comunque dimmi se qualcosa non è chiaro.
    prima hai parlato di "L'interfaccia e il back end", per interfaccia intendi la grafica? O la disposizione sulla pagina web dei bottoni ecc?
    Mentre per il back end cosa intendi?
  • Re: Progetto per maturità ?

    Non è esattamente quello che pensavo. In questi giorni ci penso su in modo da spiegare meglio quello che intendevo.

    Non ti garantisco una risposta fino a mercoledì, perché martedì ho un esame importante.
  • Re: Progetto per maturità ?

    Va bene, no ma tranquillo grazie di tutto
  • Re: Progetto per maturità ?

    palestrato ha scritto:


    eccolo qui:
    http://postimg.org/image/49l0uewzb
    magari avrò sbagliato da qualche parte.. comunque dimmi se qualcosa non è chiaro.
    prima hai parlato di "L'interfaccia e il back end", per interfaccia intendi la grafica? O la disposizione sulla pagina web dei bottoni ecc?
    Mentre per il back end cosa intendi?
    è una "roba" che si sono inventati per rendere "fico" un concetto abbastanza banale, ovvero di avere un "qualcosa" (programma back end) in grado di essere interrogato ed operato da parte di qualcosa di diverso attraverso interfacce più o meno lasche.
    Normalmente il "qualcosa" una interfaccia grafica, ma non è necessariamente detto (potrebbe essere ad esempio una chiamata webservice)
    Se il progetto è strutturato bene può essere relativamente facile (in teoria, in pratica non lo è mai) riusare una porzione del codice.
    MVC è un'implementazione di un'idea grosso modo analoga utilizzando paradigmi ad oggetti (è un pattern che risale alla notte dei tempi, e che viene spesso spacciato come grande novità, anche se è "in giro" da prima che nascessi).
    Ci sono poi le variazioni dipendenti dall'ambiente (java? C? PHP? e così via).

    Lo schemino che hai messo è un po'... naif. Ci sono una caterva di standard per i pittogrammi (io li chiamo così, sono essenzialmente inutili nel mondo reale).
  • Re: Progetto per maturità ?

    palestrato ha scritto:


    eccolo qui:
    http://postimg.org/image/49l0uewzb
    magari avrò sbagliato da qualche parte.. comunque dimmi se qualcosa non è chiaro.
    prima hai parlato di "L'interfaccia e il back end", per interfaccia intendi la grafica? O la disposizione sulla pagina web dei bottoni ecc?
    Mentre per il back end cosa intendi?
    è una "roba" che si sono inventati per rendere "fico" un concetto abbastanza banale, ovvero di avere un "qualcosa" (programma back end) in grado di essere interrogato ed operato da parte di qualcosa di diverso attraverso interfacce più o meno lasche.
    Normalmente il "qualcosa" una interfaccia grafica, ma non è necessariamente detto (potrebbe essere ad esempio una chiamata webservice)
    Se il progetto è strutturato bene può essere relativamente facile (in teoria, in pratica non lo è mai) riusare una porzione del codice.
    MVC è un'implementazione di un'idea grosso modo analoga utilizzando paradigmi ad oggetti (è un pattern che risale alla notte dei tempi, e che viene spesso spacciato come grande novità, anche se è "in giro" da prima che nascessi).
    Ci sono poi le variazioni dipendenti dall'ambiente (java? C? PHP? e così via).

    Lo schemino che hai messo è un po'... naif. Ci sono una caterva di standard per i pittogrammi (io li chiamo così, sono essenzialmente inutili nel mondo reale).
  • Re: Progetto per maturità ?

    Ho letto quello che hai scritto però non ho capito un gran chè ahah non perchè non sai esprimerti ma perchè forse sono io che non ne capisco tanto ahah
    Comunque per lo schema, a scuola non ci hanno mai insegnato a fare queste cose.. sono tutte nuove cose per me, ovviamente io imparo da voi che ne sapete 1000 volte più di me..
  • Re: Progetto per maturità ?

    ... dvaosta tutto bene all'esame?
  • Re: Progetto per maturità ?

    Ho appena avuto i risultati. Di fatto, da un paio di ore sono dottore in ingegneria informatica.

    Ho pensato un po' al tuo progetto, e secondo me ti conviene portare parte della logica di creazione del questionario lato client usando javascript. In pratica, mediante js modifichi l'interfaccia con cui interagisce il prof. durante la creazione del questionario, ad esempio aggiungendo dei campi di input quando il prof. chiede di inserire una nuova domanda; se guardi l'interfaccia di google form e come aggiunge elementi quando clicchi sui pulsanti (+) o "aggiungi opzione" forse è più chiaro. Invece, la parte di inserimento delle domande del db deve forzatamente essere implementata in php.

    I dettagli domani. Intanto studiati come si fa a gestire gli eventi e modificare il DOM usando js (eventualmente usando la libreria jquery).
  • Re: Progetto per maturità ?

    Allora con javascript ho lavorato a scuola(ero in terzo ahah ) e non l'ho più utilizzato.. però non è proprio estraneo, riesco un po a capirlo e comunque qualcosa su internet si trova.. Per l'inserimento delle domande nel db è ovvio che devo usare il php.. con le query e quello vabbe è un passo successivo.
    Adesso vedo un po come si fa a gestire gli eventi e modificare il DOM usando js.. la libreria jquery non l'ho mai utilizzata.. sembra un po un casino eh.. forse facendo praticamente riesco a capire di più. Se volessi iniziare da dove inizio? Dal login? Inserisco nel db un utente e provo a loggare?
    Comunque tanti auguri dottore ahah
Devi accedere o registrarti per scrivere nel forum
80 risposte