Aiuto calendario con database

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
darkstaring
Linux 3.x
Linux 3.x
Messaggi: 657
Iscritto il: mer 13 ott 2010, 13:55
Nome Cognome: Francesco Achenza
Desktop: KDE
Distribuzione: Arch Linux
Contatta:

Aiuto calendario con database

Messaggio da darkstaring »

Salve :)...
Mi hanno chiesto di realizzare un calendario in php e mysql che segni in rosso i giorni feriali (inseriti da utente) e weekend.
Il mio problema sta nel db... non riesco a non creare un modello senza una sfilza di N a N..

Esite qualche funzione mysql che semplifichi il tutto??
Quali entita' usereste nel db??
Altri consigli???

Vi ringrazio
Francesco
:o

Avatar utente
darkstaring
Linux 3.x
Linux 3.x
Messaggi: 657
Iscritto il: mer 13 ott 2010, 13:55
Nome Cognome: Francesco Achenza
Desktop: KDE
Distribuzione: Arch Linux
Contatta:

Re: Aiuto calendario con database

Messaggio da darkstaring »

Ora stavo pensando a questa soluzione anche se e' una porcheria:

Codice: Seleziona tutto

GIORNI   1 ======== N  FESTIVITA' N =========== 1  MESI
id                     id                           id
numero                 idmese                    nome
                       idgiorno             
                       festivo (bool)
Ci sono molti problemi, FESTIVITA conterrebbe record del tipo
`1`1`1`V`
`1`1`2`F`
`1`1`3`F`
ci metterei un giorno per riempire tutto senza dei for mirati in base ai giorni del mese, comunque credo che funzionerebbe anche se non tengo conto degli anni...
Inoltre non tengo conto del primo giorno della settimana ma credo di poterlo ricavare senza bisogno di aggiungerli nel DB da php.
Cosa ne pensate?

ilmich
Master
Master
Messaggi: 1645
Iscritto il: lun 16 lug 2007, 17:39
Slackware: 15.0 64bit
Kernel: 5.15.27
Desktop: kde
Località: Roma

Re: Aiuto calendario con database

Messaggio da ilmich »

guardando la tua soluzione forse non ho capito cosa devi ottenere... a cosa ti serve memorizzare sul database i giorni feriali e i week-end se puoi agevolmente ottenerlo tramite php stesso?!?!?!

eventualmente che tipo di manipolazione devi fare successivamente?!!?!?
se chiarisci un po' meglio quest'aspetto la soluzione da adottare per modellare il db puo' variare.

ad occhio pero' non capisco la 'forzatura' che stai adottando di splittare giorni-mesi-anni quando potresti tranquillamente memorizzarli in un unico campo data con associato campo dove specifichi il tipo di 'giorno'(feriale, week-end etc etc etc)
in questo modo con una query secca riesci a tirati fuori agevolmente tutti i giorni feriali(per esempio) semplicemente facendo un between da sql fra il primo giorno del mese e l'ultimo.
#LiveSimple and #ProgramThings
https://github.com/ilmich
http://ilmich6502.it/

Avatar utente
darkstaring
Linux 3.x
Linux 3.x
Messaggi: 657
Iscritto il: mer 13 ott 2010, 13:55
Nome Cognome: Francesco Achenza
Desktop: KDE
Distribuzione: Arch Linux
Contatta:

Re: Aiuto calendario con database

Messaggio da darkstaring »

Grazie miklos..
miklos ha scritto:guardando la tua soluzione forse non ho capito cosa devi ottenere... .

Quello che devo ottenere è una pagina web con 2 form,
il primo deve contenere una casella di input per l'immissione dei giorni feriali da salvare su db;
il secondo deve stampare un calendario del tipo:

Codice: Seleziona tutto

L M M G V S D
      1 2....
Tutti i weekend e i giorni feriali (letti da db) devono essere scritti in rosso mentre tutti gli altri in nero...
non sò perchè ho abbandonato l'idea di tenere un'unica tabella.. mi sembrava troppo semplice forse.
miklos ha scritto: ad occhio pero' non capisco la 'forzatura' che stai adottando di splittare giorni-mesi-anni quando potresti tranquillamente memorizzarli in un unico campo data con associato campo dove specifichi il tipo di 'giorno'(feriale, week-end etc etc etc)
in questo modo con una query secca riesci a tirati fuori agevolmente tutti i giorni feriali(per esempio) semplicemente facendo un between da sql fra il primo giorno del mese e l'ultimo.
ora provo con un' unica tabella...
se ho qualche difficoltà chiedo :)..

Grazie

Avatar utente
darkstaring
Linux 3.x
Linux 3.x
Messaggi: 657
Iscritto il: mer 13 ott 2010, 13:55
Nome Cognome: Francesco Achenza
Desktop: KDE
Distribuzione: Arch Linux
Contatta:

Re: Aiuto calendario con database

Messaggio da darkstaring »

Ho trovato questa soluzione per scrivere il calendario

Codice: Seleziona tutto

function scrivicalendario ($giorno, $mese, $anno)
{
print "<Table border=1>";
print "<tr> <td>Domenica</td><td>Lunedi</td><td>Martedi</td><td>Mercoledi</td><td>Giovedi</td><td>Venerdi</td><td>Sabato</td> </tr>";

for ($x=0; $x<5; $x++)
{
for ($y=0; $y < 7; $y++)
  {
    $data= mktime (0, 0, 0, $mese, $giorno, $anno);
    $array_giorno = getdate($data);

    if( ($giorno == 1) && ("$array_giorno[wday]" == $y) )
    {
      print "<td> $array_giorno[mday]</td>";
      $giorno++;
    }
    elseif ($giorno != 1)
      {
	if ( "$array_giorno[mon]" != $mese)
	  {     
	    break;
	  }
	print "<td> $array_giorno[mday]</td>";
        $giorno++;
      }
     else
      {     
	print "<td> &nbsp </td>";
      }
  }
 print "</TR><tr>";
}
}
print "</table>";
?>
è sicuramente ottimizzabile (credo)
comunque funge :).. adesso dovrei aggiungere le festività

Rispondi