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

    conoscere quale numero manca

    ciao ragazzi,
    nel database ho diversi record, dando un numero, dovrei vedere tutti i record che mancano partendo da 0 ed arrivando fino al numero inserito.

    avete idea di come poter fare?

    grazie...

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Ecco un esempio.
    Codice PHP:
    <?php
    $range 
    range(1,10); //intervallo in cui vuoi fare il controllo. Parte da 1 e non da 0 come dici tu. Dove il valore max di range sarebbe l'id più alto della tua tabella o quello che scegli tu.

    $pres = array(1,3,6,8); //es di record restituiti dalla tua query

    $mancanti = array(); // inizializzi un array vuoto

    foreach($range as $valore)
    {
    if(!
    in_array($valore,$pres)) // se il valore non è presente nell'array
    array_push($mancanti,$valore); // lo aggiungi all'array di mancanti.
    }

    var_dump($mancanti);
    // E' giusto per farti capire il meccanismo. Ora non faccio in tempo a farti il codice specifico per la query.
    ?>

  3. #3
    ok grazie... adesso provo ad adattarmelo!

  4. #4
    aspetta ma questo cos'è?

    codice:
    $pres = array(1,3,6,8); //es di record restituiti dalla tua query

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Se ho capito bene tu hai una tabella da cui mancano dei record, che magari sono stati cancellati. Gli id rimanenti sono ad esempio 1,3,6,8. e tu vuoi che ti venga visualizzato che mancano i record 2,4,5,7. Ho capito bene il tuo problema?

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Codice PHP:
    <?php
    $query 
    mysql_query("select id from tabella");

    $query_max mysql_query("select id as massimo from tabella order by id desc LIMIT 1");
    $massimo mysql_result($query_max,0,'massimo');

    $presenti = array();
    $mancanti = array();
    while (
    $row mysql_fetch_array($query) )
    {
    $id $row['id'];
    array_push($presenti,$id);  
    }

    for (
    $i=1;$i<=$massimo;$i++) 
    {
    if(!
    in_array($i,$presenti)) 
    array_push($mancanti,$i); 
    }
    echo 
    "Record mancanti: 
    "
    ;
    foreach(
    $mancanti as $valore)
    echo 
    "$valore 
    "
    ;
    ?>

  7. #7
    no guarda, veramente mi sono spiegato male io...

    la tabella ha i campi ID, NUM e NOME.

    ID c'è l'id del record,
    NUM c'è un numero in ordine progressivo,
    NOME c'è il nome.

    Dando un numero ad esempio 100, vorrei sapere quali record non esistono con NUM = da 1 a 100.

    grazie...

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da clockworkorange
    no guarda, veramente mi sono spiegato male io...

    la tabella ha i campi ID, NUM e NOME.

    ID c'è l'id del record,
    NUM c'è un numero in ordine progressivo,
    NOME c'è il nome.

    Dando un numero ad esempio 100, vorrei sapere quali record non esistono con NUM = da 1 a 100.

    grazie...
    A me sembra che avessi intuito ciò che ti serve.

    Lo script che ti ho postato va bene.
    L'unica differenza che dal form invierai il tuo limite superiore.Quindi:


    $valoreSuperiore = $_POST['numero'];

    $query = mysql_query("select id from tabella where id<= '$valoreSuperiore' ");

    $query_max = mysql_query("select id as massimo from tabella where id <= '$valoreSuperiore' order by id desc LIMIT 1");

    Per il resto non cambia niente.

    Non capisco il senso del campo NUM che contiene numeri progressivi visto che ti risulterebbe un doppione del campo id autoincrementante.

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.