- Home
- Categorie
- Coding e Sistemistica
- PHP
- data e ora? consigli
-
No,
'date(d,'data')'='date(d,time())', ritorna 'error in your syntax near ...'
se ho capito fai un check del tipo:
dove il giorno? (d) è contenuto in campo data ed è uguale al giorno del time?Mi sa che così non può funzionare perchè se hai per assurdo due time uguali ti bypassa la data? (ipotesi?).
Oppure un semplice check dove data è uguale a oggi?
'date(Y,m,d,'data')'='date(now())'.
-
Esatto, il controllo era quello.
Allora agisci direttamente sui risultati.
Nel ciclo while metti
[PHP]if(date("dmY",$row_test['data'])==date("dmY",time())){
//visualizzi il codice
}
//non ti serve l'else poiché non ti interessa vedere gli altri valori.[/PHP]
Così analizzi tutti i record uno per uno e se la data è uguale al giornomeseanno(non è importante la formattazione poiché ti serve fare un confronto tra due valori, non visualizzarli) di oggi allora te li visualizza.
-
Mmm... mi sa che non va,
non vedo più nulla neanche l'errore[PHP]echo '<table width="70%" border="1">';
do {
$time=strtotime($row_test['data']);
if(date("dmY",$row_test['data'])==date("dmY",time())){
?>
<tr>
<th scope="col"><?php echo $row_test['id']; ?></th>
<th scope="col"><?php echo $row_test['cognome']; ?></th>
<th scope="col"><?php echo $row_test['stato']; ?></th>
<th scope="col"><?php echo date("d-m-Y",$time); ?></th>
<th scope="col"><?php echo date("H:i:m",$time); ?></th>
<th scope="col"><?php echo $row_test['ip']; ?></th>
</tr>
<?php
}
} while ($row_test = mysql_fetch_assoc($test));
?>
</table> [/PHP]Se invece commento l'if e la graffa finale vedo tutto perfettamente, ergo l'ho posizionato male.
Any ideas?
-
Non è che non ti stampa nulla perché non hai record con la data di oggi?!?!?!?!
Se ce li hai, a scanso di equivoci:
[PHP]
<?php echo '<table width="70%" border="1">';
do {$time=strtotime($row_test['data']);
echo "Timestamp estratto:".$time."<br>";
$datime=date("d-m-Y",$row_test['data']);
echo "Tempo da timestamp:".$datime."<br>";
$timeora=date("d-m-Y",time());
echo "Tempo ora:".$timeora."<br><br>";if($datime==$timeora){
?>
<tr>
<th scope="col"><?php echo $row_test['id']; ?></th>
<th scope="col"><?php echo $row_test['cognome']; ?></th>
<th scope="col"><?php echo $row_test['stato']; ?></th>
<th scope="col"><?php echo date("d-m-Y",$time); ?></th>
<th scope="col"><?php echo date("H:i:m",$time); ?></th>
<th scope="col"><?php echo $row_test['ip']; ?></th>
</tr>
<?php
}
} while ($row_test = mysql_fetch_assoc($test));
?>
</table>[/PHP]
-
Sì
Id 9 e 10 sono date di oggi, comunque orami stampa il tuo test ma non la tabella.[html]Timestamp estratto:1267971977
Tempo da timestamp:01-01-1970
Tempo ora:07-03-2010Timestamp estratto:1267971952
Tempo da timestamp:01-01-1970
Tempo ora:07-03-2010Timestamp estratto:1267874197
Tempo da timestamp:01-01-1970
Tempo ora:07-03-2010Timestamp estratto:1267874170
Tempo da timestamp:01-01-1970
Tempo ora:07-03-2010Timestamp estratto:1267787747
Tempo da timestamp:01-01-1970
Tempo ora:07-03-2010[/html]Ne deduco che non funziona il do/while se metti un IF? Come vedi i timestamp sono diversi ma le date sono tutte oggi, dove è l'inghippo?
-
scusa, errore mio.
Sto studiando jQuery e ogni tanto vado in pallone!La if doveva essere così:
[PHP]if(date("dmY",strtotime($row_test['data']))==date("dmY",time())){
//visualizzi il codice
} [/PHP]Mi ero dimenticato di convertire la data nuovamente in timestamp!
Oggi sono veramente
-
OK!!!
Funziona!Bella jquery... la uso ma devo ancora studiarla, vedo che fa delle cose...
Comunque nel risultato escono due record giusti. Ora ho capito un pò di più, in realtà conviene tirare fuori il dato così com'è e lavorarlo in php.Grazie della disponibilità!
-
Figurati.
I dati evito di convertirli nella query. Mi trovo meglio ad avere tutti i dati (tipo $time=time(); per avere sempre il timestamp di quel momento) sempre disponibili.jQuery invece è una brutta bestia, tanto bella quanto infernale. Se ti dimentichi una virgola mica te lo dice!!!
Comunque mooolto affascinante.
Ciao e a buon rendere!
-
Ciao scusa se riapro e scoccio,
ma ho un problema di fondo... MYSQL e php on line è il 4, e infatti non visualizzo nulla mentre in locale (MYSQL e php 5) vedo il tutto e perfettamente, puoi aiutarmi ancora?
[PHP]do {
$time=strtotime($row_test['data']);
if(date("dmY",strtotime($row_test['data']))==date("dmY",time())){
?>
<tr>
<td><?php echo $row_test['cognome']; ?></td>
<td><?php echo date("d-m-Y",$time); ?></td>
<td><?php echo date("H:i:m",$time); ?></td>
<?php if ($row_test['data1'] == "")
{
echo "<td>- - - - - -</td>";
}
else
{
echo "<td>".$row_test['data1']."</td>";
}
?></td>
<td><?php echo $row_test['ip']; ?></td>
<td><?php echo $row_test['host']; ?></td>
</tr>
<?php
}
} while ($row_test = mysql_fetch_assoc($test));
?>
</table> [/PHP]
Grazie ancora
-
Non ho capito la domanda ma prova così:
[PHP]<?php while ($row_test = mysql_fetch_assoc($test)) {
$time=strtotime($row_test['data']);
//se abbiamo le variabili settate, usiamole!
if(date("dmY",$time)==date("dmY",time())){
?>
<tr>
<td><?php echo $row_test['cognome']; ?></td>
<td><?php echo date("d-m-Y",$time); ?></td>
<td><?php echo date("H:i:m",$time); ?></td>
<?php if ($row_test['data1'] == "")
{
echo "<td>- - - - - -</td>";
}
else
{
echo "<td>".$row_test['data1']."</td>";
}
?></td>
<td><?php echo $row_test['ip']; ?></td>
<td><?php echo $row_test['host']; ?></td>
</tr>
<?php
}
}?>
</table>[/PHP]
-
Ciao sorry,
il vizio di scrivere in fretta...In ambiente di test locale (a casa) ho PHP 5 e MYSQL 5,
in produzione ho (server remoto) PHP v4 e MYSQL v4,
la parte di script che ho allegato funziona perfettamente in locale, ma non ne vuole sapere di funzionare in remoto su piattaforma PHP v4 e MYSQL v4, ovviamente non essendo un esperto ho pensato ad un problema di compatiblità versioni, la domanda è:
Mi puoi aiutare e/o spiegare come risolvere il problema di compatibilità?Ho provato a cercare in rete ma ho risolto solo per un'altra query (portandola da mysql v5 a v4) ma non per la visualizzazione della tabella che, semplicemente, non appare e non dà errore d'altronde la query è la più semplice del mondo:
SELECT * FROM orario ORDER BY data DESC.Grazie
-
Quando ci sono problemi di compatibilità, devi sempre controllare ogni singola funzione sul sito di php.net, come per esempio lo strtotime, che è compatibile con php4:
it.php.net/manual/en/function.strtotime.phpFai così con tutte le funzioni e vedi cosa ti da problemi, anche se sembra non ci siano incompatibilità.
-
Ciao
Non mi pare di aver trovato nulla di strano a parte questo:
se commento questa stringa,
[php]
//if(date("Y-m-d",$time)==date("Y-m-d",time())){
[/php]
(quella scritta da te),
mi ritorna i risultati ma senza le date (data default 1970), ma a me pare sia tutto giusto...Idee?
Grazie
-
Prova a fare così:
[PHP]
<?php while ($row_test = mysql_fetch_assoc($test)) {
$time=strtotime($row_test['data']);
$timeora=time();
$data=date("dmY",$time);
$dataora=date("dmY",time());
//se abbiamo le variabili settate, usiamole!
if($data==$dataora){
[/PHP]
-
Allora,
facendo così:[PHP]
<?php
do {
//$time=strtotime($row_test['data']);
$time=time($row_test['data']);
//if(date("dmY",strtotime($row_test['data']))==date("dmY",time())){
?>
<tr>
<td><?php echo $row_test['cognome']; ?></td>
<td><?php echo date("d-m-Y",$time); ?></td>
<td><?php echo date("H:i:m",$time); ?></td>
<?php if ($row_test['data1'] == "")
{
echo "<td>- - - - - -</td>";
}
else
{
echo "<td>".$row_test['data1']."</td>";
}
?></td>
<td><?php echo $row_test['ip']; ?></td>
<td><?php echo $row_test['host']; ?></td>
</tr>
<?php
}
} while ($row_test = mysql_fetch_assoc($test));
?>[/PHP]Magicamente funziona...
Questa me la devi proprio spiegare... (sempre se ti va...)
Il fatto di scrivere solo time($valorecampo), funziona mi rilascia il tutto in ordine e formattato, e non l'ho trovato da nessuna parte.Fammi sapere,
grazie ancora per la disponibilità.
-
E infatti ho detto una scempiaggine..., ovviamente mi prende il $valorecampo e lo trasforma in ora corrente, (to be stupid)....
-
Ciao linno,
attento che la funzione time non ha parametri, per cui dovrebbe restituirti sempre il timestamp corrente.
-
Infatti...
-
Il mio testare mira a prendere $valorecampo (timestamp) e visualizzare solo l'ora, ho provato anche con explode creando dei mostri....
-
La query così mi restituisce $valorecampo (timestamp), visualizza solo record data odierna
[PHP]SELECT * FROM orario WHERE extract(day from data) = extract(day from curdate()) ORDER BY data DESC[/PHP]
Per il resto continuo a studiare...