[PHP] Ricerca con data timestamp

Max61

Utente Attivo
2 Mar 2014
714
3
18
Salve sono di nuovo a chiedere lumi a chi ne sa più di me, ho la necessità di creare una form di ricerca su un campo con data timestamp, però l'utente nella ricerca digita la data formato nel formato 01-01-2016.
Qualcuno mi sa aiutare?
Grazie
Max61
 

livellacri

Utente Attivo
18 Ago 2016
108
13
18
Puoi utilizzare la funzione strtotime.
Codice:
$timestamp1 = strtotime("25.08.2016");  //25/08/2016 - ore 0:00
$timestamp2 = $timestamp1+86399;  //25/08/2016 - ore 23:59:59

Poi, se devi ricercare in una tabella sql, dovrai utilizzare una query tipo questa:
Codice:
$query = "SELECT * FROM NomeTabella WHERE NomeColonnaTimestamp BETWEEN ".$timestamp1." AND ".$timestamp2;
 

Max61

Utente Attivo
2 Mar 2014
714
3
18
Ciao e grazie per la risposta, ti spiego meglio
io ho un unico campo dove fare le ricerche, si chiama $str_data, come posso fare?
 

livellacri

Utente Attivo
18 Ago 2016
108
13
18
Non sono sicuro di avere capito cosa hai già e cosa devi fare.
Tu hai un form con un campo di tipo testo, quando il form viene inviato la variabile $str_data assume il valore del campo di testo.
Giusto?
 

Max61

Utente Attivo
2 Mar 2014
714
3
18
Scusa, provo
ho il campo $str_data, è tipo varchar dove salvo la data in questo formato 1471989600, in questo campo voglio fare le ricerche per data, ma l'utente nella ricerca digita la data nel formato 01-01-2016.
Con la speranza di essermi spiegato...
Ciao
 

livellacri

Utente Attivo
18 Ago 2016
108
13
18
str_data quindi è il campo di una tabella sql, giusto?
Mi aveva confuso il segno $
 

livellacri

Utente Attivo
18 Ago 2016
108
13
18
Non hai specificato cosa vuoi fare dei risultati.
Questo semplice script che ho fatto li inserisce in una tabella html.
PHP:
<?php
$DB_SERVER = "";
$DB_USERNAME = "";
$DB_PASSWORD = "";
$DB_DATABASE = "";
$DB = mysqli_connect($DB_SERVER,$DB_USERNAME,$DB_PASSWORD,$DB_DATABASE);
?>
<html>
    <head>
        <title>Ricerca</title>
        <style>
            table, td, th, tr {
                border: 1px solid #000000;
            }
            tr, th, td {
                padding-left: 7px;
                padding-right: 7px;
                text-align: center;
            }
            table {
                border-top: 15px;
            }
        </style>
    </head>
    <body>
        <h1>Ricerca</h1>
        <form action="" method="post">
            <input name="data" type="date" value="<?php if (isset($_POST['form-ricerca'])) {echo $_POST['data'];}?>"/>
            <button name="form-ricerca" type="submit">Cerca</button>
        </form>
        <?php
        if (isset($_POST['form-ricerca'])) {
            $nome_tabella = "tblprenotazioneauto";
            $data = $_POST['data'];
            $data = explode("-", $data);
            $timestamp1  = mktime(0,0,0,$data[1],$data[2],$data[0]);
            $timestamp2 = mktime(23,59,59,$data[1],$data[2],$data[0]);
            $field = array();
            $query = "DESCRIBE ".$nome_tabella;
            $result = $DB->query($query);
            while ($resultarray=$result->fetch_assoc()) {
                $field[] = $resultarray['Field'];
            }
            echo "<table>";
            echo "<tr>";
            foreach ($field as $thisfield) {
                echo "<th>".$thisfield."</th>";
            }
            echo "</tr>";
            $query = "SELECT * FROM ".$nome_tabella." WHERE str_data BETWEEN ".$timestamp1." AND ".$timestamp2;
            $result = $DB->query($query);
            while ($resultarray=$result->fetch_assoc()) {
                echo "<tr>";
                foreach ($field as $thisfield) {
                    echo "<td>".$resultarray[$thisfield]."</td>";
                }
                echo "</tr>";
            }
            echo "</table>";
        }
        $DB->close();
        ?>
    </body>
</html>
 

Max61

