Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    3 variabili diventino una data

    io ho queste tre variabili:
    codice:
            $giorno=$_POST[day];
            $month=$_POST[month];
            $year=$_POST[year];
    Io vorrei che queste tre variabili che arrivano da delle textbox diventassero una variabile chiamata day[0] e in formato date("d-m-Y") ho provato di tutto dalle unioni delle stringhe alle conversioni di tipo. So che probabilmente e molto semplice ma non riesco ad arrivarci. C'e qualcuno che sa come si fa?

  2. #2
    Utente di HTML.it L'avatar di Lucada
    Registrato dal
    Apr 2005
    Messaggi
    176
    La variabile $dai[0] sarebbe un array... non capisco perchè la vuoi chiamare così... penso che ti darebbe problemi.

    Comunque sia per unirle basta fare così:

    codice:
    $nuova_variabile = $giorno . "-" . $mese . "-" . $anno;
    Il vero io è quello che tu sei, non quello che gli altri hanno detto di te. [Paulo Coelho]

  3. #3
    io ho un script che genera i 7 giorni successivi a partire da una data. Le memorizza in day[0] day[1] day[2] day[3]... day[6];

    dove day[0] e la data da cui parto a fare i calcoli. Allora se io parto da day[0]=date(d-m-Y) allora va tutto liscio. Se io parto da $day[0]="gg-mm-aaaa" (eg./ $day[0]="04-06-2008" va tutto liscio ma se parto da una stringa che costruisco come hai suggerito te non funziona niente... e come se sapesse che quella stringa che unisco non e una data

  4. #4
    Utente di HTML.it L'avatar di Lucada
    Registrato dal
    Apr 2005
    Messaggi
    176
    Posta il codice...
    Il vero io è quello che tu sei, non quello che gli altri hanno detto di te. [Paulo Coelho]

  5. #5
    codice:
    if($data_impostata==0){
            $day[0]=date("d-m-Y");
            $month=date("m");
            $year=date("Y");
    }
    if($data_impostata==1){
            $giorno=$_POST[day];
            $month=$_POST[month];
            $year=$_POST[year];
            //qua day[0] deve diventare la data completa formata da giorno month e year
    }
    
    for($c=1;$c<7;$c++){
        $day[$c]=$day[$c-1]+1;
        $day[$c]=$day[$c]."-$month-$year";
        
        if($day[$c]>=28){
        switch($month){
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10://mesi con 31giorni (apparte dicembre che e infondo per aggiornare l'anno)
                if($day[$c]>31){
                    $day[$c]=1;
                    $month++;
                    $month="0".$month;
                    $day[$c]=$day[$c]."-$month-$year";
                }
                break;
                
                case 4:
                case 6:
                case 9:
                case 11: //mesi con 30 giorni 
                if($day[$c]>30){
                        $day[$c]=1;
                        $month++;
                        $month="0".$month;
                        $day[$c]=$day[$c]."-$month-$year";
                    }
                break;
                
                case 2: //febbraio
                if($year%4==0){
                    if($day[$c]>29){
                        $day[$c]=1;
                        $month++;
                        $month="0".$month;
                        $day[$c]=$day[$c]."-$month-$year";
                    }
                }
                else{
                    if($day[$c]>28){
                        $day[$c]=1;
                        $month++;
                        $month="0".$month;
                        $day[$c]=$day[$c]."-$month-$year";
                    }
                }
                break;
                case 12://dicembre aggiornamento dell'anno    
                    if($day[$c]>31){
                        $day[$c]=1;
                        $month="01";
                        $year++;
                        $day[$c]=$day[$c]."-$month-$year";
                        }
                break;
                }
        }
    }
    Nel caso di data_impostata==0 funziona perche la data viene generata da date. ma nel caso di data_impostata==1 non funziona perche non riesco a costruire la data dai post passati.

  6. #6
    Utente di HTML.it L'avatar di Lucada
    Registrato dal
    Apr 2005
    Messaggi
    176
    Hai controllato inanzitutto le variabili in output?

    Cioè tipo:

    $_POST['giorno'] ti deve dare un risultato tipo 01, 02, 03 e via dicendo... senza spazi... etc... quindi fai un attimo di controlli su questi dati.

    Mi sembra strano che non vada...

    P.S.
    Posta anche l'errore che ti da.
    Il vero io è quello che tu sei, non quello che gli altri hanno detto di te. [Paulo Coelho]

  7. #7
    l'errrore che mi da e che sono sbagliatì i contenuti di day[1] fino a day[6] mentre nel caso di data_impostata==0 sono giusti. Il controllo sulle variabili non lo fatto per il momento perche per ora li sto inserendo io quindi controllo che non ci metto spazi e che uso 2 caratteri. Come posso controllare se c'e qualche carattere di fine stringa in piu? anche se non penso.

  8. #8
    Utente di HTML.it L'avatar di Lucada
    Registrato dal
    Apr 2005
    Messaggi
    176
    Beh basta stamparteli... in più facci un Trim() per levare eventuali spazi bianchi... e un un strlen() per vedere la lunghezza della stringa.

    fai tipo

    codice:
    $var = strlen(trim($_POST['giorno']));
    
    echo "lunghezza stringa: " . $var . "
    ";
    echo "variabile: " . $_POST['giorno'];
    Ti sto dicendo di fare questi controlli dando per scontato che il codice sotto di switch sia funzionante e senza errori.

    Quindi dico di controllare l'input.
    Il vero io è quello che tu sei, non quello che gli altri hanno detto di te. [Paulo Coelho]

  9. #9
    codice:
    if($data_impostata==0){
            $giorno=date("d-m-Y");
            $month=date("m");
            $year=date("Y");
    }
    if($data_impostata==1){
            $giorno=trim($_POST[day]);
            $month=trim($_POST[month]);
            $year=trim($_POST[year]);
            $giorno=$giorno."-".$month."-".$year;
            $var=strlen($giorno);
            echo $var;
            echo $giorno;
    }
    
    for($c=1;$c<7;$c++){
        if($c==1){
            $day[$c]=$giorno+1;
            $day[$c]=$day[$c]."-$month-$year";
            }
        else{
            $day[$c]=$day[$c-1]+1;
            $day[$c]=$day[$c]."-$month-$year";
        }
        if($day[$c]>=28){
        switch($month){
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10://mesi con 31giorni (apparte dicembre che e infondo per aggiornare l'anno)
                if($day[$c]>31){
                    $day[$c]=1;
                    $month++;
                    $month="0".$month;
                    $day[$c]=$day[$c]."-$month-$year";
                }
                break;
                
                case 4:
                case 6:
                case 9:
                case 11: //mesi con 30 giorni 
                if($day[$c]>30){
                        $day[$c]=1;
                        $month++;
                        $month="0".$month;
                        $day[$c]=$day[$c]."-$month-$year";
                    }
                break;
                
                case 2: //febbraio
                if($year%4==0){
                    if($day[$c]>29){
                        $day[$c]=1;
                        $month++;
                        $month="0".$month;
                        $day[$c]=$day[$c]."-$month-$year";
                    }
                }
                else{
                    if($day[$c]>28){
                        $day[$c]=1;
                        $month++;
                        $month="0".$month;
                        $day[$c]=$day[$c]."-$month-$year";
                    }
                }
                break;
                case 12://dicembre aggiornamento dell'anno    
                    if($day[$c]>31){
                        $day[$c]=1;
                        $month="01";
                        $year++;
                        $day[$c]=$day[$c]."-$month-$year";
                        }
                break;
                }
        }
    }
    Adesso il echo $giorno mi da la data coretta come stringa e ho modificato il for perche prenda $giorno il primo giro ma cmq non funziona nel caso di data_impostata==1. e strlen restituisce 10 che e coretto.

  10. #10
    ho fatto anche un strlen di $giorno nel caso data_impostata==0 e restituisce anche lui 10 quindi in teoria sono uguali. Non capisco...

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 © 2025 vBulletin Solutions, Inc. All rights reserved.