[PHP] Ricerca con data timestamp

livellacri

Utente Attivo
18 Ago 2016
108
13
18
Scusa, errore mio.
Il primo caso che deve essere verificato è quello in cui vengono compilati entrambi i campi
Prova 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'];}?>"/>
  <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']) AND !empty($_POST['matricola'])) {
  $query = "SELECT * FROM ".$nome_tabella." WHERE str_data BETWEEN ".$timestamp1." AND ".$timestamp2." AND tipouscita='".$_POST['tipouscita']."' AND matricola='".$_POST['matricola']."'";
  }
  elseif (!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']."'";
  }
  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
740
4
18
Scusa ancora ma guardando la tabella mi è venuto in mente di mettere dei nomi alle colonne più significativi per esempio la colonna str_data la chiamerei Data ecc. È possibile una cosa del genere ? Ciao e grazie per la pazienza
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");
  $field_view = array("Data");
  $field_timestamp = 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_view as $thisfield) {
    echo "<th>".$thisfield."</th>";
  }
  echo "</tr>";
  if (!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']."'";
  }
  elseif (!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']."'";
  }
  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 (in_array($thisfield, $field_timestamp)) {
    echo "<td>".date("d/m/Y",intval($resultarray[$thisfield]))."</td>";
  }
  else {
  echo "<td>".$resultarray[$thisfield]."</td>";
  }
  }
  echo "</tr>";
  }
  echo "</table>";
  }
  $DB->close();
  ?>
  </body>
