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...![]()
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...![]()
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.
?>
aspetta ma questo cos'è?
codice:$pres = array(1,3,6,8); //es di record restituiti dalla tua query
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?
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
";
?>![]()
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.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...
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.