Ciao a tutti,
sto provando a usare jQuery per poter popolare una tabella con dati attinti da db mysql tramite php (Non so se questa è la sezione giusta dove postare)
Storia: da una ricerca sul database mysql creo una pagina con tabella che mi mostra i dati.
Se i dati sono molti (es. più di 15), in tabella sono mostrati i primi 15 record e poi mostro una barra di navigazione 1-2-... dove, cliccando sul numero,
mi mostra i record relativi allo scaglione scelto (2:i secondi 15, 3:i terzi 15,...)
Questa operazione è effettuata con una chiamata ajax di jQuery.
Questo giochino funziona correttamente la prima volta, ossia la prima volta mi mostra i primi 15 record (questo perché ancora non fa nessuna chiamata ajax) e se clicco su un numero, es 3, mi mostra la terza pagina di record correttamente, ma poi se provo a cliccare su un altro numero non succede nulla.
Un'altra cosa che non fa, e questo anche la prima volta, ho messo un messaggio quando completa l'azione ajax, ma questo messaggio non è mai mostrato
Ecco un po' di codice
cerca.php
RunQuery non è altro che una mia interfaccia a mysql_query()
mentre qSchede è una funzione che crea la query mettendo la parte di filtro (WHERE...) e il numero di record (LIMIT ...)
filejQuery.js
tabellaRicerca.php
Non è altro che la parte che compila la tabella di cerca.php
Non riesco a capire perché fa così, e forse è collegato al fatto che non completa l'azione ajax?
Grazie per qualsiasi consiglio
sto provando a usare jQuery per poter popolare una tabella con dati attinti da db mysql tramite php (Non so se questa è la sezione giusta dove postare)
Storia: da una ricerca sul database mysql creo una pagina con tabella che mi mostra i dati.
Se i dati sono molti (es. più di 15), in tabella sono mostrati i primi 15 record e poi mostro una barra di navigazione 1-2-... dove, cliccando sul numero,
mi mostra i record relativi allo scaglione scelto (2:i secondi 15, 3:i terzi 15,...)
Questa operazione è effettuata con una chiamata ajax di jQuery.
Questo giochino funziona correttamente la prima volta, ossia la prima volta mi mostra i primi 15 record (questo perché ancora non fa nessuna chiamata ajax) e se clicco su un numero, es 3, mi mostra la terza pagina di record correttamente, ma poi se provo a cliccare su un altro numero non succede nulla.
Un'altra cosa che non fa, e questo anche la prima volta, ho messo un messaggio quando completa l'azione ajax, ma questo messaggio non è mai mostrato
Ecco un po' di codice
cerca.php
Codice:
...
echo "<div id=\"risultatoRicerca\">\n";
// imposto la visualizzazione di soli recXPagina record alla volta
$limite = "";
$recXPagina = 2;
// recupero il numero totale di record
$risTotale = RunQuery(qSchede($where, $limite));
$numRecTotale =mysql_num_rows($risTotale);
// se ho più record di quelle da visualizzare per ogni singola pagina imposto una BARRA di NAVIGAZIONE
if ($numRecTotale>$recXPagina) {
$numPagine = ceil($numRecTotale/$recXPagina);
echo " <div id=\"navigaRecord\">\n";
// passo il filtro $where valorizzato nella parte iniziale del file che ho omesso
echo " <p scelta=\"$where\">Pagina ";
for ($i=1; $i<=$numPagine; $i++) {
// passo il numero della pagina
if ($i==$numPagine) {
echo "<a href=\"$i\" >$i</a> ";
}
else {
echo "<a href=\"$i\" >$i</a> - ";
}
}
echo "($recXPagina record per pagina, $numRecTotale record Totali)</p>\n </div> <!-- fine navigaRecord -->\n";
}
$limite = "LIMIT 0, $recXPagina ";
$risultato = RunQuery(qSchede($where, $limite));
// inserisco i record in una tabella
echo " <div id=\"tabellaRicerca\">\n";
echo " <table>\n";
// testata
echo " <tr class=\"testata\"><td>CPI</td><td>Data</td><td>Cognome Nome</td><td>Sesso</td><td>Età</td>\n";
.... stampa per tutti i campi da mostrare
echo " </tr>\n";
if (@mysql_num_rows($risultato)>0) {
$tiporiga = "rigapari";
// scorro i record
while ($rec = mysql_fetch_array($risultato)) {
$tiporiga=cambioRigaTab($tiporiga);
// estraggo i dati dalla scheda
$idScheda=$rec['idScheda']; // identificativo Scheda
... recupero tutti i dati dal db e associo una variabile a ciascuno come l'idScheda
// visualizzo i dati
echo " <tr class=\"$tiporiga\"><td>$cpi</td>";
... popolo la tabella con tutti i campi
echo " </tr>\n";
}
}
else {
echo "<p>Nessun record soddisfa i criteri impostati</p>\n";
}
echo " </table>\n";
echo " </div> <!-- fine tabella Ricerca -->\n";
echo " </div> <!-- fine risultato Ricerca -->\n";
...
mentre qSchede è una funzione che crea la query mettendo la parte di filtro (WHERE...) e il numero di record (LIMIT ...)
filejQuery.js
Codice:
$('#navigaRecord a').click(function(event) {
event.preventDefault();
var where = $("#navigaRecord p").attr("scelta");
var pagina = $(this).attr("href");
alert("Letto pagina "+pagina+" e scelta "+where );
$.ajax({
type: "POST",
url: "tabellaRicerca.php",
data: "where=" + where + "&pagina="+ pagina,
dataType: "html",
success: function(msg){
$("#tabellaRicerca").replaceWith(msg);
alert(aggiornato);
},
error: function(){
alert("Impossibile visualizzare altri record!");
},
complete: function(){
alert("completato");
}
});
}); // --- naviga record ---
tabellaRicerca.php
Non è altro che la parte che compila la tabella di cerca.php
Non riesco a capire perché fa così, e forse è collegato al fatto che non completa l'azione ajax?
Grazie per qualsiasi consiglio