Newsgroup: it.comp.www.php
Titolo: Selezione multipla tramite checkbox su più pagine

Buonasera a tutti, allora arrivo subito al dunque, magari qualcuno è
già incappato su un problema simile. Il problema. Tramite un query
vado a generare una tabella che essendo di molti record suddivido in
più pagine. Fino a qui tutto ok. Ora alcune colonne contengono delle
checkbox che permettono di selezionare o meno alcuni record (la cosa
che sto realizzando è una stampa unione quindi mi ritrovo con colonne
che mi permettono di creare delle email piuttosto che delle
comunicazioni da stampare oppure dei fax e così via. Il problema che
non riesco a risolvere è questo. Ho una colonna di selezione che mi
permette con un click di selezionare tutti i nominativi. Il problema è
che quando passo alla seconda pagina di record perdo le selezioni
sulla prima e viceversa e così per tutte le pagine. Qualche
suggerimento? oppure articoli che trattano la cosa?
Grazie
Femtox

 suggerimento? oppure articoli che trattano la cosa?
[..]
memorizza temporanamente le selezioni di prima e seconda pagina prima di
passare alla terza.. magari utilizzando le sessioni..
-- 
www.iuz-lab.info
 - 
www.php-faq.org

On 21 Ago, 19:14, iuz <u...@host.network> wrote:

avevo pensato a qualcosa del genere, oppure ad una tabella
temporanea......però mi sfugge il come realizzare la cosa....su quale
evento faccio l'insert???
grazie
Femtox

femt...@gmail.com
 wrote:

evento?! :-)
fallo al submit della prima pagina ed al submit della seconda pagina.. 
al submit della terza unisci i dati e tiri le somme..
-- 
www.iuz-lab.info
 - 
www.php-faq.org


mmmm...non mi è chiaro...allora ho tutto dentro ad un form....però
come faccio a gestire un submit???...cioè io mi ritrovo questa
tabella....ogni 20 record creo una nuova "pagina"....ho fatto una
piccola funzione che mi gestisce la cosa....i numeri di pagina sono
degli href....come potrei gestire questa cosa???

 degli href....come potrei gestire questa cosa???
Dipende molto da cosa intendi con "i numeri sono degli href".
Se non ho capito male passi il numero di pagina con un parametro 
nell'indirizzo contenuto nello href dell'anchor passato via GET, in 
questo caso ti basta aggiungere una parte di controllo per vedere quando 
il valore dell'elemento di submit è vero e analizzare i valori passati 
per registrarli in una variabile di sessione (un array probabilmente).

,

forse mi sono spiegato male.....anzi è molto probabile....provo a
spiegare il primo problema che incontro...visualizzo dei dati in forma
tabellare, diciamo delle anagrafiche,genero anche delle colonne con
checkbox che mi permettono di selezionare i nominativi, in
intestazione a questa ho una checkbox che vorrei mi selezionasse tutti
i nominativi anche quelle non visualizzati a video, perchè presenti su
altre pagine. La suddivisione in più pagine la gestisco con una
funzione, visualizza tot record, superato il limite genera un'altra
pagina ed mi crea dei numeri di pagina che mi permettono di spostarmi.
Ora come faccio con un click su questa a prendere tutti record?anche
quelli presenti in pagina due etc ma non visibili a video?
grazie a tutti per le risposte che mi state dando
femtox

 quelli presenti in pagina due etc ma non visibili a video?
Premesso che normalmente non si fa una cosa così nel web e se non avvisi in
maniera opportuna l'utente, questo potrebbe fare selezioni non volute e
quindi casini...
ho l'impressione che tu non sappia cosa siano le sessioni, vero?
allora potresti inventarti un campo nascosto dove metti la lista degli id
delle righe selezionate che funga da "history" nelle varie pagine (senza
limitarti alla possibilità di tenere memoria delle selezioni singole) ed un
link/bottone che con JavaScript selezioni tutti i campi della pagina
corrente e/o uno che selezioni anche quelli di tutte le pagine
Nel prossimo post ti faccio un esempio che dovrebbe chiarire 

