Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    11

    [MySQL] Avanti e Indietro in un array

    Salve.
    Se qualcuno fosse in grado di aiutarmi, gliene sarei molto grato.

    Questa è la situazione:

    -----------lista.php
    Tramite form l'utente invia una query al db e ottiene una tabella con i risultati della ricerca, ordinati per FREQ (una cifra, non unica).
    In ogni record della tabella è presente un link che punta alla pagina dettaglio.php , alla quale tramite GET viene passato il valore della chiave primaria 'id' del record.
    L'utente, dunque, se vuole più dettagli rispetto ad un singolo record, fa click e viene rimandato alla pagina dettaglio.php

    ---------dettaglio.php
    viene recuperato il valore di 'id' e viene fatta una query per quel singolo record.
    I risultati sono stampati nella pagina.


    Vorrei permettere all'utente di visualizzare il dettaglio del record PRECEDENTE o SUCCESSIVO senza costringerlo a tornare alla pagina lista.php
    L'utente dovrebbe quindi poter navigare a passi di 1 record all'interno dell'elenco che è stato generato nella pagina lista.php
    Il campo 'id' è autoincrement, ma non può tornare utile come riferimento, in quanto i risultati sono ordinati sempre per FREQ crescente.

    Spero di non aver dimenticato nessuna informazione utile.

    Grazie a chi troverà tempo e voglia per rispondere.

    Ciao!

  2. #2
    Per estrarre gli ID precedenti e successivi ti basta eseguire una query con LIMIT 1, ORDER BY freq DESC ed ASC con ID > e < dell'ID corrente.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    11
    Ciao.

    Ordinando per FREQ non è detto però che il record "FREQ+1" corrisponda ad un 'id' maggiore.
    Magari ho FREQ=500,ID=337 e il record successivo FREQ=501,id=255

  4. #4
    Originariamente inviato da juju
    Ordinando per FREQ non è detto però che il record "FREQ+1" corrisponda ad un 'id' maggiore.
    Magari ho FREQ=500,ID=337 e il record successivo FREQ=501,id=255
    Hai ragione, intendevo dire con FREQ (e non per ID) > e < del FREQ corrente.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    11
    Quindi i link NEXT/PREV dovrebbero generare una query simile a quella fatta nella prima pagina, poichè mi serve poter scorrere avanti e indietro QUEI risultati, ma utilizzando FREQ > o < di quella corrente ?
    Come risolvo il problema che FREQ non ha valori unici ?

  6. #6
    Originariamente inviato da juju
    Come risolvo il problema che FREQ non ha valori unici ?
    Non è un problema. Prova la soluzione suggerita.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    11
    La sto provando.
    Il problema mi si presenta se mi trovo con un valore , diciamo, FREQ=499 , unico, e FREQ=500 , contenuto in 3 record. Se eseguo la query con FREQ>499 , mi viene restituito solo il primo record dei tre in cui FREQ=500.
    La query successiva diventerebbe FREQ>500 , e in questo modo mi sarei giocato due record. O no ?

    Grazie, intanto

  8. #8
    Puoi risolvere il problema eseguendo l'ORDER BY freq, id.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    11
    Perdonami, non riesco a capire.
    Un record con freq=499 , 3 record con freq=500

    SELECT *
    FROM `main`
    WHERE `freq` > '499'
    ORDER BY `freq` ASC
    LIMIT 0 , 1

    Ottengo il primo record in cui freq=500

    PEr ottenere il sussessivo record in cui freq=500 dovrei cambiare la query (complicando un po' la cosa), ma in che modo? Non riesco a capire l'utilità di ordinare anche per 'id'

    Grazie, ciao

  10. #10
    Dati:

    freq id

    498 1
    499 2
    499 4
    499 6
    500 5
    500 7

    SELECT *
    FROM table
    ORDER BY freq, id
    Valori correnti: id 2 - freq 499

    Come trovare l'ID successivo nel caso di freq multipli:

    SELECT id
    FROM table
    WHERE (freq >= 499) AND (id > 2)
    ORDER BY freq, id LIMIT 1

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 © 2024 vBulletin Solutions, Inc. All rights reserved.