[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.389
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.016
174
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
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
T fatture con voci fattura in php PHP 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
M Collegamento tra form html e script php PHP 4
M Problemi con la stampa dei valori in php PHP 1
W [Cerco collaborazioni] Sviluppatore Web (PHP) Offerte e Richieste di Lavoro e/o Collaborazione 0
D passare valori da database sql a php PHP 1
L Ricezione dei dati su file php da modulo html PHP 6
E Inviare variabile a PHP da ciclo in JS Javascript 0
A form PHP prenotazione tramite query PHP 2
A Form php prenotazione di un azienda sanitaria locale presso studio medico PHP 1
F menù select dinamico da db in php PHP 3
L Problemi form Pagina php HTML e CSS 3
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
F Il codice php è giusto? PHP 2
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
A invio massivo dati a file php Javascript 4
Z MySql injection PHP PHP 1
V PHP form intersecate PHP 0
I [Offro][Retribuito] Programmatore Php Offerte e Richieste di Lavoro e/o Collaborazione 0
P Funzione jQuery Ajax invio file a php jQuery 1
C Dopo chiusura del tag php la stringa html va a capo PHP 1
E Transaction php PHP 11
B ciclare file xml con PHP PHP 1
L Estrazione dati php Database 6
A Aiuto per pagina php PHP 0
E Php select option e ajax PHP 23
I Aiuto php Dependent Lookup PHP 0
T arretramento versione PHP... PHP 3
D problema php mysql PHP 1
D problema php mysql PHP 1
E Barra di avanzamento codice PHP PHP 4
G creazione menu a tendina e invio a pagina php PHP 1
A inserire variabile php colore in div html PHP 2
Z Video protetto con PHP PHP 0

Discussioni simili