mktime su mac funziona su windows no?

volturnosky

Nuovo Utente
17 Dic 2012
6
0
0
Salve a tutti;

sto facendo un sito per la gestione di un albergo un mio amico che lavora con un macbook mi ha dato una mano, sul suo computer le date vengono memorizzate correttamente nel db, sul mio (windows) viene memorizzato 0000-00-00 00:00:00 e ovviamente quando lo vado a leggere tramite la funzione date("d / M / Y", $row['data_da']) leggo 1 jan 1970.

questo è come memorizzo la data:

PHP:
<?php
include('../../include/config.php'); 
if (isset($_POST['submitted'])) { 
  foreach($_POST AS $key => $value) { $_POST[$key] = mysql_real_escape_string($value); } 
  $data_da = mktime(0,0,0,$_POST['a_m'],$_POST['a_d'],$_POST['a_y']);;
  $data_a = mktime(0,0,0,$_POST['p_m'],$_POST['p_d'],$_POST['p_y']);;
  $sql = "INSERT INTO `listino` (`regola`,`priorita`,`data_da`,`data_a`,`percentuale`) 
  		VALUES ('{$_POST['regola']}','{$_POST['priorita']}',$data_da,$data_a,'{$_POST['percentuale']}')"; 
  mysql_query($sql) or die(mysql_error()); 
  echo "Added row.<br />"; 
  echo "<a href='list.php'>Back To Listing</a>"; 
} 
$mesi = array("","Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"); 
?>

<form action='' method='POST'> 
<p><b>Regola:</b><br /><input type='text' name='regola'/> 
<p><b>Priorita:</b><br /><select name="priorita"> <? for($i=1;$i<=2;$i++) echo "<option value='$i'>$i</option>"; ?> </select>
<p><b>Dal:</b><br />
  <select name="a_d"> <? for($i=1;$i<=31;$i++) echo "<option value='$i'>$i</option>"; ?> </select> /
  <select name="a_m"> <? for($i=1;$i<=12;$i++) echo "<option value='$i'>$mesi[$i]</option>"; ?> </select> /
  <select name="a_y"> <? for($i=2012;$i<=2015;$i++) echo "<option value='$i'>$i</option>"; ?> </select>
<p><b>Al:</b><br />
  <select name="p_d"> <? for($i=1;$i<=31;$i++) echo "<option value='$i'>$i</option>"; ?>  </select> /
  <select name="p_m"> <? for($i=1;$i<=12;$i++) echo "<option value='$i'>$mesi[$i]</option>"; ?>  </select> /
  <select name="p_y"> <? for($i=2012;$i<=2015;$i++) echo "<option value='$i'>$i</option>"; ?> </select>
<p><b>Percentuale:</b><br />x<input type='text' name='percentuale'/> 
<p><input type='submit' value='Add Row' /><input type='hidden' value='1' name='submitted' /> 
</form>

Qualcuno sa spiegarmi perchè non funziona?
 
Ultima modifica di un moderatore:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
dovrebbe funzionarti, io lo uso regolarmente su windows.
comunque un paio di osservazioni:
sostituisci tutti gli schort tag php con <?php
poi ti conviene verificare le date prima potresti trovarti con un 31/2/2013
e comunque verifica i vari $_POST con un var dump es.
var_dump($_POST['p_m']);
e verifica che vengano trasmessi come dovrebbe


