creare checklist (gestione attivita) per ufficio.

italo_pm

Nuovo Utente
21 Ago 2014
12
0
0
ciao ragazzi, vorrei creare il seguente form di inserimento per diverse checklist (gestione attivita) in ufficio.

ho solo creato il form in excel (vb) per darvi un idea (e quindi non mi aspetto un form con sfondo grigio o bordi divisori, son che con css posso fare qualcosa, basta forse un solo frame) di quello che sto cercando di creare con php (ajax o javascript o jquery altro) e con mysql vorrei vostri consigli e suggerimenti, il form è il seguente:

b3q6pw.png


in rosso, sono tutti campi che dovrano essere "popolati" in automatico in base all'orario (attivita) scelto e in fondo (in basso) la cronologia di tutte le attivita inserite durante la giornata

il form "Ora" al momento di cliccare o selezionare la fascia oraria deve popolare in automatico i campi in rosso ovvero form "ora attivita", "attivita", "note attivita", "giorno", "link-proc (apre un pdf o word)", che non sono modificabili, e scegliere in "stato - priorita ticket (stato OK in default e priorita bassa in default)", qui dovrò gestire checkbox e radiobutton per bloccare e abilitare a seconda dell'opzione (default con "check" in checkbox e radiobotton stato OK e priorita bassa) solo se si sceglie stato KO drovànno attivarsi un radiobutton priorita media o alta

inoltre abilitare l'inserzione sui campi in verde ovvero form "giorno-data", "priorita ticket (se KO abilitare checkbox con priorita Media o Alta)", "note operatore", "N. Ticket", "Firma operatore".

in blu, opzione Insert, dovra inserire tutti i campi al db, sia quelli con i dati in automatico, che quelli inseriti manualmente.

opzione Cancel, ripristino tutti i campi senza salvare.

in alto (in arancione) ci sono tutte le tipologie di checklist che seguono la stessa logica della prima (giornata), in versione web sicuramente le mettero in forma di menu di navigazione in alto oppure a sinistra...

sono alle prime armi con php e mysql, parto da livello base (ho letto diverse guide in internet) , so che devo creare un database relazionale, solo che non so come legare tutte le primary key o indici o relazionare i campi per fare quello che voglio.

se gentilmente qualcuno puo dirmi come iniziare, grazie in anticipo, non chiedo tutto il codice, se mi aiutare a capire la logica e due righe...

grazie in anticipo.

Saluti
 
Ciao in definitiva ti servirebbero delle linee guida da cui partire per il tuo progetto?
Il database l'hai già strutturato?
 
ciao Enrico, grazie per la risposta.

si, mi serve info per capire come impostare il form, sicuramente dovrò gestire 2 form uno per la creazione/definizione "Attività" e un'altro per la creazione dei ticket "Ticket"

per il database quindi (penso) mi servono 2 tabelle (giusto??) esempio:

- tab_attivita ==> per la creazione/modifica delle attivita.

t_attivita
ENGINE=InnoDB DEFAULT CHARSET=utf8
---
id_attivita // id x attivita
tipo:
PRIMARY KEY (id_attivita)
int(8) not null auto_increment
----

stato_attivita // stato attivita [checkbox]
tipo: varchar(20)
NULL: NO
valori:

stato OK
stato KO
---

prioria_attivita // priorita attivita [radiobutton]
tipo: varchar(50)
NULL: NO
valori:

priorita bassa
priorita media
priorita alta

----
tipo_checklist_attivita // tipo checklist [dropbox]
tipo: varchar(100)
NULL: NO
valori:

giornata
mattina open
sera open
sera open
sera host
rete critiche
notturno
domenica

----
freque_attivita // giorno/frequenza [dropbox]
tipo: varchar(100)
NULL: NO
valori:

TUTTI
Lun - Ven
Lun - Sab
Dom - Gio
Sabato
Domenica
----

note_attivita // note attivita | [textbox]
tipo: varchar(1000)
NULL: SI
------

fascia_attivita // fascia ora [textbox] // 07.00 - 08.00
tipo: varchar(50)
NULL: NO
------

