[PHP] aggiornamento table tramite select senza ricaricare la pagina

sanzweb

Nuovo Utente
9 Lug 2019
4
0
1
Ciao a tutti del forum e grazie per avermi accettato.

Ho una necessità di questo tipo:

Ho una <table> con le ore dei dipendenti che prende i dati da Mysql. fin qui li carica e tutto bene
Sopra alla tabella ho piazzato una select che vorrei mi facesse da filtro per data:
HTML:
<div id="filtri">
<h3>Filtra per data:</h3>
<form id="filtra-data" method="GET" action="">
da <input type="date" data-format="yyyy-mm-dd" name="inizio" id="inizio" placeholder="inizio" />
a <input type="date" data-format="yyyy-mm-dd" name="fine" id="fine" placeholder="fine" />
<input type="button" name="filtra" id="filtra" value = "Filtra"/>
</form>
</div>

stavo quindi pensando di adottare una cosa del genere usando all'inizio:
PHP:
if(isset($_GET['filtra']))
{
 $inizio = $_GET['inizio'];
 $fine = $_GET['fine'];
 filtra_record($inizio, $fine);  //chiamata alla funzione
}

la funzione:
PHP:
function filtra_record($inizio, $fine){
 
$db_host = '89.46.111.72';
$username = 'Sql1250405';
$password = '608h3if5o2';
$dbname = "Sql1250405_2";
 $conn = new mysqli($db_host , $username, $password, $dbname);
 
 $sql = "SELECT * FROM interventi WHERE data BETWEEN '" .  $inizio . "' AND '" . $fine . "' ORDER BY data DESC";
 
 $result = $conn->query($sql);

......... e qui che devo caricare la tabella di nuovo? ma verrebbe duplicata sotto l'altra già presente immagino
}

La domanda è: come posso fare per ricaricare la table "filtrata" aggiornando quella esistente che carico ad apertura di pagina? Devo servirmi di Ajax o riesco anche con PHP senza disturbare JQUERY?

grazie per i vostri consigli illuminanti che riuscirete a darmi.

sanzweb
 
Ultima modifica di un moderatore:

mr.x

Utente Attivo
9 Apr 2016
252
25
28
ti basta modificare la SELECT iniziale aggiungendo la condizione in una variabile che valorizzerai o meno a seconda dell'uso del filtro

PHP:
<?php

$where=""; //condizione iniziale

if(isset($_GET['filtra']))
{
$inizio = $_GET['inizio'];
$fine = $_GET['fine'];
$where="WHERE data BETWEEN '$inizio' AND '$fine '"; //valorizzo la condizione
}

//query
$sql="SELECT * FROM tabella $where";

//.......

?>
 

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.449
338
83
@sanzwebù
Da regolamento del forum, come tutti noi sei tenuto ad usare il tag
code-gif.6007
o il tag
php-png.6009
per il PHP, quando posti del codice, oppure la funzione codice dalla barra degli strumenti
box-inserisci-2-png-jpg.6008


Inoltre ti prego e sei tenuto di leggere attentamente il regolamento generale del forum e quello di sezione dove posti
Grazie
Per questa volta te lo sistemo io ma mi raccomando per il futuro
 

sanzweb

Nuovo Utente
9 Lug 2019
4
0
1
Ciao Mr. X, ti ringrazio per la risposta e scusami il ritardo per i ringraziamenti del caso, ma sono stato fuori per lavoro.

Ho capito cosa intendi impostando una query dinamica.
Ma mi rimane un punto da chiarire..

Al caricamento della pagina, nella select vengono caricati tutti i record nella tabella e va da se che i campi inizio e fine sono vuoti la prima volta.

Quando l'utente compila i campi di data iniziale e data finale, come viene rieseguita la query? nel senso ho provato a fare come qui sotto riportato, ma la pagina rimane immobile, con la tabella tale e quale.

Nell'action va messo qualcosa di particolare?

PHP:
If(isset($_GET['filtra']))
{
 $inizio = $_GET['inizio'];
 $fine = $_GET['fine'];
 $conn = new mysqli($host, $db_user, $db_psw, $db_name);
 $where = "WHERE data BETWEEN ' " .  $inizio . " ' AND ' " . $fine . " ' ";
 $query = "SELECT * FROM interventi $where ORDER BY data DESC";   
 $result = $conn->query($query);
} else {
 
$conn = new mysqli($host, $db_user, $db_psw, $db_name);
$query = "SELECT * FROM interventi ORDER BY data DESC";   
$result = $conn->query($query);
}

grazie per il tuo aiuto.
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
io penso che sia necessario usare ajax,
ti posto un esempio che ho realizzato per me e che puoi valutare per applicarlo
lo script di partenza l'ho chiamato TableHandler.php, equivale alla pagina sulla quale aggiornare la tabella
PHP:
<?php
@unlink('TableHandler.log');

ini_set('error_reporting', E_ALL | E_STRICT);
ini_set('display_errors', FALSE);
ini_set('log_errors', TRUE);
ini_set('error_log', 'TableHandler.log');
error_log("TableHandler.php", 0);


