Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [php+mysql] - Problema visualizzazione

    salve, sto provando a far visualizzare le riparazioni che hanno come data di consegna, la data del giorno corrente.
    le date nel db sono in unixtime, ma nonostante ciò non esce niente. dove sbaglio?

    ciao e grazie

    codice:
    <tr>
                            <?php
                                    $data_oggi = time();
                                    $data_domani = time() + 86400;
                                    $db = mysql_connect("localhost", "root", "") or die("Non riesco a collegarmi al db");
                                    mysql_select_db("negozio", $db) or die("non riesco a selezionare il db");
                                    $result = mysql_query("SELECT * FROM `riparazioni` WHERE (`data_consegna` > '$data_oggi') && (`data_consegna` < '$data_domani') ORDER BY `data_consegna`", $db);
    
                                    while ($row = mysql_fetch_array($result)) {
                                        $data = date('d/m/Y', "$row[data_consegna]");
                                        $oggetto = $row["oggetto"];
                                        $difetto = $row["difetto"];
                                        $stato = $row["stato"];
    
                                        ?>
                            <td width="19%" align="center"><? echo "$data";?></td>
    						<td width="36%" align="center"><? echo"$oggetto";?></td>
    						<td width="27%" align="center"><? echo "$difetto";?></td>
    						<td width="18%" align="center">
                            <?
                              switch ($stato) {
                                  case "eseguita";
                                       echo "<font color=green>";
                                       break;
                                  case "non_eseguita";
                                       echo "<font color=red>";
                                       break;
                                  case "non_riparabile";
                                       echo "<font color=red>";
                                       break;
                              }
                            echo "[b]"; echo "
    "; echo "$stato";
                            ?>
                            </td>
    
    					</tr>
                          <?
                             }
                          ?>
    					<tr>

  2. #2
    Non ho analizzato i particolari, ma quando si tratta di UNIX TIMESTAMP per valutare i giorni mi suonano le campane a martello...

    DATETIME e UNIX TIMESTAMP valutano ore minuti e secondi. assolutamente inadeguati se si vuole "qualunque" data di domani...
    la valutazione va fatta a giorni e non a ore/minuti/sec.

    oppure procurarsi la data iniziale delle ore 00:00:00 e quella terminale alle ore 23:59:59


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Originariamente inviato da piero.mac
    Non ho analizzato i particolari, ma quando si tratta di UNIX TIMESTAMP per valutare i giorni mi suonano le campane a martello...

    DATETIME e UNIX TIMESTAMP valutano ore minuti e secondi. assolutamente inadeguati se si vuole "qualunque" data di domani...
    la valutazione va fatta a giorni e non a ore/minuti/sec.

    oppure procurarsi la data iniziale delle ore 00:00:00 e quella terminale alle ore 23:59:59

    quindi dici che mi conviene convertire anche la data_oggi e data_domani in unixtime?

  4. #4
    Originariamente inviato da steus
    quindi dici che mi conviene convertire anche la data_oggi e data_domani in unixtime?
    Il contrario... se la valutazione che devi fare e' a giornate metti un dato che non contenga h:m:s
    codice:
    SELECT * FROM `riparazioni` 
    WHERE (`data_consegna` > '$data_oggi') 
    && (`data_consegna` < '$data_domani') 
    ORDER BY `data_consegna`
    Quale e' il formato di data_consegna ? Unix timestamp?

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Originariamente inviato da piero.mac
    Il contrario... se la valutazione che devi fare e' a giornate metti un dato che non contenga h:m:s
    codice:
    SELECT * FROM `riparazioni` 
    WHERE (`data_consegna` > '$data_oggi') 
    && (`data_consegna` < '$data_domani') 
    ORDER BY `data_consegna`
    Quale e' il formato di data_consegna ? Unix timestamp?
    yes.
    $data_consegna = date("U", mktime(0,0,0,$_POST['mese0'],$_POST['giorno0'],$_POST['anno0']));

    grazie

  6. #6
    Allora vedi che gia' passi la data con ore-min-sec a zero e quindi la data corrispondera' alle ore 00:00:00 di domani.... e qui cade la data ... la giornata di domani e' del tutto esclusa ... giusto????

    in pratica avresti: 26-05-2005 00:00:00

    Capito l'errore? utilizza altri modi per visualizzare i record... ti suggerisco il seguente:
    codice:
    SELECT * FROM `riparazioni`
    WHERE 
    FROM_UNIXTIME(data_consegna, '%Y-%m-%d') = CURDATE()+ INTERVAL 1 DAY
    Ti dara' solo le date di domani. e quindi sara' pure inutile ORDER BY data_consegna perche' sono tutte uguali, cioe' senza l'ora.

    Vedi se ti quaglia....


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    si infatti ho visto che come facevo io ad ogni refresh cambiava la data.

    solo che come mi hai detto te non funziona ancora

    ho provato anche a fare così:

    Codice PHP:
    <?php
                                    $giorno 
    date("d");
                                    
    $mese date("m");
                                    
    $anno date("Y");

                                    
    $data_oggi mktime("0""0""0"$mese$giorno$anno);
                                    
    $data_domani mktime("0""0""0"$mese$giorno$anno) + 86400;


                                    


                                    
    $db mysql_connect("localhost""root""") or die("Non riesco a collegarmi al db");
                                    
    mysql_select_db("negozio"$db) or die("non riesco a selezionare il db");
                                    
    $result mysql_query("SELECT * FROM `riparazioni` WHERE (`data_consegna` > '$data_oggi') && (`data_consegna` < '$data_domani') ORDER BY `data_consegna`"$db);

                                    while (
    $row mysql_fetch_array($result)) {
                                        
    $data date('d/m/Y'"$row[data_consegna]");
                                        
    $oggetto $row["oggetto"];
                                        
    $difetto $row["difetto"];
                                        
    $stato $row["stato"];

                                        
    ?>
    ma nada

  8. #8
    Se non funziona con la mia query giustamente non funziona manco con la tua ... perche' sono equivalenti ma la tua e' piu' incasinata.

    Il problema allora sono i dati inseriti in data_consegna.

    fai la seguente SELECT:
    codice:
    SELECT from_unixtime(data_consegna, '%d-%m-%Y %H:%i:%s') as data_con
    FROM riparazioni
    order by data_consegna
    e dimmi che cosa vedi....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.