> Nel prossimo post ti faccio un esempio che dovrebbe chiarire
Supponiamo che la tua pagina tabulare abbia 5 righe con il famoso check
(contraddistinte da un id univoco che evvidenzio per chiarezza), un campo
nascosto che chiamerò "check_history" e 2 link che selezionano tutti i
valori della pagina corrente e quelli di tutte le pagine:
Supponiamo che la prima volta si selezionino la riga 2 e 5, avrai:
<pag1>
(id 1) ----- □
(id 2) ----- X
(id 3) ----- □
(id 4) ----- □
(id 5) ----- X
<<input type="hidden" name="check_history">
<link all1>
<link all2>
<submit pag2>
quando si fa il submit alla pagina 2 (con le altre righe), lato server
saprai quali sono i campi selezionati e metterai nel campo hidden
"check_history" gli id separati da "virgola"/"barra"/"quello che vuoi...",
e quindi avrai:
<pag2>
(id 6)  ----- □
(id 7)  ----- □
(id 8)  ----- □
(id 9)  ----- □
(id 10) ----- X
<input type="hidden" name="check_history" value="2,5">
<link all1>
<link all2>
se fai il submit alla pagina 3 dopo aver selezionato la riga 10, lato
server (dopo una sanitizzazione di check_history) aggiungerai il valore 10,
ottenendo:
<pag3>
(id 11)  ----- X
(id 12)  ----- X
(id 13)  ----- X
(id 14)  ----- X
(id 15)  ----- X
<input type="hidden" name="check_history" value="2,5,10">
<link all1>
<link all2>
A questo punto si possono far funzionare i link e iniziamo dal primo,
quello che seleziona i check della pagina corrente, beh è semplice devi
solo fare una funzioncina in javascript che cerchi i check in questione e
li selezioni e al submit lato server aggiungerai semplicemente i vari id
come prima...
<pag4>
(id 6)  ----- X
(id 7)  ----- X
(id 8)  ----- X
(id 9)  ----- X
(id 10) ----- X
<input type="hidden" name="check_history" value="2,5,10,11,12,13,14,15">
<link1>
<link2>
ed ora infine vediamo l'ultimo link - quello che seleziona tutti i link
della pagina corrente e delle altre, beh è simile al precedente cioe' deve
selezionare quelli della pagina corrente e poi, in piu', deve inserire nel
campo nascosto tutti gli id o in caso non si conoscessero a priori mettere
una codice tipo "ALL" che ti faccia capire che sono selezionati tutti e
alla prima occasione, lato server, tu possa capire cosa è successo e
comportarti di conseguenza...
In fine al caricamento della pagina dovrai controllare "check_history" e
selezionare o meno i campi presenti in base a cosa c'è nel campo...
Chiaro, sicuramente no :(
Era più facile farlo che spiegarlo :)

 quelli presenti in pagina due etc ma non visibili a video?
Non capisco da dove nasca la perplessità.
Tu al momento hai dei checkbox in una form, chiaramente c'è già un 
action e un pezzo di codice che controlla quali righe siano state 
spuntate per la particolare pagina visualizzata.
Questo pezzo di codice lo rendi uno dei due rami di un if/else usando 
come controllo il checkbox che vuoi che selezioni tutti.
Il concetto è che se stai lavorando solo sui record della pagina 
visualizzata (ad esempio hai segnato il primo, il terzo e il dodicesimo 
di venti) operi solo su quelli, se invece è segnato il checkbox 
"totale_globale" non ti limiti ma operi su tutti i record.


mmmm....quello che mi scrivi mi è chiaro.......però effettivamente non
che sia molto "intellegente" la selezione di record non visibili a
video....ci penserò.....mentre un aiutino mi potrebbe servire in
questo frangente....cioè come gestire l'effetto memoria nel cambio
pagina....io uso queste funzione:
function riga_barra_multi_sel($colspan,$page,$numpages){
  $colspan1=intval($colspan)-1;
  echo ("<tr><td colspan=\"".$colspan."\" style=\"text-
align:center;margin-left:0px;font-family: Tahoma; font-size:
8pt;background-color:#ffffff;color.#003366\" >");
  $pagep=$page-1;
  $pages=$page+1;
  $str_change="&page=".$page;
  $link=str_replace($str_change,"",$_SERVER['PHP_SELF']."?".
$_SERVER['QUERY_STRING']);
  echo "&nbsp;&nbsp;";
  for($j=1;$j<=$numpages;$j++){
  //if($i==41 || $i==81 || $i==121) echo "<br>";
    if($j!=$page){
      echo "<a href=\"".$link."&page=".$j."\" title=\"pagina ".
$j."\">".$j."</a>  ";
    }
    else{
       echo "<B>".$page."</B>  ";
    }
  }
  echo "</td></tr>";
  return;
}
sarà che avrò bisogno di ferie...ma non riesco a trovare una soluzione
da aggangiare al cambio pagina per il riempimento della tabella (a
livello db) temporanea di supporto...parlo riferendomi al problema
iniziale, cioè che questa tabella è una selezione di destinatari per
una stampa unione...diciamo che dovrei aggangiare il submit al cambio
pagina regolato dalla funzione che ho riportato poco sopra.....grazie
ancora a tutti...