Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Scorrimento Record

  1. #1

    Scorrimento Record

    Vi spiego cosa vorrei ottenere:

    In una pagina creo una tabella con i risultati di una ricerca in un db MySql. Cliccando su uno dei risultati passo in GET l'indice di quella riga di risultato e in una nuova pagina produco, interrogando di nuovo il db, una serie di dettagli.

    Vorrei creare in questa seconda pagina due pulsanti: precedente e successivo per poter accedere al dettaglio delle altre righe di risultato.

    Ho pensato di passare in SESSION un array degli indici come appaiono dopo la ricerca ottengo una cosa del genere:

    codice:
    $_SESSION['indici']
    
    Array
    (
        [1] => 1
        [2] => 2
        [7] => 7
        [4] => 4
        [9] => 9
        [6] => 6
    )
    Ho sia valore che indice uguali

    Se la mia pagina riceve la richiesta via GET del dettaglio dell'indice 7 ($_GET['detailof']) ad esempio come posso confrontarlo con il mio array per ottenere che rispetto a 7 il precedente è 2 e il successivo è il 4

    Come gestire il ciclo completo ovvero prevedere come precedente di 1 l'indice 6 (ultimo valore)??

    Grazie per ogni dritta, ho proveto ad usere net e prev ma come faccio a stabilire che quello passato vi GET è l'indice attuale del mio array in SESSION???

    Ciao.

  2. #2
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    L'errore è avere valori e indici uguali nell'array.
    Dovresti avere gli indici progressivi, in modo da poterli scorrere avanti e indietro.

  3. #3
    Posso benissimo assegnare indici progressivi, avrei un array così.:

    [CODE
    ]Array
    (
    [0] => 1
    [1] => 2
    [2] => 7
    [3] => 4
    [4] => 9
    [5] => 6
    )
    [/CODE]

    La mia pagina sta prendendo in esame il valore 7 ([2] => 7), come faccio a scorrere l'array per capire che prima di 7 c'è [1] => 2, quindi 2; e dopo c'è [3] => 4, quindi 4 ???

  4. #4
    Ho risolto così:

    codice:
    		if (isset($_SESSION['indici'])) {
    			
    			$indici = $_SESSION['indici'];
    			$count = count($indici);
    			
    			for ($i = 0; $i < $count; $i++) {
    					if ($indici[$i] == $itemid){
    							$precedente = $indici[$i-1];
    							$successivo = $indici[$i+1];
    					}
    					
    			}
    
    		
    			$this->detailcontent .= "<div id='navigazione'>";
    
    			if($precedente){
    					$this->detailcontent .= "<< Precedete - ";
    			}
    			
    			if($successivo){
    					$this->detailcontent .= "- Successivo >>";
    			}
    			
    			$this->detailcontent .= "</div>\n";
    		}

  5. #5
    se precedente vale 0 non te lo stampa
    ti conviene utilizzare un if del tipo
    codice:
    if (array_key_exists($i-1,$indici))
    	$precedente=$indici[$i-1];
    else
    	$precedente=false;
    il controllo poi lo fai con if($precedente!==false)
    similare per $successivo

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.