Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Scorrere un array e prendere il record precedente a quello corrente

    Ciao a tutti,
    il problema è secondo me piu difficile da formulare che da "risolvere"...solo che le mie limitate conoscenze di php non me ne fanno venire a capo :master:

    il problema è questo:
    eseguo una query per vedere tutti i record di una tabella:
    Codice PHP:
    $query_alb_corrente="SELECT * FROM album_foto ORDER BY WHENADDED ASC";

    $risultato_alb_corrente=mysql_query($query_alb_corrente$connessione) or die("Non riesco a caricare l'album corrente");
    while(
    $album_corrente=mysql_fetch_assoc($risultato_alb_corrente)){
        
    $album[] = $album_corrente;

    e li sistemo nell'array $album....
    dopo vorrei scorrere l'array $album e quando trovo "il record corrente" devo mandare a video quello precedente...(mi serve per una sorta di "paginazione"... mando a video il link precedente, la pagina attuale e il link alla pagina successiva).

    Codice PHP:
    foreach($album as $album_prec):
    if(
    $album_prec['ID'] == $alb_corrente_id){
    //qui dovrei salvare il campo 'ID' e 'TITOLO' del record precedente a quello corrente...
    //qui dovrei salvare il campo 'ID' e 'TITOLO' del record successivo a quello corrente...
    }
            endforeach; 

    Spero di essermi fatto capire...xke veramente sarà na cavolata ma nn so quali funzioni mi permettono di fare questa operazione...
    :master:

    Grazie a chi mi aiuterà!

  2. #2
    nessuno sa come fare... o nessuno ha capito la domanda??!?

  3. #3
    allora...io la farei cosi

    Codice PHP:

    $query_alb_corrente
    ="SELECT id,titolo FROM album_foto ORDER BY WHENADDED ASC"

    $risultato_alb_corrente=mysql_query($query_alb_corrente$connessione) or die("Non riesco a caricare l'album corrente"); 
    while(
    $album_corrente=mysql_fetch_array($risultato_alb_corrente)){ 
        
    $album_id[] = $album_corrente['id']; 
        
    $album_titolo[] = $album_corrente['titolo'];

    e poi fai cosi per scorrere l'array

    Codice PHP:

    for($i=0;$i<sizeof($album_id);$i++) {
     
         if((
    $album_id[$i] == $alb_corrente_id) && ($i != 0) && ($i == (sizeof($album_id)-1))) { 

            
    //precedente
            
    echo $album_id[$i--];
            echo 
    $album_titolo[$i--];
          
            
    //successivo
            
    echo $album_id[$i++];
            echo 
    $album_titolo[$i++]; 
         }
         else if ((
    $album_id[$i] == $alb_corrente_id) && ($i == 0)) {

            
    //mostri solo il successivo perchè il precedente non esiste
            
    echo $album_id[$i++];
            echo 
    $album_titolo[$i++];

         }
         else if ((
    $album_id[$i] == $alb_corrente_id) && ($i == (sizeof($album_id)-1))) {

            
    //mostri solo il precedente perchè il successivo non esiste
            
    echo $album_id[$i--];
            echo 
    $album_titolo[$i--];

         }  



  4. #4
    Sto cercando di adattare il codice che mi hai postato alle "variabili del mio" però mi sono accorto che c'è un errore. In particolare in questa parte di codice:
    Codice PHP:
    $query_menu="SELECT * FROM album_foto ORDER BY WHENADDED ASC";

    $risultato_menu=mysql_query($query_menu$connessione) or die("Non riesco a caricare il menu");
    while(
    $album_menu=mysql_fetch_array($risultato_menu)){
        
    $album_id[] = $album_menu['ID'];
        
    $album_titolo[] = $album_menu['TITOLO'];

    nell'array album_id non viene memorizzato nulla....

    infatti nel ciclo dopo (il tuo) non riesce mai a passare il controllo:
    Codice PHP:
    $album_id[$i] == $id_album_corrente 
    cosa potrebbe essere :master: ?

    ho provato a inizializzare l'array prima di memorizzarci i dati ($album_id = array() ma niente...

  5. #5
    intanto non fare un select *, è inutile prelevare tutti gli elementi della tabella se ti servono solo 2 campi.

    poi qui:
    $album_id[] = $album_menu['ID'];

    ['ID'] è l'intestazione della colonna interessata, controlla che la tua colonna si kiami ID....mi sembra che mysql è case sensitive, quindi controlla le maiuscole e minuscole

  6. #6
    ho sistemato il problema case sensitive...alla fine era quello....xò non risolvo ugualmente...

    non mi manda a video mai nulla...

    nn capisco bene il controllo:
    Codice PHP:
    ($i == (sizeof($album_id)-1)) 
    xkè lo hai messo? :master:

  7. #7
    per controllare se l'elemento in questione è l'ultimo dell'array; se così non si può stampare il successivo dell'ultimo.

    sizeof ti dà la dimensione dell'array....per ex. per dieci elementi di darà come risultato 10, solo che il php come tutti i linguaggi di programmazione inizia la numerazione da 0 quindi l'ultimo elemento sarà in posizione 9 ovvero (sizeof($album_id)-1)

  8. #8
    Ce l'ho fatta....dopo svariate prove adesso va come volevo

    il controllo con il sizeof alla fine nn l'ho utilizzato...tranne che per valutare che siano finiti i record(quindi non visualizzare il successivo)...

    per il precedente mi è bastato il controllo che $i non fosse 0...

    Grazie mille mr.click....mi sei stato veramente utile...anzi FONDAMENTALE....

    grazie ancora!...a presto

  9. #9
    ...fai attenzione pero che se l'elemento che vai a confrontare è quello in ultima posizione potrebbe dartiun errore se ometti quel controllo..fammi sapere

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.