desc_attivita // descrizione attivita [textbox]
tipo: varchar(250)
NULL: NO
------

data_attivita // Giorno - data attivita (quando si crea nuova attivita.) [data/textbox] // GG/MM/YYYY
tipo: DATE
NULL: NO
------

attach_attivita // per allegare la documentazione (percorso proc_link) [textbox] // percorso documentazione
tipo: varchar(100)
NULL: SI
------

firma_operatore_ticket // firma (nome operatore) (quando si crea l'attivita [textbox]
tipo: varchar(100)
NULL: NO

- tab ticket ==> per la creazione/inserimento ticket.

t_ticket
ENGINE=InnoDB DEFAULT CHARSET=utf8
---
id_ticket INT(8) NOT NULL, // id x ticket
id_attivita INT(8) NOT NULL, // id x attivita
PRIMARY KEY (id_ticket,id_attivita),
int(8) not null auto_increment
FOREIGN KEY (id_attivita) REFERENCES t_attivita(id_attivita)

----

note_operatore_ticket // note operatore [textbox]
tipo: varchar(1000)
NULL: SI
------

num_ticket // numero ticket [textbox]
tipo: varchar(30)
NULL: NO
------

firma_operatore_ticket // firma (nome operatore) (quando si crea il ticket)[textbox]
tipo: varchar(100)
NULL: NO
------

data_ticket // Giorno - data ticket [data] (quando si crea il ticket) [data/textbox] // GG/MM/YYYY
tipo: DATE
NULL: NO

secondo voi hanno logica le due tab??? se qualcuno può gentilmente illuminarmi, sicuramente avrò bisogno di aiuto per la gestione dei checkbox e radiobotton (check in default, disabled a base alla scelta, passare il valore alle variabili)


grazie in anticipo.
Saluti
 