Utente Attivo
2 Mar 2014
714
3
18
Voglio poter fare una ricerca per data e visualizzare il risultato a video.
Grazie
Ciao
 

livellacri

Utente Attivo
18 Ago 2016
108
13
18
Se con risultato intendi una semplice tabella come quella di sql con le righe interessate, lo script che ho scritto sopra dovrebbe fare al caso tuo.
 

Max61

Utente Attivo
2 Mar 2014
714
3
18
Sì e se necessario la potrei anche stampare.
Adesso non posso provarlo domani ti faccio sapere.
Grazie ancora
Max61
 

Max61

Utente Attivo
2 Mar 2014
714
3
18
E' perfetto, ma se io volessi fare la mia ricerca in un intervallo di date?
Es.: tra il 01/07/2016 e il 31/07/2016, è possibile?
E' inoltre possibile incrociare la ricerca con un un altro parametro cioè con il valore del campo 'tipouscita'?
Un ultima cosa, il valore del campo 'str_data' nella tabella a video lo vedo sotto questa forma '1471989600', è possibile convertirlo almeno in visualizzazione in data umana (25/08/2016)?
Grazie
Max61
 
Ultima modifica:

livellacri

Utente Attivo
18 Ago 2016
108
13
18
Per ricercare in un intervallo di date ti basta mettere un altro input di tipo data nel form, e nel codice php metti che $timestamp1 è uguale alla prima data alle ore 0:00 mentre $timestampe2 è uguale alla seconda data alle ore 23:59.
Per tipouscita puoi mettere un input di testo o select, e nella query di ricerca del database aggiungi "AND tipouscita=...".
Per visualizzare il timestamp come data puoi usare la funzione data.
Quindi il codice diventerebbe così:
PHP:
<?php
$DB_SERVER = "";
$DB_USERNAME = "";
$DB_PASSWORD = "";
$DB_DATABASE = "";
$DB = mysqli_connect($DB_SERVER,$DB_USERNAME,$DB_PASSWORD,$DB_DATABASE);
?>
<html>
    <head>
        <title>Ricerca</title>
        <style>
            table, td, th, tr {
                border: 1px solid #000000;
            }
            tr, th, td {
                padding-left: 7px;
                padding-right: 7px;
                text-align: center;
            }
            table {
                border-top: 15px;
            }
        </style>
    </head>
    <body>
        <h1>Ricerca</h1>
        <form action="" method="post">
            Da: <input name="data1" type="date" value="<?php if (isset($_POST['data1'])) {echo $_POST['data1'];}?>" required/>
            a: <input name="data2" type="date" value="<?php if (isset($_POST['data2'])) {echo $_POST['data2'];}?>"/>
            <input name="tipouscita" type="text" placeholder="Tipo uscita" value="<?php if (isset($_POST['tipouscita'])) {echo $_POST['tipouscita'];}?>"/>
            <button name="form-ricerca" type="submit">Cerca</button>
        </form>
        <?php
        if (isset($_POST['form-ricerca'])) {
            $nome_tabella = "tblprenotazioneauto";
            if ($_POST['data2']<1) {
                $_POST['data2'] = $_POST['data1'];
            }
            $data1 = $_POST['data1'];
            $data1 = explode("-", $data1);
            $timestamp1  = mktime(0,0,0,$data1[1],$data1[2],$data1[0]);
            $data2 = $_POST['data2'];
            $data2 = explode("-", $data2);
            $timestamp2 = mktime(23,59,59,$data2[1],$data2[2],$data2[0]);
            $field = array();
            $query = "DESCRIBE ".$nome_tabella;
            $result = $DB->query($query);
            while ($resultarray=$result->fetch_assoc()) {
                $field[] = $resultarray['Field'];
            }
            echo "<table>";
            echo "<tr>";
            foreach ($field as $thisfield) {
                echo "<th>".$thisfield."</th>";
            }
            echo "</tr>";
            if ($_POST['tipouscita']!=null AND $_POST['tipouscita']!="") {
                $query = "SELECT * FROM ".$nome_tabella." WHERE str_data BETWEEN ".$timestamp1." AND ".$timestamp2." AND tipouscita='".$_POST['tipouscita']."'";
            }
            else {
                $query = "SELECT * FROM ".$nome_tabella." WHERE str_data BETWEEN ".$timestamp1." AND ".$timestamp2;
            }
            $result = $DB->query($query);
            while ($resultarray=$result->fetch_assoc()) {
                echo "<tr>";
                foreach ($field as $thisfield) {
                    if ($thisfield=="str_data") {
                        echo "<td>".date("d/m/Y",intval($resultarray[$thisfield]))."</td>";
                    }
                    else {
                        echo "<td>".$resultarray[$thisfield]."</td>";   
                    }
                   
                }
                echo "</tr>";
            }
            echo "</table>";
        }
        $DB->close();
        ?>
    </body>