p.s.
quando posti del codice racchiudilo tra gli appositi tag (seconda riga formattazione, ultime tre iconcine nell'ordine CODE, HTML, PHP)
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
se usi il timestamp e sbagliato, il timestamp è un numero intero quindi il campo andrebbe settato int(15)
poi, secondo me, il timestamp è uno dei sistemi più comodi per salvare le date, poi visualizzarlo in formato umano e semplicissimo (e anche fare calcoli e confronti)

PHP:
echo date("d-m-Y",$valore_del_timestamp);
es. nel tuo caso, dopo aver trasformato le date dal post puoi fare diversi controlli (anzi dovresti), es.
PHP:
<?php
//......
$data_da = mktime(0,0,0,$_POST['a_m'],$_POST['a_d'],$_POST['a_y']);;
 $data_a = mktime(0,0,0,$_POST['p_m'],$_POST['p_d'],$_POST['p_y']);;
$adesso=time();
if($data_da > $data_a){
echo "la data di arrivo non puo essere successiva a quella di partenza";
}elseif($data_da < $adesso || $data_a < $adesso){
echo "la data di arrivo o di partenza non possono essere precedenti alla data di oggi";
}
//.....
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
il tuo problema secondo me è nelle select
PHP:
<select name="a_d"> 
    <?
    for ($i = 1; $i <= 31; $i++)
        echo "<option value='$i'>$i</option>";
    ?> 
</select>
anziche 1 dovresti mostrare e inviare 01
prova modificando cosi
PHP:
<select name="a_d"> 
    <?php
    for ($i = 1; $i <= 31; $i++) {
        $i = str_pad($i, 2, '0', STR_PAD_LEFT);
        echo "<option value='$i'>$i</option>";
    }
    ?> 
</select>
stessa cosa per i mesi

EDIT

lascia perdere questo messaggio avevo visto male
certo se hai un campo DATETIME non puoi iviare un intero
io a differenza di Borgo preferisco il TIMESTAMP o DATETIME molto piu semplici da gestire nelle query

puoi modificare cosi
PHP:
$data_da = $_POST['a_y'] . "-" . $_POST['a_m'] . "-" . $_POST['a_d'];
e nella query racchiudere la variabile tra apici
 
Ultima modifica:

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Giusto per puntualizzare perchè mi sa che su questo (l'utilizzo del TIMESTAMP) siamo tutti d'accordo.

poi, secondo me, il timestamp è uno dei sistemi più comodi per salvare le date, poi visualizzarlo in formato umano e semplicissimo (e anche fare calcoli e confronti)

io a differenza di Borgo preferisco il TIMESTAMP o DATETIME molto piu semplici da gestire nelle query

Anche Borgo come vedi :)
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
@Longo
io mi riferisco al tipo dato TIMESTAMP di SQL che ha questo formato
0000-00-00 00:00:00
con il quale è possibile usare funzioni tipo DATEDIFF , BETWEEN , TIMESTAMPDIFF, CURDATE e altre. è possibile inoltre impostare il campo con CURRENT TIMESTAMP, in questo modo sernza aggiungere niente in un INSERT verrà inserita in automatico la data attuale
Borgo invece si riferisce all' unix timestamp
Borgo ha scritto:
il timestamp è un numero intero
ovvero la data calcolata in secondi a partire dal 1 gennaio del 1970
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
in un certo senso anche criric ha ragione, però comunque per rendere la data in italiano si devono sempre fare delle trasformazioni, o se in input in italiano trasformarla in albionico.
qualche funzioncina estra comunque va fatta o prima o dopo.
poi penso che sia soprattutto uno stile di programmazione.
 
Discussioni simili
Autore Titolo Forum Risposte Data
M Cancellare record a tempo con formato data mktime PHP 7
felino Mac OS e Client Mail: Stato non in linea Mac e Software 1
L Studio SQL 2104 o SQL2019 Mac m1 Database 0
B Incongruenze tra Mac ver e PC ver Photoshop 1
E Cambiare lingua in Elements per Mac Mac e Software 2
D Nuova ssd su mac Mac e Software 4
S Aprire su Mac Progetto PSD salvato su win Photoshop 0
L Trasferimento dei file OLM Mac in formato PST sul sistema Mac Mac e Software 1
I Upgrade PHP su mac G5 PHP 2
F Realizzare video su Mac Mac e Software 0
I [PHP] Ricavare MAC address PHP 2
R Filtro login tramite mac-address su apache2 SSL Apache 1
L [PHP] codifica file utf8-windows .. giorno dopo trovo utf-8 mac PHP 3
Rikk73 onScroll non funziona su firefox su mac jQuery 4
Z Miglior modem/router Wi-Fi per rete con Mac, Win e Android? Reti LAN e Wireless 1
N FileZilla su mac pro 13" Mac e Software 0
Creatt Mac Power macintoch 9600/300 Mac e Software 0
E non riesco a installare git su mac Mac e Software 0
N esiste la versione winrar per mac Mac e Software 0
R Ciao a tutti! sono nuovo e spero che qualcuno possa aiutarmi ad imparare a usare un mac book apple Presentati al Forum 1
S Copiare e incollare con un Mac WordPress 11
L Inizio sito con Mamp in Mac PHP 0
A client FTP gratis per Mac Mac e Software 1
D Formattare Mac Os x avendo perso i DVD Mac e Software 0
F formato Mac Address PHP 0
S Problema con ADODB.Stream su MAC-Safari Classic ASP 12
voldemort Simbolo Euro su tastiera Mac Mac e Software 1
pup3770 Su Mac funziona - su windows da warning PHP 9
A Word per Mac 2011: è possibile formattare automaticamente in corsivo tutte le date di un doc.? Mac e Software 2
maxbossi Rimozione Flashfake e Flashback da Mac Sicurezza e Virus 0
maxbossi Rimuovere manualmente il virus Flashback da Mac Sicurezza e Virus 0
M Come visualizzare headers in Apple Mail (Mac OS X) Mac e Software 2
S JDK su MAC Mac e Software 0
Eugene Link verso FTP su MAC Mac e Software 2
B Mac: decomprimere file .7z Mac e Software 2
B Su Windows ctrl+stamp... su Mac? Mac e Software 1
B Qual'è il tasto "opzione" del Mac? Mac e Software 1
M Mac OS X - aprire file ZIP con password? Mac e Software 0
voldemort CCleaner per Mac Mac e Software 1
voldemort Microsoft Office for Mac VS. iWork Mac e Software 1
voldemort Huawei E169: non funziona su Mac OS X Snow Leopard Mac e Software 1
renoir09 software dividere sql su mac Database 1
S Visualizzazione pagina php con Safari del MAC PHP 10
M WinRAR per MAC? Mac e Software 4
I forum in stile mac - apple Webdesign e Grafica 3
I sito x il download e non solo di programmi per mac Presenta il tuo Sito 1
T Reinstallare e configurare Apache per Mac OSX 10.8.5 Apache 2
F i mac Supporto Mr.Webmaster 0
codesurfer Parametri Mac OS X Dockbar Javascript 0
R EasyPhp e MAC? Soluzione? Database 1

Discussioni simili