Pagina 4 di 4 PrimoPrimo ... 234
Visualizzazione risultati 91 fino 106 di 106
Like Tree3Likes

Discussione: Calcolo tra start release_data

  1. #91
    Data registrazione
    29-05-2012
    Messaggi
    209

    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'], '+-')) > $row['start'].' 00:00:00' varchar_four_year($row['start']).'-01-01 00:00:00';
    $end = ($row['end'] ? (strlen(ltrim($row['end'], '+-')) > $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 19.43.53

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

    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
    Data registrazione
    29-05-2012
    Messaggi
    209

    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
    Data registrazione
    29-05-2012
    Messaggi
    209

    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 08.11.19

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

    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 12.25.00

  6. #96
    Data registrazione
    29-05-2012
    Messaggi
    209

    Predefinito

    forse hai ragione tu, ma come mai visulizzo queste?

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

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

    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 12.36.52

  8. #98
    Data registrazione
    29-05-2012
    Messaggi
    209

    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
    Data registrazione
    24-04-2011
    Messaggi
    2,158

    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.
    Calcolo tra start release_data
    Ultima modifica di darbula : 08-09-2020 alle ore 13.20.14

  10. #100
    Data registrazione
    29-05-2012
    Messaggi
    209

    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
    Data registrazione
    24-04-2011
    Messaggi
    2,158

    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 Calcolo tra start release_data 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 14.46.06

  12. #102
    Data registrazione
    29-05-2012
    Messaggi
    209

    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
    Data registrazione
    24-04-2011
    Messaggi
    2,158

    Predefinito

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

  14. #104
    Data registrazione
    29-05-2012
    Messaggi
    209

    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
    Data registrazione
    24-04-2011
    Messaggi
    2,158

    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'], '+-')) > $row['start'].' 00:00:00' varchar_four_year($row['start']).'-01-01 00:00:00';
    $end = (strlen(ltrim($row['end'], '+-')) > $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_data04)) && intval(substr($release_data52)) && intval(substr($release_data82)) && substr($sign.$release_data04) == substr($ora04)) {
        
    //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 == && $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_data04)) && intval(substr($release_data52)) && intval(substr($release_data82))) {
        
    //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 == && $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 15.41.21

  16. #106
    Data registrazione
    29-05-2012
    Messaggi
    209

    Predefinito

    Grazie darbula

    lo testo e ti faccio sapere

Pagina 4 di 4 PrimoPrimo ... 234

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
  •