Pagina 4 di 5 PrimoPrimo ... 2345 UltimoUltimo
Visualizzazione risultati 91 fino 120 di 130
Like Tree3Likes

Discussione: Calcolo tra start release_data

  1. #91
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Ciao darbula,
    o sono io che non capisco o qualcosa non va,

    primo tentativo

    inserito tutto il tuo codice dopo <? endwhile; ?>

    risultato:

    Sono le ore 2020-09-07 19:34:56carriera in corso string(0) "" string(0) ""
    secondo tentativo

    spezzato il codice, questo sotto inserito dopo la query e il rimanente dopo <? endwhile; ?> (quello che inizia dal commento //dopo endwhile


    risultato:

    Sono le ore 2020-09-07 19:41:17
    Fatal error: Cannot use object of type stdClass as array in E:\OpenServer\domains\localhost\cinema\members\cin ema.php on line 1730

    questo sotto la query

    Codice PHP:
    $timezone = local_timezone();
    $utc_ora = (float) moment_utc(moment_now($timezone));
    $ora = moment_tz($utc_ora);
    $utc_oggi = (float) moment_utc(moment_today($timezone));
    $oggi = moment_tz($utc_oggi);
    //ora locale
    $ora_locale = local_now($timezone);
    echo
    'Sono le ore ' . $ora_locale;

    $start = strlen(ltrim($row['start'], '+-')) > 4 ? $row['start'].' 00:00:00' : varchar_four_year($row['start']).'-01-01 00:00:00';
    $end = ($row['end'] ? (strlen(ltrim($row['end'], '+-')) > 4 ? $row['end'].' 00:00:00' : ($row['end'] ? varchar_four_year($row['end']).'-01-01 00:00:00' : ($row['died'] ? $row['died'].' 00:00:00' : $ora))) : ($row['died'] ? $row['died'].' 00:00:00' : $ora));

    if(
    $row['died'] && ($row['died'].' 00:00:00') == $end) {
    echo
    'fine carriera';
    } elseif(
    $ora == $end) {
    echo
    'carriera in corso';
    } else {
    echo
    'abbandono carriera';
    }

    $film_now = '';
    if(
    $row){
    $local_release = $row['release_data'];
    $local_data = $row['year'];
    }
    Ultima modifica di blackskyisback : 07-09-2020 alle ore 18.43.53

  2. #92
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Secondo te cosa significa cambia array $array['chiave'] in $array->chiave?
    Solo dal commento alla fine dove ce il var_dump il resto devi inserirlo nel while.

  3. #93
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    caspita hai ragione darbula

    non avevo visto quel punto, sara' che oggi sono stanchissimo

    comunque grazie, sistemo il codice e ti faccio sapere, se non oggi domani

    Grazie

  4. #94
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Ciao darbula

    Ho cambiato gli array come hai specificato tu

    array $array['chiave'] in $array->chiave?
    ecco i campi coinvolti per caso 1

    Tabella actor

    birthday: 1990-11-03

    died: 2020-08-01

    start: 2020

    end: vuoto

    Tabella film

    release_data:

    2020-08-31
    1980-06-21

    risultato:

    Sono le ore 2020-09-08 07:52:01fine carriera Sono le ore 2020-09-08 07:52:01fine carriera string(39) "39 years differenza film inzio carriera" string(0) ""
    i dati sembrano non esatti, non viene riportata la differenza della data di morte


    ecco i campi coinvolti per caso 2

    Tabella actor

    birthday: 1970-01-01

    died: vuoto

    start: 2020

    end: vuoto

    Tabella film

    release_data:

    2020-08-31


    risultato:

    Sono le ore 2020-09-08 08:01:35carriera in corso string(47) "7 months 30 days differenza film inzio carriera" string(31) "7 days differenza anno corrente"
    mi sembra che ci sono dati errati

    l'anno attuale e 2020 e il conteggio dovrebbe partire da questa data 2020-08-31, invece viene effettuato dal 1 Gennaio
    Ultima modifica di blackskyisback : 08-09-2020 alle ore 07.11.19

  5. #95
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    È errata la tua logica, ti spiego.
    Da start a $end che è uguale a end/died/now per carriera di un attore. 2020-01-01 a 2020-09-08 dovrebbe essere 8 months 7 days. (fine carriera corrisponde a died, carriera in corso a now altrimenti abbandono carriera per end o anche per altro).
    Da start a release_data/year per differenza film da inizio carriera. 2020-01-01 a 2020-08-31 7 months 31 days
    Se definito film da inizio carriera e anno corrente da release_data a now per differenza anno corrente. 2020-08-31 a 2020-09-08 8 days.
    Ultima modifica di darbula : 08-09-2020 alle ore 11.25.00

  6. #96
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    forse hai ragione tu, ma come mai visulizzo queste?

    string(39)
    string(0)
    string(47)
    string(31)

  7. #97
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    È il testo prodotto dal var_dump ti indica il tipo la lunghezza e cosa c'è scritto.
    Usa echo $variabile1.' '.$variabile2;
    Ultima modifica di darbula : 08-09-2020 alle ore 11.36.52

  8. #98
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Capito, devo studiarmi il codice e cercare di comprenderlo

    adesso visualizzo i dati nella zona query film, riposto la domanda, e se volessi spostare il tutto nella zona actor?

    ci sarebbero i soliti problemi con l'altra query

    darbula GRazie, ha fatto un ottimo lavoro

  9. #99
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Con codice sql o php cosa significa zona actor o film? (Cioè la query sql presuppongo).
    In realtà leggi nuovamente il codice aggiornato con i commenti, potresti anche creare le funzioni con tali codici. (Lo so ancora per te è presto).
    Ovviamente il varchar contenente una data avrà il valore massimo di 11 e non 10 altrimenti non è possibile utilizzare date negative.
    http://forum.it.altervista.org/php-m...ml#post1455449
    Ultima modifica di darbula : 08-09-2020 alle ore 12.20.14

  10. #100
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    esatto,

    ho semplificato con zona ma e' la query che viene eseguita

    vorrei visualizzare i dati nella zona

    1 - Tabella actor




    adesso li visualizzo nella zona

    3 - Tabella film

    qui e' presente la query che collega actor e film

    nella zona 1 invece viene eseguita la query solo per actor

  11. #101
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    quindi avrai due loop while il primo per zona 1 actor e il secondo per zona 3 film.
    Devi studiare altrimenti anche qualcosa di semplice può diventare un problema.
    Presumo hai sintasi while a blocchi come in questo codice http://forum.it.altervista.org/php-m...ml#post1455392 per ambedue le query sql?
    Se php ha il tag di chiusura ?> non verrà eseguito dal motore php ma verrà stampato.
    Il tag di apertura php è <?php allora il motore è nuovamente attivo.
    Con questa premessa davvero non riesci a inserire codice php dentro ad un while già esistente?
    Purtroppo i dati relativi a zona 3 sono disponibili solo dalla query zona 3 puoi però non mostrarle a video prima inserisci questa query e poi il codice zona 1 per stampare i dati ottenuti da zona 3, ovviamente zona tre avrà solo variabili e nessun output nemmeno markup html, li stampi quando necessario.
    Codice PHP:
    //sql zona 3
    //Loop while
    //crea anche variabili
    //sql zona 1
    //loop while
    //Codice php, o anche markup html
    //echo $variabile di zona 3.
    endwhile; //zona 1
    endwhile; //zona 3
    Ultima modifica di darbula : 08-09-2020 alle ore 13.46.06

  12. #102
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    niente non va perche ci sono variabili che vanno in conflitto con il codice da te rilasciato,

    l'unica soluzione e' inserire tutto il tuo condice dentro un file esterno e richiamarlo tramite una funzione

    si puo' fare? o almeno tentare per vedere se cosi funziona

  13. #103
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Lo devi fare tu, o posti l'intero codice.
    No si risolve solo se tu studi.

  14. #104
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Citazione Originalmente inviato da darbula Visualizza messaggio
    Lo devi fare tu, o posti l'intero codice.
    No si risolve solo se tu studi.
    ok, studio il tutto e vediamo se risolvo

    grazie

  15. #105
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Ho modificato il codice risolto errori e separato le funzioni dal resto del codice.

    Ecco come gestire due loop while.
    funzioni.php
    Codice PHP:
    <?php
    function varchar_four_year($varchar) {
    $year = ltrim($varchar, '+');
    $sign = (isset($year[0]) ? ($year[0] == '-' && $year[0] = '' ? '-' : '') : '');
    $year_four = sprintf('%s%04d', $sign, $year);
    return
    $year_four;
    }
    function
    moment_tz($tz_utc) {
    $now = date_create('@'.$tz_utc);
    $display = date_format($now, 'Y-m-d H:i:s');
    return
    $display;
    }

    function
    moment_now($tz) {
    $now = date_create('now', $tz);
    return
    $now;
    }

    function
    moment_today($tz) {
    $today = date_create('today', $tz);
    return
    $today;
    }
    function
    moment_utc($moment_obj) {
    $moment_tm = date_format($moment_obj, 'U');
    return
    $moment_tm;
    }
    function
    local_timezone() {
    $tz_local = timezone_open('Europe/Moscow');
    return
    $tz_local;
    }
    primo while
    Codice PHP:
    <?php
    $i
    =1;
    $row = true;
    //while query film
    while ($row):?>
    Query film <?php $i=$i+1;

    unset(
    $row);
    $row['start'] = '2019';
    $row['end'] = null;
    $row['died'] = '2020-04-12';
    $row['year'] = '2020';
    $row['release_data'] = '2020-02-20';
    Codice originale
    Codice PHP:
    require_once dirname(__FILE__).'/funzioni.php';
    $timezone = local_timezone();
    $timezone_utc = timezone_open('UTC');
    $utc_ora = moment_utc(moment_now($timezone_utc));
    $ora = moment_tz($utc_ora);
    $utc_oggi = moment_utc(moment_today($timezone));
    $oggi = moment_tz($utc_oggi);
    //ora locale
    $ora_locale = date_format(moment_now($timezone), 'Y-m-d H:i:s');

    $start = strlen(ltrim($row['start'], '+-')) > 4 ? $row['start'].' 00:00:00' : varchar_four_year($row['start']).'-01-01 00:00:00';
    $end = (strlen(ltrim($row['end'], '+-')) > 4 ? $row['end'].' 00:00:00' : ($row['end'] ? varchar_four_year($row['end']).'-01-01 00:00:00' : ($row['died'] ? $row['died'].' 00:00:00' : $ora)));

    $carriera = 'abbandono carriera';
    if(
    $row['died'] && ($row['died'].' 00:00:00') == $end) {
    $carriera = 'fine carriera';
    } elseif(
    $ora == $end) {
    $carriera = 'carriera in corso';
    }

    $film_now = '';
    if(
    $row){
    $local_release = $row['release_data'];
    $local_data = $row['year'];
    }
    $release_data = $local_release ? $local_release.' 00:00:00' : varchar_four_year($local_data).'-01-01 00:00:00';
    $sign = $release_data[0] == '-' && $release_data[0] = '' ? '-' : '';

    $film_current = 'data non valida';
    if(
    intval(substr($release_data, 0, 4)) && intval(substr($release_data, 5, 2)) && intval(substr($release_data, 8, 2)) && substr($sign.$release_data, 0, 4) == substr($ora, 0, 4)) {
    //differenza anno corrente film
    $diff_current_year = date_create($sign.$release_data, $timezone_utc)->diff(date_create($oggi, $timezone_utc));
    $testo = 'differenza anno corrente';

    $year_current = $diff_current_year->y;
    $mese_current = $diff_current_year->m;
    $giorni_current = $diff_current_year->d;
    if(
    $year_current) {
    $film_current = $year_current.' years';
    } elseif(
    $mese_current == 0 && $giorni_current == 0) {
    $film_current = 'anno corrente';
    } elseif(
    $mese_current) {
    $film_current = $mese_current.' months';
    if(
    $giorni_current) {
    $film_current .= ' '.$giorni_current.' days';
    }
    } else {
    $film_current = $giorni_current.' days';
    }
    $film_current .= ' '.$testo;
    }
    var_dump($film_current);
    continuo while e funzione ultima release_data
    Codice PHP:

    if(($i-1) == 2) {
    unset($row);
    $row = null;
    }

    $y = 1;
    $row2 = true;
    //while query actor
    while ($row2):?>
    Query actor <?php $y=$y+1;
    if((
    $y-1) == 1) {
    $row2 = null;
    }
    endwhile;
    //fine while actor
    endwhile; //fine while film
    if(intval(substr($release_data, 0, 4)) && intval(substr($release_data, 5, 2)) && intval(substr($release_data, 8, 2))) {
    //differenza film dall'inizio carriera di un'attore
    $diff_film = date_create($sign.$release_data, $timezone_utc)->diff(date_create($start, $timezone_utc));
    $testo = 'differenza film inzio carriera';

    $year_film = $diff_film->y;
    $mese_film = $diff_film->m;
    $giorni_film = $diff_film->d;
    if(
    $year_film) {
    $film_now = $year_film.' years';
    } elseif(
    $mese_film == 0 && $giorni_film == 0) {
    $film_now = 'anno corrente';
    } elseif(
    $mese_film) {
    $film_now = $mese_film.' months';
    if(
    $giorni_film) {
    $film_now .= ' '.$giorni_film.' days';
    }
    } else {
    $film_now = $giorni_film.' days';
    }
    $film_now .= ' '.$testo;
    } else {
    $film_now = 'data non valida';
    }
    var_dump($film_now);

    ?>
    Ci sono solo due var_dump uno dentro al primo loop e l'atro fuori, inoltre stampo il testo quando disabilito il motore php. Sto simulando due iterazioni query film per il primo while e una iterazione query actor per il secondo while ma è anche dentro il primo while.
    Se lo provi assemblato il tutto puoi vederlo in azione senza query etc.
    Ovviamente sei tu a decidere quando stampare a video un testo, $ora_locale, $carriera al momento non verrà stampato.. spero ti aiuti.
    Expected result:
    Codice:
    Query film string(41) "6 months 19 days differenza anno corrente"
    Query actor Query film string(41) "6 months 19 days differenza anno corrente"
    Query actor string(38) "1 years differenza film inzio carriera"
    Ultima modifica di darbula : 09-09-2020 alle ore 14.41.21

  16. #106
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Grazie darbula

    lo testo e ti faccio sapere

  17. #107
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    riprendo questo thread che avevo lasciato in sospeso per mancanza di tempo

    dunque procediamo con ordine


    questo e' il risultato

    Parse error: syntax error, unexpected '?' in E:\OpenServer\domains\cinema\members\cinema.php on line 41
    line 41


    Codice PHP:
    $end = (strlen(ltrim($row->end. '+-')) > 4 ? $row->end.' 00:00:00' : ($row->end. ? varchar_four_year($row->end.).'-01-01 00:00:00' : ($row->died ?


    codice php funzioni rinominato in funzione_time

    Codice PHP:
    <?php
    function varchar_four_year($varchar) {
    $year = ltrim($varchar, '+');
    $sign = (isset($year[0]) ? ($year[0] == '-' && $year[0] = '' ? '-' : '') : '');
    $year_four = sprintf('%s%04d', $sign, $year);
    return
    $year_four;
    }
    function
    moment_tz($tz_utc) {
    $now = date_create('@'.$tz_utc);
    $display = date_format($now, 'Y-m-d H:i:s');
    return
    $display;
    }

    function
    moment_now($tz) {
    $now = date_create('now', $tz);
    return
    $now;
    }

    function
    moment_today($tz) {
    $today = date_create('today', $tz);
    return
    $today;
    }
    function
    moment_utc($moment_obj) {
    $moment_tm = date_format($moment_obj, 'U');
    return
    $moment_tm;
    }
    function
    local_timezone() {
    $tz_local = timezone_open('Europe/Moscow');
    return
    $tz_local;
    }
    ?>

    codice by darbula

    Codice PHP:

    <?php


    require_once '../funzioni/funzione_time.php';
    $timezone = local_timezone();
    $timezone_utc = timezone_open('UTC');
    $utc_ora = moment_utc(moment_now($timezone_utc));
    $ora = moment_tz($utc_ora);
    $utc_oggi = moment_utc(moment_today($timezone));
    $oggi = moment_tz($utc_oggi);
    //ora locale
    $ora_locale = date_format(moment_now($timezone), 'Y-m-d H:i:s');

    $start = strlen(ltrim($row->start, '+-')) > 4 ? $row->start.' 00:00:00' : varchar_four_year($row->start).'-01-01 00:00:00';
    $end = (strlen(ltrim($row->end. '+-')) > 4 ? $row->end.' 00:00:00' : ($row->end. ? varchar_four_year($row->end.).'-01-01 00:00:00' : ($row->died ? $row['died'].' 00:00:00' : $ora)));

    $carriera = 'abbandono carriera';
    if(
    $row->died && ($row->died.' 00:00:00') == $end) {
    $carriera = 'fine carriera';
    } elseif(
    $ora == $end) {
    $carriera = 'carriera in corso';
    }

    $film_now = '';
    if(
    $row){
    $local_release = $row->release_data;
    $local_data = $row->year;
    }
    $release_data = $local_release ? $local_release.' 00:00:00' : varchar_four_year($local_data).'-01-01 00:00:00';
    $sign = $release_data[0] == '-' && $release_data[0] = '' ? '-' : '';

    $film_current = 'data non valida';
    if(
    intval(substr($release_data, 0, 4)) && intval(substr($release_data, 5, 2)) && intval(substr($release_data, 8, 2)) && substr($sign.$release_data, 0, 4) == substr($ora, 0, 4)) {
    //differenza anno corrente film
    $diff_current_year = date_create($sign.$release_data, $timezone_utc)->diff(date_create($oggi, $timezone_utc));
    $testo = 'differenza anno corrente';

    $year_current = $diff_current_year->y;
    $mese_current = $diff_current_year->m;
    $giorni_current = $diff_current_year->d;
    if(
    $year_current) {
    $film_current = $year_current.' years';
    } elseif(
    $mese_current == 0 && $giorni_current == 0) {
    $film_current = 'anno corrente';
    } elseif(
    $mese_current) {
    $film_current = $mese_current.' months';
    if(
    $giorni_current) {
    $film_current .= ' '.$giorni_current.' days';
    }
    } else {
    $film_current = $giorni_current.' days';
    }
    $film_current .= ' '.$testo;
    }
    var_dump($film_current);

    ?>

    <? endwhile; ?>

    <!-- TESTO DEL COMMENTO -->
    Ultima modifica di blackskyisback : 13-08-2021 alle ore 21.52.50

  18. #108
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,064

    Predefinito

    Non sono entrato nel merito del codice, ma a livello di sintassi dovrebbe essere:
    Codice PHP:
    $end = (strlen(ltrim($row->end, '+-')) > 4 ? $row->end.' 00:00:00' : ($row->end ? varchar_four_year($row->end).'-01-01 00:00:00' : ($row->died ? $row['died'].' 00:00:00' : $ora)));
    Ciao!

  19. #109
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Ciao @blackskyisback, il calcolo tra due date non è complicato. Il discorso si complica quando vuoi mettere a confronto due date che non fanno parte dello stesso gruppo.
    Ti dirò ciò che ricordo, tu non vuoi calcolare semplicemente la carriera di un attore (inizio carriera, e fine carriera (o morte o scomparso etc)), ma talvolta vuoi comparare con altre date. Al momento ho perso il senso del mio script (scusami).
    Ma perché invece del VARCHAR non li trasformi in un campo mysql di tipo data?
    Comunque per un oggetto DateTime ti occorre anno-mese-giorni. Quindi se possiedi unicamente anno aggiungi anche 01-01 etc.
    Ultima modifica di darbula : 14-08-2021 alle ore 12.20.01

  20. #110
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Ragazzi Buon Ferragosto
    domani vi riepilogo il tutto, se ricordo pure io perche' e' passato molto tempo da quando ho scritto questa richiesta

  21. #111
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    mi sono riletto i topic precedenti ed ecco l'aggiornamento con relativa foto reinserita


    Tabella actor
    start
    varchar 10

    end
    varchar 10


    Tabella film
    year
    year 4

    release_data
    date





    lo script dovrebbe calcolare la differenza tra start (actor) e release_data (film)

    attenzione, release_data potrebbero essere molti, se guardiamo lo screenshot sotto ne vediamo 2





    2021-02-12

    2021-08-15


    quella da tenere conto sarebbe 2021-02-12 + start nel primo caso



    come calcolare se l'anno e' corrente?


    se l'anno e' attuale (2021) allora escludere start e calcolare 2021-02-12 + today
    che risulta 1 giorno








    la query in questo caso e' questa che collega actor, film_actor, film


    Codice PHP:

    $actor_id
    = $_GET['id'];

    $query = "
    SELECT
    film_actor.*,
    actor.*,
    film.*
    FROM
    film_actor
    INNER JOIN film ON film_actor.film_id = film.film_id
    INNER JOIN actor ON film_actor.actor_id = actor.actor_id
    WHERE
    film_actor.actor_id = "
    . $actor_id;

    si accettano consigli per migliorare il codice e il ragionamento
    Ultima modifica di blackskyisback : 16-08-2021 alle ore 08.54.00

  22. #112
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Citazione Originalmente inviato da darbula Visualizza messaggio
    Ma perché invece del VARCHAR non li trasformi in un campo mysql di tipo data?
    sarebbe una buona idea, ma dovrei farli tutti in una volta (sono 763 record),
    il dubbio e che cosi facendo da varchar a date non si perdono i dati?

  23. #113
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Ciao alex, il codice php dovrà essere la replica esatta della struttura del relational database management system (RDBMS).
    Cosa usi per interagire con MySQL (oltre al tuo script php)? forse phpMyAdmin, bene controlla la tabella e indica la struttura (i vari campi di nome_tabella per tipo, null, predefinito e extra) ma senza effettuare JOIN, poi si adatta anche per il caso della JOIN e in ciò che vuoi fare tu.

    Vediamo prevedo la struttura molto diversa da come la farei io. Scorri in basso a un certo punto vedrai la foto con struttura https://supporthost.com/it/phpmyadmin/
    Certamente c'è il rischio di perdere le date se MySQL è configurato in un certo modo, effettivamente anche quando funziona potrebbe cambiare il contesto se usa il timezone Europe/Moscow. Da una ricerca su Internet le date del cinema sono espresse in UTC. Significa con Europe/Rome (l'ora locale), il momento sarebbe 2021-08-16 00:00:00.000000 (UTC+2), che in UTC è 2021-08-15 22:00:00.000000. MySQL non conosce se il momento dovrà essere riferito a UTC e si traduce in un momento falso positivo.
    Ultima modifica di darbula : 16-08-2021 alle ore 12.07.29

  24. #114
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Ciao darbula,

    all'inizio usavo phpmyadmin, ma moltissime volte ho riscontrato problemi di freeze ed errori (dato che e' un'interfaccia web) ho deciso di passare ad altro, ho scoperto Navicat Premium, un software potentissimo, ha integrato anche un generatore di query che mi semplica molto la vita

    https://www.navicat.com/en/products/navicat-premium

    Ultima modifica di blackskyisback : 16-08-2021 alle ore 12.16.31

  25. #115
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Uhm io mi ricordo che end poteva essere anche null o stringa vuota (chissà se entrambi).
    Nel riquadro SQL dopo aver selezionato il database e tabella, inserisci questa query
    Codice:
    SELECT * FROM table WHERE end IS NULL;
    Prova anche cambiando IS NULL con = ''
    Esegui una una nuova query modificando end con start. Beh phpMyAdmin è uno script php (a volte dovrà essere configurato con opportune variabili php, del resto come altri progetti php).
    Ultima modifica di darbula : 16-08-2021 alle ore 14.23.32

  26. #116
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    si, hai ragione, end puo' essere anche NULL, con la query che mi hai postato risultano 174 record NULL

    il campo end e per fine carriera, c'e anche un campo died (text) in caso di morte

  27. #117
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Hai anche stringhe vuote? Cambia IS NULL con = '' A limite fai backup e proviamo la conversione di null in stringa vuota (ovviamente nella foto NOT NULL non dovrà essere selezionato, com'è adesso).
    Ultima modifica di darbula : 16-08-2021 alle ore 14.29.23

  28. #118
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    anche stringhe vuote risultano, 370 record

  29. #119
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Se hai fatto il backup, puoi convertire dapprima impostando NOT NULL e DEFAULT empty string su navicat. Effettua nuovamente la query WHERE campo IS NULL o WHERE campo = ''; (chissà forse li traduce automaticamente).
    Poi USE MODIFY ALTER TABLE <table> MODIFY <column> VARCHAR(<XX>) DEFAULT ''; sostituisci con il nome tabella, nome colonna e 10 per VARCHAR (end e start hanno lunghezza 10);
    Ultima modifica di darbula : 16-08-2021 alle ore 16.04.27

  30. #120
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Citazione Originalmente inviato da darbula Visualizza messaggio
    Se hai fatto il backup, puoi convertire dapprima impostando NOT NULL e DEFAULT empty string su navicat. Effettua nuovamente la query WHERE campo IS NULL o WHERE campo = ''; (chissà forse li traduce automaticamente).
    Poi USE MODIFY ALTER TABLE <table> MODIFY <column> VARCHAR(<XX>) DEFAULT ''; sostituisci con il nome tabella, nome colonna e 10 per VARCHAR (end e start hanno lunghezza 10);
    ti riferisci al campo end e start?

Pagina 4 di 5 PrimoPrimo ... 2345 UltimoUltimo

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •