Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074

    complesso problema di paginazione

    Ho un problema di paginazione alquanto complesso, in cui interagiscono PHP ed AJAX.
    Diciamo che ho una pagina in cui possone essere richiamate una serie di news, per esempio in base alla data:
    - tutte quelle aggiunte oggi, oppure
    - tutte quelle aggiunte questa settimana, oppure
    - tutte quelle aggiunte questo mese
    Naturalmente, tanto più ampio è il periodo preso in considerazione, tanto più possono essere le news (anche centinaia).
    Il problema (iniziale) è che, quando le news sono tante, i tempi di caricamento sono lenti; quindi, per ovviare a questo problema, ho pensato di caricare una news per volta, con due link next e prev per caricare la successiva o la precedente.
    E qui c'è il secondo problema (quello tecnico): le richieste sono effettuate via AJAX, per non ricaricare l'intera pagina, e - nel caso dell'esempio per data - posso inviare una richiesta alla pagina loadata.php?action=variabile, dove questa variabile può essere day o week o month.
    La pagina loadata.php, poi, interpreterà questa richiesta così:
    Codice PHP:
    switch($_REQUEST['action']) {
    case 
    'day'$data "day";break;
    case 
    'week'$data "week";break;
    case 
    'month'$data "month";break; 
    quindi effettuo una query al db con un
    Codice PHP:
    WHERE date '$data' 
    Il punto è che non mi viene in mente nessuna soluzione che mi consenta la paginazione news-by-news. Non posso, infatti, prevedere centinaia di casi possibili...
    Diciamo che, di default, viene mostrata la prima news, e quindi ho un valore di riferimento iniziale (n=1); potrei conseguentemente crearmi dei valori n-1 e n+1, ma come fare ad avere, in ogni pagina, il corretto valore di riferimento (il numero corrispondente alla news caricata)?
    Mi rendo conto che, il problema, forse prima ancora che tecnico è concettuale, ma non mi viene in mente nessuna soluzione.
    Qualche suggerimento?
    metatad
    graphic & web design

  2. #2
    I dati letti dal db, come risposte alle richieste AJAX, li ricevi in formato XML?

    se si prima di inviarlo gli aggiungi un tag che ti dice qual'è il numero di news visualizzata.

    Ciao
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    no, li ricevo in html...
    ma il problema è che se invio due dati (ad esempio: day + 14), quando poi vado a valutare la request nella pagina php di destinazione, finisco col trovarmi negli impicci...
    Perchè invece di tre possibili combinazioni
    Codice PHP:
    switch($_REQUEST['action']) {
    case 
    'day'$data "day";break;
    case 
    'week'$data "week";break;
    case 
    'month'$data "month";break; 
    ne avrei infinite...
    metatad
    graphic & web design

  4. #4
    Nella pagina principale non puoi utilizzare una variabile contatore javascript da utilizzare come indice delle news?
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    il problema è come passarla alla pagina loadata.php...
    metatad
    graphic & web design

  6. #6
    Se hai un contatore javascript puoi creare la URL loaddata.php?index=111 e fare la chiamata AJAX solo con javascript al click sul tasto di richiesa della news.
    no?

    Mi sa che non ho ancora messo a fuoco il problema.
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    il problema è: alla pagina loadata.php devo passare innanzitutto un valore (variabile action), che poi, con lo switch, viene interpretato. Questo mi crea tre possibili condizioni, nel caso della data (day, week, month). Se a questo aggiungo un'altro valore/variabile, le combinazioni aumenterebbero in modo esponenziale...
    però... però - sto pensando - forse potrei provare a passare i due valori/variabili alla pagina loadata.php, con una stringa tipo:
    Codice PHP:
    loadata.php?action=day&page=111 
    e poi fare lo switch sulla variabile action, e caricare la variabile page con un $_GET...
    devo fare un tentativo...
    ci provo, e poi comunico l'esito...
    metatad
    graphic & web design

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    no, ho detto una sciocchezza...
    o meglio, (concettualmente) funziona, ma fino ad un certo punto (tecnicamente).
    Infatti, se nel JavaScript che definisce la funzione AJAX scrivo:
    Codice PHP:
    http.open('get''loadata.php?page=1&action='+action); 
    e poi, nel link che la richiama:
    Codice PHP:
    [url="javascript:sndReq('week')"][b]next news[/b][/url
    effettivamente passo due valori alla pagina loadata.php; e se in questa scrivo:
    Codice PHP:
    $page $_GET["page"];
    $newpage $page+1;
    $next $newpage+1;
    $prev $page;
    switch(
    $_REQUEST['action']) {
    case 
    'week'$date"week";break;
    ... 
    e poi faccio la query con questa impostazione:
    Codice PHP:
    DESC LIMIT $page,$newpage 
    effettivamente carica la notizia successiva. Pero, costruendo i link di spostamento così:
    Codice PHP:
    [url="javascript:sndReq('week'\"][b]prev news[/b][/url] | [url="javascript:sndReq('week')"][b]next news[/b][/url] 
    quando li vado a cliccare, richiamando quanto impostato nella funzione AJAX (ovvero page=1), trasmetto sempre lo stesso valore, e quindi non richiamo nulla di diverso da quanto è già stato caricato in pagina...
    Siamo sempre lì, dovrei poter trasmettere due variabili (e questo, usando il GET, si risolve), ma dovrei anche poter conservare il valore della variabile numerica, in modo da poterlo incrementare ad ogni richiesta successiva.
    Ma come?!?
    Che rogna...
    metatad
    graphic & web design

  9. #9
    e se costruisci te l'url da richiamare con Javascript?

    url = 'loadata.php?' + 'page=' + nuovo_valore + '&action=' + altro_valore;

    poi esegui
    http.open('get', url);

    penso che dovrebbe funzionare.
    Mirko Agrati
    WEB : http://mirkoagrati.110mb.com
    RSS : http://feeds.feedburner.com/MirkoAgratiArticoli

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    Non mi è chiarissimo, quello che suggerisci...
    intanto: la stringa
    Codice PHP:
    url 'loadata.php?page=' nuovo_valore '&action=' altro_valore
    come faccio a costruirla (dinamicamente)? La funzione AJAX deve necessariamente stare nella pagina che carica i dati (perché è da lì che partono le richieste), quindi non posso usare PHP, che agendo server-side può elaborare solo al primo (ed unico) load della pagina...
    e poi (mi/ti chiedo): la stringa
    Codice PHP:
    http.open('get'url); 
    funzionerà come deve, in AJAX?
    Il mio JavaScript non è né troppo approfondito, né tanto fresco ...
    metatad
    graphic & web design

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.