Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    340

    Un aiuto? errore su separazione data in stringa

    Ciao ragazzi, ho un piccolo problema nel capire come separare una data, questa mi arriva da mysql GG mm aaaa da tre varchar lunghi rispettivamente 2,2,4 separati .
    devo poterli reinserire nel db una volta selezionato il cambio data.
    Fin qui niente di strano, quel che non riesco a controllare sono degli errori nel riestrarre i campi separati una volta cambiata la data!
    Ho scritto questo per ora.
    Codice PHP:

    session_start
    ();

     
    setlocale(LC_TIME,"it_IT");

         
    $dataarrivo  =$_SESSION["giorno"] .'/'.$_SESSION["mese"].'/'.$_SESSION["anno"] ;

    // mi stampo a video la data per controllare cosa arriva
           
    echo $dataarrivo .'
    '
    ;
        
    $newdate strtotime '+1 day' strtotime $dataarrivo ) ) ; // facciamo l'operazione
    $newdate date 'd/m/y' $newdate ); //trasformiamo la data nel formato italiano 

    // e la ricontrollo
     
    echo $newdate;

    // rimetto in sessione i tre campi separati 
        
    $_SESSION['giorno'] = date('d',$newdate);
    $_SESSION['mese'] = date('m',$newdate);
    $_SESSION['anno'] = date('y',$newdate); 
    Il problema è che mi riporta tutto alla data 02/01/1970 !!
    e quando mi devo memorizzare il giorno,mese,anno separatamente
    $_SESSION['giorno'] = date('d',$newdate);

    segnala questo errore
    ( A non well formed numeric value encountered )

    mi potete aiutare a capire dove sto toppando?

  2. #2

    Re: Un aiuto? errore su separazione data in stringa

    Originariamente inviato da marcopa
    mi potete aiutare a capire dove sto toppando?
    sicuramente a monte, e cioè dal tipo di dato che ti arriva.
    Perché complicarsi la vita con 3 campi varchar quando c'è l'apposito Date? (che puoi formattare in qualsiasi modo tu voglia, direttamente nella query attraverso DATE_FORMAT()
    http://codecanyon.net/category/all?ref=Manuelandro
    And I bet she told a million people that she'd stay in touch, Well all the little promises they dont mean much,When theres
    memories to be made

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    340
    Manuelandro, grazie per l'intervento.
    Il problema non è tanto il fatto di averli separati o meno!
    In origine avevo impostato dai 3 campi un campo data unico, ma avevo sempre lo stesso problema, anzi HO ancora lo stesso problema.
    Io parto da un form che presenta una data e due pulsanti, avanti e dietro.
    < ( 26/06/2012 ) > il click manda ad un controllo con la data come $_GET

    Codice PHP:
      
    echo '<table width="800" border="0">';
    echo 
    '<tr>';
    echo 
    '<td width="800" align="center" TITLE="Scorri i Giorni"  >';
    echo 
    '[url="indietro.php?data='.$dataprenotazione'"][img]../images/giornomeno.png[/img][/url] '.$dataprenotazione ;
    echo 
    '[url="avanti.php?data='.$dataprenotazione.'"][img]../images/giornopiu.png[/img][/url]';   
    echo 
    '</td> </tr>';
    echo 
    '</table>'
    Al click in avanti devo far avanzare la data di un giorno avanti

    Codice PHP:
    session_start();

    $arrivo ='';
        
      if (!empty(
    $_GET['data'])) {
          
            
    $arrivo $_GET['data'] ;
             }
             
           
    $dataItaliana convertiDataTime($arrivo);
     
    //----------------------------------------------------------------
     
    function convertiDataTime($dataTime)
     { 
    $data date("j/m/Y"$dataTime); 
     
      
    $oggi =  mktime$data("m"), $data("j")+1$data("y") ); 
        
     
         return(
    "$oggi "); 
    }

     return; 
    Il problema è mktime, non accetta la sintassi da me scritta, accetta solo la data del timestamp!

    Io scrivo
    $oggi = mktime( $data("m"), $data("j")+1, $data("y") );

    ma lui pretende solo
    $oggi = date("j/m/Y", mktime( date("m"), date("j")+1, date("y") ));

    riportandomi cosi sempre alla stessa data, cioe' un solo giorno in avanti.
    Mi sapete spiegare perchè non riesco a infilare nel mktime una data diversa
    dal date?

  4. #4
    Utente di HTML.it L'avatar di garakkio
    Registrato dal
    Dec 2011
    residenza
    Roma
    Messaggi
    480
    non puoi fare così, non puoi separare anno/mese/giorno e aggiungere 1 al giorno, perché le date non funzionano così. Dopo il 30 giugno non c'è il 31 giugno, c'è il 1 luglio (figuriamoci poi dopo il 31 dicembre)

    Usa questa funzione: http://php.net/strtotime

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    340
    Ciao, grazie per l'attenzione,
    mi sento Tonto, non capisco chiaramente la sintassi di strtotime che mi hai consigliato
    ho provato ad usarla sulla data intera ma mi restituisce 01/01/1970 come data successiva a quella di oggi!
    Perche?
    La funzione riceve in formato corretto la data 26/06/2012, dovrebbe avanzare di un giorno!

    Codice PHP:
    function convertiDataTime($dataTime)
     { 
           
    $oggidate('d/m/Y',strtotime("$dataTime + 1"));
          
    $dataOk =  $oggi ;
          return(
    "$dataOk "); 

    Questa data 01/01/1970 di solito mi veniva fuori in formati non corretti! mi sapete dire
    dove è sbagliato?

  6. #6
    Utente di HTML.it L'avatar di garakkio
    Registrato dal
    Dec 2011
    residenza
    Roma
    Messaggi
    480
    Ma hai letto la pagina sul manuale?
    Devi fare una cosa del genere
    Codice PHP:
    <?php strtotime($data ' +1 day')

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    340
    è proprio il manuale che mi manda in palla.

    questa è la data dal $_GET 26/06/2012
    con strtotime 1340716132

    echo ' strtotime ' .strtotime("$dataTime") ,"\n";

    con aggiunta di 1+ day

    $oggi= strtotime("+1 day") ;

    data di ritorno $oggi = 1340802532

    $dataOk = date('d/m/Y',$oggi) ;
    in formato data corretto = 27/06/2012

    ma il problema è sempre lo stesso, i cicli seguenti hanno sempre data 27/06/2012
    non và più avanti dopo il primo click non cambia più!

  8. #8
    Utente di HTML.it L'avatar di garakkio
    Registrato dal
    Dec 2011
    residenza
    Roma
    Messaggi
    480
    devi partire da una data in formato Y-m-d

    Codice PHP:
    $pippo '2012-06-12';

    echo 
    date('d/m/Y'strtotime($pippo ' +1 day')); 

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    340
    grazie per il prezioso aiuto, avevo già provato
    questa soluzione, ma mi restituiva sempre quella dannata
    data 01/01/1970

    $oggi = date('d/m/Y', strtotime($dateTime . ' +1 day'));

    il problema l'ho visto solo quando mi hai passato l'esempio.
    avevo la data nel formato italiano gg/mm/aaaa ma
    strtotime gestisce solo il formato inglese.

    Grazie ancora!

  10. #10
    Utente di HTML.it L'avatar di garakkio
    Registrato dal
    Dec 2011
    residenza
    Roma
    Messaggi
    480
    Figurati.
    Solo per precisione: il formato Y-m-d non è il formato inglese (che invece è m/d/Y) ma è il formato internazionale.

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.