• User

    Link a valore ID non consecutivo. Come fare?

    Ciao a tutti di nuovo qui in cerca di aiuto... Allora, vi illustro subito il problema che per molti di voi risulterà una schiocchezza. Io ho una pagina che presenta un semplice elenco di elementi inseriti nel db (ipotiziamo una pagina in cui io richiamo tutte le ricette presenti in una tabella). Ognuno di questi valori è un link ad una pagina dedicata alla ricetta in cui si mostra come realizzarla. In questa pagina io dovrei inserire dei link alla ricetta precedente e successiva senza necessità di tornare alla pagina di elenco. Come faccio? :arrabbiato: Il problema mi sorge perchè logicamente le ricette inserite non hanno obbligatoriamente un ID consecutivo (visto che qualcuna di queste potrebbe essere stata cancellata) e quindi non mi basta fare il link $id_ricetta+1 e -1
    Riassumo:
    Pagina ricette.php
    [PHP]
    $q_ricette = mysql_query("SELECT * FROM ricette");
    while($ricette = mysql_fetch_array($q_ricette)){
    echo /semplifico così logicamente non funziona/$ricetta['nome'] <a href="ricetta_dett.php?id_ric=$ricette['ID']">vedi ricetta</a>
    }
    [/PHP]
    cliccando su link mi manderà per esempio alla pagina:
    ricetta_dett.php?id_ric=15

    In questa pagina io vorrei un link avanti ed un link indietro che mi mandino alla ricetta prima che magari è stata inserita con ID autoincr =7 e uno a quella successiva che magari avrà ID 17 perchè quella con ID 16 è stata cancellata... come faccio? Ciao e grazie a tutti


  • User Attivo

    Ciao! Dipende da quello che intendi per ricetta "precedente" e "successiva".

    Ipotizzando che siano in ordine temporale potresti fare due query (mettendo come "$time_ricetta_corrente" il timestamp della ricetta che stai visualizzando - il mio è pseudo-code, perchè nessuno usa MDB2?? :():

    id_prec = query('SELECT id FROM ricette WHERE time < $time_ricetta_corrent ORDER BY time DESC LIMIT 0,1')
    id_succ = query('SELECT id FROM ricette WHERE time > $time_ricetta_corrent ORDER BY time LIMIT 0,1')
    

    HTH, ciao! 🙂