Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    [PHP/MySql] recuperare ultimo id dell'ultimo record

    ciao, il problema questa volta è semplicissimo

    ho questa tabella di database

    id
    1
    2
    4
    5
    6

    (manca l'id 3, xke il record È stato cancellato)

    io dovrei fare un select, estraendo l'id precedente esistente, ovviamente se non mancasse nessun id sarebbe "facile" ma potrebbe non esistere l'id precedente diretto, come in questo caso ke manca l'id 3.

    PS: accetto semplicemente link del forum, insulti xke non ho trovato la soluzione nel forum

    thx sin da ora

  2. #2
    Credo che l'unico modo sia fare una serie di select a partire da uno salendo fino a trovarne uno nuovo.
    Codice PHP:
    $index 1;
    while(
    true)
    {
       
    $query "SELECT COUNT(id) FROM Tabella WHERE id = $index";
       
    $res mysql_fetch_array(mysql_query($query));
       if(
    intval($res[0]) == 0)
          break;
       else
          
    $found++;

    Il problema è che potrebbe essere una cosa un po' pesante per il DB (specie se lo metti come funzionalità Front End)

  3. #3
    aii.. ciclare le cose insomma..

    è una cosa ke effettivamente odio parecchio fare..

    non esiste un'altro sistema dunque?!


    è possibile, nel mio caso, che dovrebbe fare anche 1000 cicli per trovare il prossimo o precedente id..

  4. #4
    mmm l'altra sarebbe ottenere tutta la lista di id (per intenderci "SELECT id FORM Tabella ORDER BY id ASC") e salvarla in un array, poi ciclare l'array, così da evitare troppe query, ma un ciclo è necessario farlo.

  5. #5
    Utente di HTML.it L'avatar di Enoa
    Registrato dal
    Jul 2005
    Messaggi
    573
    Il campo id è auto_increment?
    Se si:
    - dopo aver fatto una query insert, puoi usare mysql_insert_id()

    - se vuoi sapere il valore del prossimo auto_increment
    codice:
    $res = mysql_query("SHOW TABLE STATUS LIKE 'tabella'") or die(mysql_error());
    $riga = mysql_fetch_array($res);
    echo $riga['Auto_increment'];
    ammetto di non aver capito però cos'è "l'id precedente esistente"

  6. #6
    Non so se ho capito bene la domanda, ma potrebbe essere una cosa del genere?
    codice:
    SELECT ID FROM `tabella` WHERE ID < {$index} ORDER BY ID DESC LIMIT 1

  7. #7
    ma la domanda in sintesi è molto semplice

    ricavare l'id precedente o sucessivo

    "l'id precedente esistente"
    è l'id precedente esistente, ovvero che esista, se ho questi record
    1
    2
    4

    e il 3 manca perchè è un record cancellato, non esiste più

    Il campo id è auto_increment?
    Se si:
    - dopo aver fatto una query insert, puoi usare mysql_insert_id()
    si si È autoincrement, ma mysql_insert_id() calcola il fattore record cancellati?

  8. #8
    Si ma precedente o successivo a cosa??? Ad un id che passi tu?
    Se si guarda la query che ti ho postato

  9. #9
    si si ad un id che do io...

    dici questa?

    SELECT ID FROM `tabella` WHERE ID < {$index} ORDER BY ID DESC LIMIT 1

    dove $index sta per l'id che li passo?

    ma tiene presente il fatto che il diretto id precedente potrebbe non esistere?

  10. #10
    La query mi sembra chiara, provala e vedi, nel tuo esempio:

    codice:
    1
    2
    4
    5
    se gli passi 4 ottieni 2, se gli passi 1 non ottieni risultati

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.