</html>
Nell'array $field inserisci i nomi dei campi come sul database (es. "str_data").
Nell'array $field_view, nello stesso ordine, inserisci i nomi che vuoi visualizzare (es. "Data").
Ho poi aggiunto l'array $field_timestamp, nel caso avrai la necessità di trasformare altri campi timestamp in data (devi inserire il nome come sul database (es. "str_data").
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
scusate se mi intrometto, ma vorrei dire alcune cose
quando si lavora con le date è sempre bene verificarle
PHP:
<?php
//....
  $data1 = $_POST['data1'];
  $data1 = explode("-", $data1);
  if(!checkdate ( (int)$data1[1] , (int)$data1[0] , (int)$data1[2] ){
      echo "data errata";//e un ritorno automatico al form
  }
   //analogo per data2
?>
comunque verificherei anche i valori proveniento dagli altri post e, ultimo, semplificherei tutti quegli if..else
PHP:
<?php
//....
$wh="";
if(!empty($_POST['tipouscita']) $wk.=" AND tipouscita='".$_POST['tipouscita'];
if(!empty($_POST['matricola'])) $wk.=" AND matricola='".$_POST['matricola'];
$query = "SELECT * FROM $nome_tabella WHERE str_data BETWEEN $timestamp1 AND $timestamp2 $wh";//se il campo str_data e tipo intero, se stringa ci vogliono gli apici
//...
?>
 

Max61

Utente Attivo
2 Mar 2014
740
4
18
Salve Borgo Italia grazie per l'interessamento, ho provato ma mi da errore
$data1 = $_POST['data1'];
$data1 = explode("-", $data1);
if(!checkdate ( (int)$data1[1] , (int)$data1[0] , (int)$data1[2] ){
echo "data errata";//e un ritorno automatico al form
}
$timestamp1 = mktime(0,0,0,$data1[1],$data1[2],$data1[0]);
$data2 = $_POST['data2'];
$data2 = explode("-", $data2);
if(!checkdate ( (int)$data2[1] , (int)$data2[0] , (int)$data2[2] ){
echo "data errata";//e un ritorno automatico al form
}

Parse error: syntax error, unexpected '{' in C:\xampp\htdocs\prenotazioneauto\views\Ricerca.php on line 64
su questa riga
if(!checkdate ( (int)$data1[1] , (int)$data1[0] , (int)$data1[2] ){

Grazie
Max61
 

livellacri

Utente Attivo
18 Ago 2016
108
13
18
Manca una parentesi alla fine dell'if
PHP:
if(!checkdate ( (int)$data1[1] , (int)$data1[0] , (int)$data1[2] )){
 

Max61

Utente Attivo
2 Mar 2014
740
4
18
Questo risolto...adesso altro errore
Parse error: syntax error, unexpected '$wk' (T_VARIABLE) in C:\xampp\htdocs\prenotazioneauto\views\Ricerca.php on line 83

$wh="";
if(!empty($_POST['tipouscita']) $wk.=" AND tipouscita='".$_POST['tipouscita'];
if(!empty($_POST['matricola'])) $wk.=" AND matricola='".$_POST['matricola'];
$query = "SELECT * FROM $nome_tabella WHERE str_data BETWEEN $timestamp1 AND $timestamp2 $wh";//se il campo str_data e tipo intero, se stringa ci vogliono gli apici
//...
}
 

Max61

Utente Attivo
2 Mar 2014
740
4
18
Secondo me c'è tutto...comunque ti allego il codice intero, magari un occhio più esperto vede gli errori

PHP:
if (isset($_POST['form-ricerca'])) {
  $nome_tabella = "tblprenotazioneauto";
  $field = array("str_data","nominativo","matricola","orauscita_piedi","oraentrata_piedi","motivo","tipouscita","modificato_da","datamodifica");
  $field_view = array("Data", "Nominativo", "Matricola", "Ora uscita", "Ora entrata", "Motivo", "Tipo uscita", "Modificato da", "Data ora modifica");
  $field_timestamp = array("str_data");
  if ($_POST['data2']<1) {
  $_POST['data2'] = $_POST['data1'];
  }
  $data1 = $_POST['data1'];
  $data1 = explode("-", $data1);
  if(!checkdate ( (int)$data1[1] , (int)$data1[0] , (int)$data1[2] )){
      echo "data errata";//e un ritorno automatico al form
  }
  $timestamp1  = mktime(0,0,0,$data1[1],$data1[2],$data1[0]);
  $data2 = $_POST['data2'];
  $data2 = explode("-", $data2);
  if(!checkdate ( (int)$data2[1] , (int)$data2[0] , (int)$data2[2] )){
      echo "data errata";//e un ritorno automatico al form
  }
  $timestamp2 = mktime(23,59,59,$data2[1],$data2[2],$data2[0]);
  echo "<table>";
  echo "<tr>";
  foreach ($field_view as $thisfield) {
    echo "<th>".$thisfield."</th>";
  }
  echo "</tr>";
  $wh="";
if(!empty($_POST['tipouscita']) $wk.=" AND tipouscita='".$_POST['tipouscita'];
if(!empty($_POST['matricola'])) $wk.=" AND matricola='".$_POST['matricola'];
$query = "SELECT * FROM $nome_tabella WHERE str_data BETWEEN $timestamp1 AND $timestamp2 $wh";//se il campo str_data e tipo intero, se stringa ci vogliono gli apici
//...
  }
  $result = $DB->query($query);
  while ($resultarray=$result->fetch_assoc()) {
  echo "<tr>";
  foreach ($field as $thisfield) {
  if (in_array($thisfield, $field_timestamp)) {
    echo "<td>".date("d/m/Y",intval($resultarray[$thisfield]))."</td>";
  }
  else {
  echo "<td>".$resultarray[$thisfield]."</td>";
  }
  }
  echo "</tr>";
  }
  echo "</table>";
  }
  $DB->close();
  ?>
 

Max61

Utente Attivo
2 Mar 2014
740
4
18
L'avevo già notato e corretto, ma da lo stesso errore
<?php
if (isset($_POST['form-ricerca'])) {
$nome_tabella = "tblprenotazioneauto";
$field = array("str_data","nominativo","matricola","orauscita_piedi","oraentrata_piedi","motivo","tipouscita","modificato_da","datamodifica");
$field_view = array("Data", "Nominativo", "Matricola", "Ora uscita", "Ora entrata", "Motivo", "Tipo uscita", "Modificato da", "Data ora modifica");
$field_timestamp = array("str_data");
if ($_POST['data2']<1) {
$_POST['data2'] = $_POST['data1'];
}
$data1 = $_POST['data1'];
$data1 = explode("-", $data1);
if(!checkdate ( (int)$data1[1] , (int)$data1[0] , (int)$data1[2] )){
echo "data errata";//e un ritorno automatico al form
}
$timestamp1 = mktime(0,0,0,$data1[1],$data1[2],$data1[0]);
$data2 = $_POST['data2'];
$data2 = explode("-", $data2);
if(!checkdate ( (int)$data2[1] , (int)$data2[0] , (int)$data2[2] )){
echo "data errata";//e un ritorno automatico al form
}
$timestamp2 = mktime(23,59,59,$data2[1],$data2[2],$data2[0]);
echo "<table>";
echo "<tr>";
foreach ($field_view as $thisfield) {
echo "<th>".$thisfield."</th>";
}
echo "</tr>";
$wh="";
if(!empty($_POST['tipouscita']) $wh.=" AND tipouscita='".$_POST['tipouscita'];
if(!empty($_POST['matricola'])) $wh.=" AND matricola='".$_POST['matricola'];
$query = "SELECT * FROM $nome_tabella WHERE str_data BETWEEN $timestamp1 AND $timestamp2 $wh";//se il campo str_data e tipo intero, se stringa ci vogliono gli apici
//...
}
$result = $DB->query($query);
while ($resultarray=$result->fetch_assoc()) {
echo "<tr>";
foreach ($field as $thisfield) {
if (in_array($thisfield, $field_timestamp)) {
echo "<td>".date("d/m/Y",intval($resultarray[$thisfield]))."</td>";
}
else {
echo "<td>".$resultarray[$thisfield]."</td>";
}
}
echo "</tr>";
}
echo "</table>";
}
$DB->close();
?>
 

livellacri

Utente Attivo
18 Ago 2016
108
13
18
mancava una partentesi per chiudere l'if
PHP:
if(!empty($_POST['tipouscita'])) $wh.=" AND tipouscita='".$_POST['tipouscita'];
 

Max61

Utente Attivo
2 Mar 2014
740
4
18
Ancora errore
data erratadata errata
Fatal error: Call to a member function fetch_assoc() on a non-object in C:\xampp\htdocs\prenotazioneauto\views\Ricerca.php on line 89
qua
while ($resultarray=$result->fetch_assoc()) {
 

livellacri

Utente Attivo
18 Ago 2016
108
13
18
c'è un problema con la query.
prova a sostituire
PHP:
if(!empty($_POST['tipouscita'])) $wh.=" AND tipouscita='".$_POST['tipouscita'];
if(!empty($_POST['matricola'])) $wh.=" AND matricola='".$_POST['matricola'];
con
PHP:
if(!empty($_POST['tipouscita'])) $wh.=" AND tipouscita='".$_POST['tipouscita']."'";
if(!empty($_POST['matricola'])) $wh.=" AND matricola='".$_POST['matricola']."'";
 
Ultima modifica:

Max61

Utente Attivo
2 Mar 2014
740
4
18
Ancora errore sulla stessa riga
Parse error: syntax error, unexpected '$wh' (T_VARIABLE) in C:\xampp\htdocs\prenotazioneauto\views\Ricerca.php on line 83

if(!empty($_POST['tipouscita']) $wh.=" AND tipouscita='".$_POST['tipouscita']."'";
 

livellacri

Utente Attivo
18 Ago 2016
108
13
18
scusa, avevo dimenticato la chiusura dell'if
PHP:
if(!empty($_POST['tipouscita'])) $wh.=" AND tipouscita='".$_POST['tipouscita']."'";
 

Max61

Utente Attivo
2 Mar 2014
740
4
18
Adesso la ricerca la fa, ma appena apro la pagina mi da questi errori
Notice: Undefined variable: query in C:\xampp\htdocs\prenotazioneauto\views\RicercaNEW.php on line 88

Warning: mysqli::query(): Empty query in C:\xampp\htdocs\prenotazioneauto\views\RicercaNEW.php on line 88

Fatal error: Call to a member function fetch_assoc() on a non-object in C:\xampp\htdocs\prenotazioneauto\views\RicercaNEW.php on line 89
 
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
U PHP creare un file excel dopo ricerca nel DB PHP 0
G Colorare menu select attraverso ricerca php PHP 0
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 1
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

Discussioni simili