</html>
 

Max61

Utente Attivo
2 Mar 2014
714
3
18
GRAZIEEEEE!!!
E' perfetto, un ultima cosa, posso scegliere i campi da visualizzare?
Nella query che hai fatto me li estrae tutti, se provo a digitare i campi di mio interesse al pèsto di asterisco mi da errore sui campi non estratti della tabella, non è possibile fare una estrazione soltanto di alcuni?
Qui mi da l'errore echo "<td>".$resultarray[$thisfield]."</td>";
Allego query
$query = "SELECT id, nominativo, ecc. FROM ".$nome_tabella." WHERE str_data BETWEEN ".$timestamp1." AND ".$timestamp2." AND tipouscita='".$_POST['tipouscita']."'";
Ciao e INFINITAMENTE GRAZIE
Max61
 

livellacri

Utente Attivo
18 Ago 2016
108
13
18
Sostituisci tutto con questo:
PHP:
<?php
$DB_SERVER = "";
$DB_USERNAME = "";
$DB_PASSWORD = "";
$DB_DATABASE = "";
$DB = mysqli_connect($DB_SERVER,$DB_USERNAME,$DB_PASSWORD,$DB_DATABASE);
?>
<html>
    <head>
        <title>Ricerca</title>
        <style>
            table, td, th, tr {
                border: 1px solid #000000;
            }
            tr, th, td {
                padding-left: 7px;
                padding-right: 7px;
                text-align: center;
            }
            table {
                border-top: 15px;
            }
        </style>
    </head>
    <body>
        <h1>Ricerca</h1>
        <form action="" method="post">
            Da: <input name="data1" type="date" value="<?php if (isset($_POST['data1'])) {echo $_POST['data1'];}?>" required/>
            a: <input name="data2" type="date" value="<?php if (isset($_POST['data2'])) {echo $_POST['data2'];}?>"/>
            <input name="tipouscita" type="text" placeholder="Tipo uscita" value="<?php if (isset($_POST['tipouscita'])) {echo $_POST['tipouscita'];}?>"/>
            <button name="form-ricerca" type="submit">Cerca</button>
        </form>
        <?php
        if (isset($_POST['form-ricerca'])) {
            $nome_tabella = "tblprenotazioneauto";
            $field = array("str_data");
            if ($_POST['data2']<1) {
                $_POST['data2'] = $_POST['data1'];
            }
            $data1 = $_POST['data1'];
            $data1 = explode("-", $data1);
            $timestamp1  = mktime(0,0,0,$data1[1],$data1[2],$data1[0]);
            $data2 = $_POST['data2'];
            $data2 = explode("-", $data2);
            $timestamp2 = mktime(23,59,59,$data2[1],$data2[2],$data2[0]);
            echo "<table>";
            echo "<tr>";
            foreach ($field as $thisfield) {
                echo "<th>".$thisfield."</th>";
            }
            echo "</tr>";
            if ($_POST['tipouscita']!=null AND $_POST['tipouscita']!="") {
                $query = "SELECT * FROM ".$nome_tabella." WHERE str_data BETWEEN ".$timestamp1." AND ".$timestamp2." AND tipouscita='".$_POST['tipouscita']."'";
            }
            else {
                $query = "SELECT * FROM ".$nome_tabella." WHERE str_data BETWEEN ".$timestamp1." AND ".$timestamp2;
            }
            $result = $DB->query($query);
            while ($resultarray=$result->fetch_assoc()) {
                echo "<tr>";
                foreach ($field as $thisfield) {
                    if ($thisfield=="str_data") {
                        echo "<td>".date("d/m/Y",intval($resultarray[$thisfield]))."</td>";
                    }
                    else {
                        echo "<td>".$resultarray[$thisfield]."</td>";  
                    }
                   
                }
                echo "</tr>";
            }
            echo "</table>";
        }
        $DB->close();
        ?>
    </body>