if (empty($_POST)) {
?>
<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>AJAX - Table Handler</title>

    <script type='text/javascript' src='http://localhost/test_site/php/jquery.min.js'></script>

    <script type='text/javascript'>
        $(document).ready(function() {

            NewReq();

            $('#NewUpd').click(function(){
                alert('hai cliccato il bottone SEARCH');
                NewReq();
            });

            function NewReq(currentItem)
            {
                alert( "NewReq function called" );

                var data =
                {
                    par1 : $("#PAR1").val(),
                    par2 : $("#PAR2").val(),
                }
                alert(" par1 = "+data["par1"]+"\n\r par2 = "+data["par2"]);

                $.ajax
                ({
                    type    : 'post',
                    cache   : false,
                    url     : 'TableHandlerExec.php',
                    data    : data,

                    success:function(html) {
                        $('#ResDiv').html(html);
                    },
                    error: function(request, status, error) {
                        $('#ResDiv').html('ERRORE : il server non risponde o lo ha fatto in modo anomalo '+request.responseText);
                    }
                });
        };
        });
    </script>

  </head>

  <body>
    <form name='myform' method='POST' action="<?php echo $_SERVER['PHP_SELF']; ?>">

      <p>
        <label for="PAR1">parametro 1 :</label>
        <br />
        <input type="text" name="PAR1" id="PAR1" value="" placeholder="inserisci il parametro 1" />
      </p>
      <p>
        <label for="PAR2">parametro 2 :</label>
        <br />
        <input type="text" name="PAR2" id="PAR2" value="" placeholder="inserisci il parametro 2" />
      </p>

      <p>
        <input type="button" name="NewUpd" id="NewUpd" value="Search" />
      </p>

      <p>
        <div id='ResDiv'>risultato atteso qui</div>
      </p>
    </form>
  </body>
</html>
<?php
}
else
{
    echo "<br />qui vanno inserite le operazioni da eseguire quando POST contiene valori";
}
?>

lo script chiamato dalla funzione ajax ha nome TableHandlerExec.php
PHP:
<?php
// @unlink('TableHandler.log');

ini_set('error_reporting', E_ALL | E_STRICT);
ini_set('display_errors', FALSE);
ini_set('log_errors', TRUE);
ini_set('error_log', 'TableHandler.log');
error_log("TableHandlerExec.php", 0);


if ( empty($_POST['par1']) ) {
    $sql    = "SELECT color_id, color_name, color_hex FROM colors WHERE color_id IN( ?, ?, ?, ? )";
    $params = array( 1, 3, 7, 12 );
}
else {
    $par1 = $_POST['par1'];  error_log('PAR1 = '.$par1, 0);
    $par2 = $_POST['par2'];  error_log('PAR2 = '.$par2, 0);

    $sql    = "SELECT color_id, color_name, color_hex FROM colors WHERE color_id IN( ?, ? )";
    $params = array( $par1, $par2 );
}
error_log('sql = '.$sql, 0);

require_once 'myUtils/ClassTheBestDB.php';
$db  = new TheBestDB( 'sqlsrv:Server=******;Database=testDB','******','******' );
$sth = $db->query( $sql, $params );

$rowCounter = $sth->rowCount();
error_log('record found = '.$rowCounter, 0);

if ( $rowCounter ) {

    $tb = "<table width='50%'>"
        . "<tbody>";

    while( $row = $sth->fetch( PDO::FETCH_ASSOC ) ) {
        $tb .= "<tr>"
             . "<td>" . $row['color_id']   . "</td>"
             . "<td>" . $row['color_name'] . "</td>"
             . "<td>" . $row['color_hex']  . "</td>"
             . "</tr>";
    }

    $tb .= "</tbody>"
         . "</table>";
}
else {
    $tb = "NON HO TROVATO ELEMENTI DA VISUALIZZARE";
}

error_log('risultato = '.$tb, 0);
echo $tb;

?>

entrambi gestiscono un log TableHandler.log

ho lasciato attivi tutti i log,
eseguendo il primo script, si vede
upload_2019-8-4_16-24-19.png


che produce il risultato iniziale
upload_2019-8-4_16-25-41.png


ed inserendo i parametri filtra i due valori nel mio esempio, se
upload_2019-8-4_16-27-33.png

vedi se puoi adattarlo alla tua necessità
 

sanzweb

Nuovo Utente
9 Lug 2019
4
0
1
Grazie Marino51, vedo come integrare quanto da te postato con le mie esigenze.
 
Discussioni simili
Autore Titolo Forum Risposte Data
E Php aggiornamento tabella PHP 9
Y [PHP] Aggiornamento sito PHP 8
D [WordPress] Aggiornamento a php 5.6 causa blackout del sito WordPress 2
alessandroz Select ... where... AND... aggiornamento PHP non funziona PHP 9
M [PHP] Far rimanere biffata checkbox dopo aggiornamento pagina PHP 24
M alert dopo aggiornamento automatico pagina php PHP 4
crealatualista [PHP] Aggiornamento data e ora PHP 2
V [PHP] aggiornamento automatico immagini sito web PHP 3
P [PHP] Loop WHILE aggiornamento campi e tabelle. PHP 2
M Aggiornamento pagina php con ajax Ajax 2
F Aggiornamento variabili php PHP 1
B Auto-aggiornamento DIV con php+ayax PHP 1
lab php e html - inserimento di dati in database e aggiornamento della pagina html PHP 2
EffeElle Problema per una query di aggiornamento record php PHP 35
M Aggiornamento librerie php da versione 4. a versione 5. PHP 2
A Ajax php mysql - problema aggiornamento dati Ajax 2
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5

Discussioni simili