Ciao prima di tutto ti consiglio di installare Mysql Workbench (scaricabile da qui http://www.mysql.it/products/workbench/), è utile per strutturare il db e ti da una mano con le chiavi e le foreign key.
Il db (ora non ho chiarissimo lo scopo dell'applicazione) secondo me è da modificare mi spiego.. prendiamo ad esempio i ticket prima di tutto le chiavi (id) devono essere autoincrement, la data di tipo datetime, num_ticket lo farei int non varchar e note operatore text (dipende da quello che ci devi scrivere).
Immagino che gli operatori abbiano dei dati quindi creerei una tabella operatori con ad esempio questi dati:
id_operatore
nome_operatore
cognome_operatore
.....
e legherei l'id dell'operatore di questa lista ad un nuovo campo di tipo int nella tabella dei ticket con una FK.
Per quanto riguarda le checkbox prova a vedere se questo ti è utile: http://www.w3schools.com/tags/tryit.asp?filename=tryhtml_input_checked

Ciao
 
ciao Enrico grazie per la risposta, effettivamente siamo Operatori in un Ced, quindi devo creare una tabella per i nomi, ok, ma a questo punto ho un dubbio, come gestire la parte "controlli priorita"

sono valori che non cambieranno, cioè:

Stato OK [checkbox] default checked (viene disattivato e unchecked solo se Stato KO selezionato)
Stato KO [checkbox] default enabled, no checked
Priorita bassa [radiobotton] default checked (viene disattivato e uncheked solo se Stato KO selezionato)
Priorita media [radiobotton] default desabled, si attiva solo se Stato KO selezionato
Priorita alta [radiobotton] default desabled, si attiva solo se Stato KO selezionato

sono campi che servonno solo al momento di creare una nuova attivita e un nuovo ticket, quindi mi chiedo se serve creare una tabella per questi (perche "controlli) oppure visto che vengono usati solo per insert gestirli da php o html direttamente creando i valori da li e dopo passarli a la query per l'insert, cosi non creo tabelle inutili.

ho pensato qualcosa con senso??

grazie per il tool ma in ufficio non possiamo instalare nulla, c'è una versione online per "graficare" mysql, tabelle etc etc??

grazie ancora.

saluti
 
Ciao secondo me non ha assolutamente senso creare una tabella a parte, gli stati li definisci in un campo di tipo bool e volendo il radiobutton lo metti come int (1) dove consideri 3 valori 0,1,2.. questi campi andranno nella tabella dei ticket.
Ti chiedo una cortesia per capire meglio il tuo progetto... io ho fatto qualcosa del genere tempo fa dimmi se può fare al caso tuo:
Un utente (registrato quindi previo accesso login / password) accede su una pagina di inserimento ticket, compilerà tutti i campi necessari per la segnalazione che arriverà (immagino) a voi del ced.
A questo punto primo problema, la segnalazione deve arrivare a tutti o a qualcuno in particolare? Nel caso volessimo inviare la segnalazione in base al guasto avremo quindi bisogno di creare anche una lista di "destinatari" e delle categorie di appartenenza in modo da associare il problema ad una persona (o gruppo).
Una volta ricevuto il ticket lo prendete in carico e poi vorreste mettere una risposta sul ticket o contattate direttamente la persona?
Intanto partiamo da qua..

Per quanto riguarda la tecnologia da utilizzare vista l'implementazione molto veloce e funzionale io utilizzerei jQuery, magari implementandolo con le sue UI . Sai di cosa si tratta?
Scusa ma se non ho ben chiara la procedura ho difficoltà a risponderti.
 
ciao, grazie per la risposta, allora i ticket vengo gestiti con altro prodotti, noi prendiamo il numero ticket e lo mettiamo al momento su carta (quindi un checklist stampata da word, con le colonne etc etc) per una gestione interna di "sala macchina". quindi dietro non c'è ne un db, ne excel ne access, solo un word che poi raccogliamo e archiviamo (fisicamente), per dare un "punto" moderno volevo mettere qualcosa di semplice ma effettivo, quindi al massimo avere una "cronologia" dei "ticket" inseriti, che per noi vuol dire:

1) apro/chiedo il ticket dal prodotto X (bmc remedy) e quel numero di ticket lo metto in una casella su un foglio word (stampato), giornaliera (quindi tutti i tipo di checklist) finita la checklist l'archivio sul vassoi (fisico) stop, quindo volevo portare la versione stampata sul "web" ...







data ___________________________


[table="width: 500, class: grid"]
[tr]
[td]Procedura[/td] [td]Attivita[/td] [td]Ora[/td] [td]Giorno[/td] [td]Ticket n°[/td] [td]Priorità Ticket[/td] [td]OK[/td] [td]KO[/td]



[/tr]
[tr]
[td]PROC_A1[/td]
[td]Controllo_Dimensioni_DB_Disco_M (Controllare se "byte free" inferiore a 17.000.000.000)[/td]

[td]07.00 - 08.00[/td]
[td]Lun-Ven[/td]
[td][/td]
[td]BASSA/MEDIA/ALTA[/td]
[td][/td]
[td][/td]
[/tr]
[tr]
[td]PROC_A2[/td]
[td]MIL-YY-CPRST-01 (INFRASTRUTTURA STAMPE)[/td]

[td]08.00 - 09.00[/td]
[td]Mar-Gio[/td]
[td][/td]
[td]BASSA/MEDIA/ALTA[/td]
[td][/td]
[td][/td]
[/tr]
[tr]
[td]PROC_A3[/td]

[td]MIL-ZZ-CPRST-02 (INFRASTRUTTURA STAMPE)[/td]

[td]09.00 - 10.00[/td]
[td]Tutti[/td]
[td][/td]
[td]BASSA/MEDIA/ALTA[/td]
[td][/td]
[td][/td]
[/tr]
[tr]
[td]PROC_A4[/td]

[td]MIL-MM-CPRST-03 (INFRASTRUTTURA STAMPE)[/td]

[td]10.00 - 11.00[/td]
[td]Lun-Sab[/td]
[td][/td]
[td]BASSA/MEDIA/ALTA[/td]
[td][/td]
[td][/td]
[/tr]
[/table]

firma ___________________________


la checklist è fatta così... (struttura fatta per tutti i tipi) quindi vorrei convertirla e gestirla dal web, sicuramente php e jquery fa il caso... solo che mi serve "una spinta" , per il momento ho creato un db e riesco a fare l'insert da php....sto leggendo il forum e diversi tutto per sapere il resto...

grazie ancora..

saluti
 
Ok, ti riporto qui un esempio:
Prendiamo in considerazione una pagina che chiameremo client ed una pagina che chiameremo server, la pagina client sarà la nostra interfaccia e la pagina server gestirà le richieste, i controlli ecc.. ed andrà ad inserire i dati sul db.

----------client.html

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" ></script>
<input type="text" id="mioCampo1"/>
<input type="text" id="mioCampo2"/>
<input type="button" onclick="salvaTutto()"/>

<script>
function salvaTutto()
{
$.ajax({
type: "POST",//modalità di invio delle variabili
url: "serverPage.php",//percorso della pagina server
data: {valoreMioCampo1: $("#mioCampo1").val(), valoreMioCampo2: $("#mioCampo2").val()},//variabili da inviare
dataType: "html",
complete: function(sMessage, sStatus)//quando ha completato l'invio..
{
alert(sMessage.responseText);
// Puoi fare un alert di quello che ti restituirà la pagina server
}
});
}
</script>

------------serverPage.php

<?php
print_r($_POST);
//RESTITUISCE I VALORI DELLE VARIABILI INVIATE DALLA PAGINA CLIENT
?>

Ovviamente alla pagina server devi far eseguire tutte le attività del caso tra cui ovviamente l'inserimento dei dati su Sql.

Per semplificarti la vita nella pagina client prova a vedere anche la funzione http://api.jquery.com/serializearray/ in m odo da inviare in blocco tutte le variabili di un form.

Un altro consiglio.. includi Bootstrap nel tuo progetto.. http://getbootstrap.com/ da qui http://bootswatch.com/yeti/ puoi trovare anche dei temi già fatti.

Spero di esserti stato utile.
 
grazie per la risposta Enrico.

farò due tabelle, una per la creazione/definizioni delle attività, un'altra per l'inserimento dei ticket. i campi del checkbox e radiobotton (stato, priorita) li metterò nel file php e prenderò i valori per l'insert al db, continuerò a leggere vari tutorial e esempi per PHP, MySQL, serializearray e JQuery.

grazie ancora per la disponibilità.

Saluti.
 
ciao ragazzi, sto provando come suggerito da Enrico il uso per lo script di serializearray e JQuery.

sono riuscito a fare l'insert al db con i dati presso dal form, ho deciso di mettere il campo per la data di tipo datatime , ed eseguo l'insert di questo campo in automatico con NOW() , al db mi inserisce questo:

2014-09-04 08:40:56

solo che scrive l'ora del hosting, come posso fare per l'insert in automatico con l'ora del pc o corrente del sistema???

inoltre, in che maniera posso formattare in GG/MM/YYYY HH:MM

visto che quando eseguo la select scrivo Select * from `tabella` e poi valorizzo i campi con il risultato.

grazie in anticipo!

Italo.
 
la data nel formato aaaa/mm/gg nel database
è il formato giusto per facilitare le ricerche,
prova a pensare ad una query con "trova gli elementi con data > di"
oppure "trova gli elementi compresi tra le date ....",
se il formato fosse quello convenzionale, richiederebbero conversioni varie

mentre per localtime e la formattazione da presentare, ti ho preparato un breve esempio,
basato sulle mie conoscenze,
$dt contiene data e ora corrente
$dt_f contiene gli stessi valori nel formato 'Y-m-d H:i:s'
mentre DateCalc ti converte la data che gli passi dal formato precedente in formato 'd-m-Y H:i:s'
questa funzione ti consente anche calcoli sulle date passando il parametro adeguato,
senza nessun parametro, restituisce solo il formato
ciao
Marino


PHP:
<?php

# http://localhost/test_site/php/test/_localtime.php

$dt = localtime();

print_r ($dt);
echo "<br><br>";


$dt_f = (1900+$dt[5]) . "-" . (1+$dt[4]) . "-" . $dt[3] . " " . $dt[2] . ":" . $dt[1] . ":" . $dt[0];

print $dt_f;
echo "<br><br>";

print DateCalc($dt_f);
echo "<br><br>";


function DateCalc($input_date, $param='0 day') {
  $date = new DateTime($input_date);
  $date->modify($param);
  return $date->format('d-m-Y H:i:s');
}
?>
 
grazie marino51 per la risposta, eseguito lo script che gentilmente hai condiviso il risultato è:

05-09-2014 01:59:58

la data è corretta, solo che l'ho eseguito alle 08.05 mentre lì scrive [01:59:58]

suggerimenti per prendere l'ora locale?? il hosting è free immagino americano...

grazie ancora.

edit: ciao ragazzi, ho cercato un po in giro, ho dovuto creare un file .htaccess con:

Codice:
RewriteBase /
php_value date.timezone "Europe/Rome"

e funziona, eseguito alle 08:12, risultato:

05-09-2014 08:12:54

va bene cosi?? il valore della variabile sarà 08:12 corretto??

grazie ancora.
Italo
 
Ultima modifica:
ciao ragazzi, non posso editare il commento precedente,

ho fatto un'altro tentativo, alla fine ho messo la riga:

Codice:
date_default_timezone_set( 'Europe/Rome' );

sul mio file di connessione al db che viene richiamato in tutti mie file, seguendo il tuo esempio come avevo scritto funziona sia l'ora e il giorno gg-mm-yyyy hh:mm:ss il problema che non so usare la function DateCalc, quando eseguo l'insert il codice è:

Codice:
INSERT INTO `tabella` (`campo1`,`campo2`,`campo_data`) VALUES
        			('" .$campo1. "', '" .$campo2. "', NOW())";

solo che il NOW() mi scrive YYYY-MM-DD hh:mm:ss è questo va bene, (sono riuscito a formattare in GG/MM/YYYY) il problema rimane con l'ora che mi scrive quella del server (-6 ore) come posso sostituire il NOW() con il codice sopra DateCalc??

grazie in anticipo.
Saluti
 
puoi scrivere la data nel database con il codice seguente,
PHP:
date_default_timezone_set("Europe/Rome");

$dt = localtime();
$campo_data = (1900+$dt[5]) . "-" . (1+$dt[4]) . "-" . $dt[3] . " " . $dt[2] . ":" . $dt[1] . ":" . $dt[0];

INSERT INTO `tabella` (`campo1`,`campo2`,`campo_data`) VALUES
        			('" .$campo1. "', '" .$campo2. "', '" .$campo_data. "')";

mentre quando leggi dal database puoi usare DATE_FORMAT (funzione di mysql) per formattare la data e presentarla a video,
PHP:
SELECT `campo1`,`campo2`,DATE_FORMAT(`campo_data`, '%d-%m-%Y %H:%i') as campo_data FROM `tabella` WHERE .......

scordati la funzione DateCalc,
in questo modo nel database le date sono nel formato anno-mese-giorno, valido per le ricerche,
mentre quando leggi ottieni la data formattata come indicato nella select
ciao
Marino
 
grazie marino51 , sia Insert e Select funzionano correttamente, ora locale e formattazione data.

la select l'ho fatta così:


PHP:
SELECT *, DATE_FORMAT(data_attivita, "%d/%m/%Y %H:%i:%s") `data_attivita` FROM t_attivita Order by `id` DESC;

grazie ancora!! :fonzie::fonzie:
 
ciao ragazzi, in che maniera posso scrivere solo il link del percorso di un file??

per esempio:

quando clicko su "sfoglia:" e seleziono un file (.doc, .pdf) che si trova in C:cartella1/documenti/esempio.doc vorrei come risultato un "collegamento" o link al file, non voglio ne salvarlo o copiarlo su un'altra cartella, lasciare il file nella sua directory e prendere solo il percorso+nome del file e dopo un insert al db come testo (varchar)

è possibile ??

grazie in anticipo.

Saluti
 

Discussioni simili