</html>
e metti nell'array $field i campi da visualizzare
 
  • Like
Reactions: Max61

Max61

Utente Attivo
2 Mar 2014
714
3
18
Grazie infinite dell'aiuto, senza non ce l'avrei fatta.
Buona giornata
Max61;)
 

Max61

Utente Attivo
2 Mar 2014
714
3
18
Scusami ancora una cosa se non disturbo troppo
se io volessi analizzare 2 campi insieme cioè il campo tipouscita e il campo matricola
come potrei fare?
Ho provato ma non ci sono riuscito, la ricerca me la fa soltanto su uno valorizzato.
Grazie
Max61
 

livellacri

Utente Attivo
18 Ago 2016
108
13
18
PHP:
<?php
$DB_SERVER = "";
$DB_USERNAME = "";
$DB_PASSWORD = "";
$DB_DATABASE = "";
$DB = mysqli_connect($DB_SERVER,$DB_USERNAME,$DB_PASSWORD,$DB_DATABASE);
?>
<html>
    <head>
        <title>Ricerca</title>
        <style>
            table, td, th, tr {
                border: 1px solid #000000;
            }
            tr, th, td {
                padding-left: 7px;
                padding-right: 7px;
                text-align: center;
            }
            table {
                border-top: 15px;
            }
        </style>
    </head>
    <body>
        <h1>Ricerca</h1>
        <form action="" method="post">
            Da: <input name="data1" type="date" value="<?php if (isset($_POST['data1'])) {echo $_POST['data1'];}?>" required/>
            a: <input name="data2" type="date" value="<?php if (isset($_POST['data2'])) {echo $_POST['data2'];}?>"/>
            <input name="tipouscita" type="text" placeholder="Tipo uscita" value="<?php if (isset($_POST['tipouscita'])) {echo $_POST['tipouscita'];}?>"/>
            <input name="matricola" type="text" placeholder="Matricola" value="<?php if (isset($_POST['matricola'])) {echo $_POST['matricola'];}?>"/>
            <button name="form-ricerca" type="submit">Cerca</button>
        </form>
        <?php
        if (isset($_POST['form-ricerca'])) {
            $nome_tabella = "tblprenotazioneauto";
            $field = array("str_data");
            if ($_POST['data2']<1) {
                $_POST['data2'] = $_POST['data1'];
            }
            $data1 = $_POST['data1'];
            $data1 = explode("-", $data1);
            $timestamp1  = mktime(0,0,0,$data1[1],$data1[2],$data1[0]);
            $data2 = $_POST['data2'];
            $data2 = explode("-", $data2);
            $timestamp2 = mktime(23,59,59,$data2[1],$data2[2],$data2[0]);
            echo "<table>";
            echo "<tr>";
            foreach ($field as $thisfield) {
                echo "<th>".$thisfield."</th>";
            }
            echo "</tr>";
            if (!empty($_POST['tipouscita'])) {
                $query = "SELECT * FROM ".$nome_tabella." WHERE str_data BETWEEN ".$timestamp1." AND ".$timestamp2." AND tipouscita='".$_POST['tipouscita']."'";
            }
            elseif (!empty($_POST['matricola'])) {
                $query = "SELECT * FROM ".$nome_tabella." WHERE str_data BETWEEN ".$timestamp1." AND ".$timestamp2." AND matricola='".$_POST['matricola']."'";
            }
            elseif (!empty($_POST['tipouscita']) AND !empty($_POST['matricola'])) {
                $query = "SELECT * FROM ".$nome_tabella." WHERE str_data BETWEEN ".$timestamp1." AND ".$timestamp2." AND tipouscita='".$_POST['tipouscita']."' AND matricola='".$_POST['matricola']."'";
            }
            else {
                $query = "SELECT * FROM ".$nome_tabella." WHERE str_data BETWEEN ".$timestamp1." AND ".$timestamp2;
            }
            $result = $DB->query($query);
            while ($resultarray=$result->fetch_assoc()) {
                echo "<tr>";
                foreach ($field as $thisfield) {
                    if ($thisfield=="str_data") {
                        echo "<td>".date("d/m/Y",intval($resultarray[$thisfield]))."</td>";
                    }
                    else {
                        echo "<td>".$resultarray[$thisfield]."</td>"; 
                    }
                  
                }
                echo "</tr>";
            }
            echo "</table>";
        }
        $DB->close();
        ?>
    </body>
