Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 20 su 20
  1. #11
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,360
    La parte importante non era l'anno bissestile ma l'algoritmo per spartire gli elementi ed è per questo che non ne ho tenuto conto.

    Il campo id non serve a nulla. Chiaramente la chiave univoca è la data.

    La tabella calendario2 è uguale alla tabella calendario tranne il campo id che non serve a nulla (ribadisco). La data è settata come chiave primaria.
    Ti basterebbe fare una select per vedere se il primo gennaio dell'anno corrente non esiste nella tabella e poi richiamare il codice per non dovere cambiare l'anno nello script.

    Codice PHP:
    <?phpfunction giorni_dell_anno($anno)
    {
     
    $date "$anno-01-01";
     for (
    $i=0;$i<=366;$i++)
     {
      yield 
    $date;
      
    $date date('Y-m-d'strtotime("$date +1 days"));
      if (
    substr($date04) != $anno) {break;}
     }
    }
    $pdo      = new PDO('mysql:host=127.0.0.1; dbname=tests','root','', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
     
    $elementi = array('elemento 1''elemento 2''elemento 3''elemento 4''elemento 5''elemento 6''elemento 7''elemento 8''elemento 9''elemento 10');
    $x 0;
    foreach (
    giorni_dell_anno(date('Y')) as $giorno)
    {
     
    $elemento $elementi[$x count($elementi)];
     
    $query1 $pdo->query("INSERT INTO calendario2 (Data,elementi) VALUES ('$giorno','$elemento')");
     
    $x++;
    }
    Lo scopo dell'informatica è di fare cose che durano con meno interventi possibili. Immagina se tutti i programmi che girano tutti i giorni dovessero essere modificati ad ogni cambio di anno !


    Ti consiglio di leggere qualche guida su come organizzare le chiavi delle tabelle. Se tu lavorassi per me e venissi con la tua soluzione ti manderei a quel paese
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  2. #12
    Logicamente questo script è personaleeeeeeeee come tutto il resto del progetto
    Non sono un professionista e logicamente se dovesse essere usato da terzi (E SPECIALMENTE VENDUTO ) sicuramente avrei calcolato anche un aggiornamento automatico.
    Hai ragione per l'id ma secondo un mio personale parere è sempre utile utilizzarlo in modo da poter lavorare sulla tabella senza perdere tempo (in questo caso con le date essendo la chiave primaria!).

    Lo script in qualunque caso lo dovrò aprire per cambiare l'ordine degli elementi a fine anno (non c'è niente di front-end collegato a questo script momentaneamente!).

    La funzione non l'ho ben capita! me la spiegheresti? Grazie
    Da quello che ho capito hai creato le date in questo modo:

    Hai definito la data iniziale
    Poi la cicli per i giorni dell'anno aggiungendo sempre 1 giorno
    poi tagli la data che hai ciclato estraendo solo l'anno che se sarà diverso da $anno fermerà il ciclo.

    Poi hai fatto un foreach per tutti i giorni dell'anno con date ('Y') che quindi cambia ogni anno
    foreach (giorni_dell_anno(date('Y')) as $giorno)
    Però non ho capito una cosa se $anno è statico nel 2019 come farà a funzionare?
    Ultima modifica di supersqualo; 22-10-2017 a 16:36

  3. #13
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,360
    Però non ho capito una cosa se $anno è statico nel 2019 come farà a funzionare?
    Non capisco la domanda.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  4. #14
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Non capisco la domanda.
    Non c'entra nulla con l'aggiornamento automatico?

  5. #15
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,360
    Definisci cosa intendi con « $anno è statico ».

    Se lasci date(‘Y’) l’anno sarà settato in maniera corretta ogni anno. Devi comunque fare una select per controllare se esiste almeno un record per l’anno corrente. In questo caso non occorre eseguire l’inserimento.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  6. #16
    quindi modifico la variabile $anno = date(‘Y’); e ogni nuovo anno ovviamente o creo un altra tabella calendario o eseguo TRUNCATE tabella e la riempio nuovamente. Giusto? (Ovviamente con una query!)

  7. #17
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,360
    Perché modificare $anno. Questa variabile è un parametro della funzione giorni_dell_anno a cui viene passato l’anno corrente. Qunidi nulla da fare.
    Se fai bene le cose, cioè nessun id nella tabella calendario, non avrai mai bisogno di fare un truncate.
    Devi pero’ testare l’esistenza o meno dei record per l’anno corrente prima di eseguire la parte del codice che fa l’inserimento. Questo per ovviare le chiavi doppie nel caso in cui eseguissi lo script più volte.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  8. #18
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Perché modificare $anno. Questa variabile è un parametro della funzione giorni_dell_anno a cui viene passato l’anno corrente. Qunidi nulla da fare.
    Se fai bene le cose, cioè nessun id nella tabella calendario, non avrai mai bisogno di fare un truncate.
    Devi pero’ testare l’esistenza o meno dei record per l’anno corrente prima di eseguire la parte del codice che fa l’inserimento. Questo per ovviare le chiavi doppie nel caso in cui eseguissi lo script più volte.
    Si ma non ho capito.... supponiamo che io utilizzassi il codice precisamente così come lo hai scritto tu, lo eseguo e lo script mi genera tutte le date (2017) con tutti gli elementi di fianco. Fin qui tutto OK. Per ovviare al problema delle chiavi doppie nel database ho impostato il campo data come valore UNIQUE.
    Adesso supponiamo che sia il 1 gennaio 2018 avvio lo script ed automaticamente verranno aggiunte le date (2018) con gli elementi di fianco. Essi verranno però inseriti nella stessa tabella dove sono presenti tutte le date del 2017? Suppongo di si. Ma non capisco perchè tu abbia inserito calendario2 come tabella!

  9. #19
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,360
    Adesso supponiamo che sia il 1 gennaio 2018 avvio lo script ed automaticamente verranno aggiunte le date (2018) con gli elementi di fianco. Essi verranno però inseriti nella stessa tabella dove sono presenti tutte le date del 2017? Suppongo di si. Ma non capisco perchè tu abbia inserito calendario2 come tabella!
    Ho precisato che calendario2 = calendario meno il campo id... che non serve a nulla.
    Se vuoi mettere calendario e fare un truncate ogni anno fallo ma sappia che non si fa cosi in questo caso. Che un id quando hai già una chiave univoca non è buona progattazione. Sappia inoltre che errori di progettazioni si ripagano sempre in informatica ovvero ti costringono a fare cose complicate etc...

    Ovviamente che verranno aggiunti ai dati già presenti in tabella. Il 1° gennaio 2017 non è il 1° gennaio 2018 quindi se hai settato la data (con un tipo date ovviamente) come chiave univoca non ci saranno problemi.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  10. #20
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Ho precisato che calendario2 = calendario meno il campo id... che non serve a nulla.
    Se vuoi mettere calendario e fare un truncate ogni anno fallo ma sappia che non si fa cosi in questo caso. Che un id quando hai già una chiave univoca non è buona progattazione. Sappia inoltre che errori di progettazioni si ripagano sempre in informatica ovvero ti costringono a fare cose complicate etc...

    Ovviamente che verranno aggiunti ai dati già presenti in tabella. Il 1° gennaio 2017 non è il 1° gennaio 2018 quindi se hai settato la data (con un tipo date ovviamente) come chiave univoca non ci saranno problemi.
    Recepito grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.