</html>
 

Max61

Utente Attivo
2 Mar 2014
714
3
18
Ciao e grazie per la pazienza ma con elseif l'avevo provato anche io, ma verifica il campo tipouscita o il campo matricola l'uno esclude l'altro.
 
Discussioni simili
Autore Titolo Forum Risposte Data
Alex_70 [PHP] Ricerca con risultati cliccabili PHP 21
T4MAR4 [PHP] Problema ricerca con apostrofo PHP 2
giuseppe_123 [PHP] ricerca in una tabella con my sql PHP 0
N PHP Ricerca utente, Tabella con più elementi PHP 8
R Ricerca Email in database mysql con php PHP 2
S [RISOLTO]aiuto, non riesco afar funzionare il camp odi ricerca per un DB con PHP PHP 5
A Ricerca full text mysq ed estrazione con php PHP 8
G Php problema con risultato di ricerca PHP 2
K Problema ricerca con piu campi in php PHP 3
W [Php - MySql] ricerca con form select diversi PHP 14
L PHP motore di ricerca nel sito PHP 1
L Ricerca sviluppatori PHP tempo indeterminato Milano Offerte e Richieste di Lavoro e/o Collaborazione 0
S [PHP] Creare collegamento filtri di ricerca al database PHP 6
L [PHP] Ricerca su search bar esterna PHP 1
ANDREA20 [PHP] motore di ricerca nel sito PHP 11
O [PHP] Ricerca record tramite post PHP 7
T [PHP] Ricerca nel database PHP 2
C [PHP] Ricerca multipla, evitare if PHP 4
M [OFFRO][RETRIBUITO] Milano IT Consulting SRL - Ricerca 1 Consulente PHP Offerte e Richieste di Lavoro e/o Collaborazione 0
andreas88 Da .htm a .php, perdo le mie posizioni su Google ricerca? SEO e Posizionamento 9
Emix [PHP] Ricerca e modifica su due tabelle PHP 26
G [PHP] FORM DI RICERCA ESTESA PHP 2
borgo italia [PHP] ricerca caratteri accentati PHP 4
P [PHP] ricerca dati PHP 1
Emix [PHP][MYSQL] Ricerca avanzata tramite form PHP 6
R [PHP] Prendere dati da moduli di ricerca esterni PHP 4
T4MAR4 [PHP] piu select in ricerca PHP 1
T4MAR4 [PHP] Inserire piu campi di ricerca PHP 2
A [PHP] Problema paginazione motore di ricerca PHP 48
TheWhiteRabbit Perfezionare ricerca in PHP - NO DATABASE - (Website X5) PHP 5
sandropochi [PHP] Form per creare filtro di ricerca su DB PHP 8
U [PHP] form per ricerca multipla: Unknown column 'undefined' in 'where clause' PHP 2
L [PHP] ricerca per un campo o per più campi PHP 5
B Ricerca PHP e Prenotazione PHP PHP 2
M [PHP] Evidenziare le parole cercate nei risultati di una ricerca PHP 1
MarcoGrazia [PDO][PHP[MySQL] Piccolo modulo di ricerca in un sito tramite l'operatore LIKE Snippet PHP 0
Y [Retribuito][Offro] RICERCA PROGRAMMATORI iOS e PHP/DB Offerte e Richieste di Lavoro e/o Collaborazione 0
S Un aiuto su uno script di ricerca avanzata in php che sto verificando. PHP 1
I Motore di ricerca php PHP 2
C [Offro][Retribuito] Cloudworks srl ricerca un junior PHP developer Offerte e Richieste di Lavoro e/o Collaborazione 0
M motore di ricerca complesso php PHP 2
R Barra ricerca php e mysql PHP 0
M Box di ricerca in php PHP 3
P PHP modulo ricerca e ordine alfabetico PHP 5
G Visualizzazion modulo di ricerca in PHP e MySql PHP 0
I Facile.it Spa ricerca Senior PHP Developer forti ed ambiziosi! Offerte e Richieste di Lavoro e/o Collaborazione 0
Sargon Php / My sql motore di ricerca PHP 21
F Ricerca avanzata PHP & MySQL PHP 4
P PHP Workgroup Livorno, RICERCA giovani programmatori! Offerte e Richieste di Lavoro e/o Collaborazione 1
A mini motore di ricerca in php PHP 3

Discussioni simili