Informazioni sui record

Gli argomenti di questa pagina

  • Prima di iniziare
  • Contare i record di una tabella con la funzione COUNT()
  • Contare i record di una tabella con la funzione mysql_num_rows()
  • Contare i record restituiti da una Query
  • Lunghezza di un campo: LENGTH( campo )
  • Il campo più lungo ed il campo più corto con MAX, MIN, e LENGTH

Prima di iniziare

Innanzitutto verificare che esista il file che contiene i dati di connessione al DB.
In questo file verranno indicate le sole quattro variabili necessarie a stabilire la connessione al DB prima di compiere qualsiasi azione ed è questo file che includeremo in tutte le pagine che debbono lavorare col DB. Questi dati vengono forniti dall'host che abbiamo scelto per il nostro sito.

Il file db_login.php
1
2
3
4
5
6
<?php
$Host 
"hostname";
$User "username";
$Password "password";
$DBName "DBName";
?>

Questo che segue è un frammento di codice che sarà necesario per eseguire la connessione al DB ed alla esecuzione delle Query.

Questo frammento di codice va inserito nella pagina che deve eseguire operazioni col DB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
include ('res/db_login.php');
if (!
$link mysql_connect($Host$User$Password)) {
    echo 
mysql_error() . "<br />\n";
} else {
    if (!
mysql_select_db($DBName)) {
        echo 
mysql_error() . "<br />\n";
    } else {
        
mysql_set_charset("utf8"); 
        
//    esecuzione della Query
        
$result mysql_query($Query);
        if (!
$result) {
            echo 
mysql_error() . "<br />\n";
        } else {
            echo 
"Query eseguita<br />\n";
            
//    qui vengono eseguiti altri eventuali lavori
        
}
    }
}
@
mysql_close ($Link);
?>

Se si apre una connessione a MySQL all'interno del file PHP è possibile chiuderla con la funzione mysql_close(). Anche se non tutti i programmatori usano chiudere esplicitamente la connessione perchè lo trovano inutile, in quanto le connessioni MySQL sono solitamente chiuse per default alla fine dello script, è buona norma fare in modo che tutte le risorse vengano liberate dopo l'utilizzo del DB, usando la funzione mysql_close(). Ciò assicurerà che la connessione venga chiusa nella linea esatta nello script in cui si dice di chiudere.

Chiusura della connessione al DB
1
2
3
<?php
mysql_close 
($link);
?> 

A volte è necessario o quanto meno utile conoscere il numero di record che stiamo elaborando. Qui di seguito vediamo alcuni dei metodi che possiamo usare.
Vedremo qui di seguito alcune funzioni per ottenere il numero di record

  • usare la funzione Count()
  • usare la funzione mysql_num_rows()

Vedremo poi

  • come contare tutti i record di una tabella
  • come contare i record restituiti da una Query

Da precisare che entrambe usano una Query sulla tabella.
Entrambe sono adatte per restituire tutti i record di una tabella.
Ma è la seconda la più indicata per contare i record restituiti da una Query.

Contare i record di una tabella con la funzione COUNT()

Iniziamo con la funzione Count().
La sintassi è:

SELECT COUNT(*) FROM tabella;
oppure
SELECT COUNT(colonna) FROM tabella;

Tra le due forme l'istruzione COUNT(*) contrariamente a COUNT(colonna) restituisce un conteggio del numero di righe recuperate, anche se alcuni campi contengono valori NULL. La sua esecuzione è anche più rapida e precisa dell'istruzione COUNT(colonna) in quanto questa seconda sintassi non tiene conto di eventuali valori NULL nella colonna indicata.

Qui di seguito la Query per leggere i record di una tabella ed il relatico codice PHP per visualizzare il numero di record letti

1
2
3
<?php
$Query 
"SELECT COUNT(*) AS tot_row FROM sql_rubrica;";
?>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 <?php
include ('res/db_login.php');
if (!
$link mysql_connect($Host$User$Password)) {
    echo 
mysql_error() . "<br />\n";
} else {
    if (!
mysql_select_db($DBName$link)) {
        echo 
mysql_error() . "<br />\n";
    } else {
        
mysql_set_charset("utf8");
        
$result mysql_query($Query);
        if (!
$result) {
            echo 
mysql_error() . "<br />\n";
        } else {
            
$row mysql_fetch_array($result);
            echo 
$row['tot_row'] . " record trovati<br />\n";
        }
    }
}
mysql_close ($link);
?> 

Questo il risultato ottenuto per la tabella sql_rubrica

101 record trovati

Contare i record di una tabella con la funzione mysql_num_rows()

Ora vediamo come ricavare il numero dei record con la funzione mysql_num_rows().
La sintassi è:

mysql_num_rows(result)
result è il resultset ottenuto con la funzione mysql_query()

Qui di seguito la Query per leggere i record di una tabella ed il relatico codice PHP per visualizzare il numero di record letti

1
2
3
<?php
$Query 
"SELECT * FROM sql_rubrica;";
?>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 <?php
include ('res/db_login.php');
if (!
$link mysql_connect($Host$User$Password)) {
    echo 
mysql_error() . "<br />\n";
} else {
    if (!
mysql_select_db($DBName)) {
        echo 
mysql_error() . "<br />\n";
    } else {
        
mysql_set_charset("utf8");
        
$result mysql_query($Query);
        if (!
$result) {
            echo 
mysql_error() . "<br />\n";
        } else {
            
$num_row mysql_num_rows($result);
            echo 
$num_row " record trovati<br />\n";
        }
    }
}
mysql_close ($link);
?> 

Questo il risultato ottenuto per la tabella sql_rubrica

101 record trovati

Contare i record restituiti da una Query

come specificato ad inizio pagina è possibile ottenere il numero dei record letti tramite un qualsiasi tipo di Query. Il modo più comodo è quello che usa la funzione mysql_num_rows().

Qui di seguito la Query per leggere i record di una tabella ed il relatico codice PHP per visualizzare il numero di record letti

1
2
3
<?php
$Query 
"SELECT * FROM sql_rubrica WHERE citta = 'Giusvalla';";
?>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 <?php
include ('res/db_login.php');
if (!
$link mysql_connect($Host$User$Password)) {
    echo 
mysql_error() . "<br />\n";
} else {
    if (!
mysql_select_db($DBName$link)) {
        echo 
mysql_error() . "<br />\n";
    } else {
        
mysql_set_charset("utf8");
        
$result mysql_query($Query);
        if (!
$result) {
            echo 
mysql_error() . "<br />\n";
        } else {
            
$num_rec mysql_num_rows($result);
            echo 
$num_rec " record trovati<br />\n";
        }
    }
}
mysql_close ($link);
?> 

Questo il risultato ottenuto per la tabella sql_rubrica

19 record trovati

Lunghezza di un campo: LENGTH( campo )

Oltre a queste ed altre funzioni ce n'è una che potrebbe tornare utile. La funzione è LENGTH( campo ) che restituisce la dimensione del valore memorizzato in un preciso campo.
Questa funzione può tornare utile sia per conoscere la lunghezza della stringa di uno specifico campo o per limitare un resultset in base a tale lunghezza.
Qui di seguito è possibile osservare due Query:

  • la prima restituisce la lunghezza delle stringhe memorizzate nel campo 'citta'
  • la seconda accetta solo i record in cui il campo citta ha una stringa più lunga di 9 caratteri
1
2
3
4
5
6
7
8
9
10
<?php
$Query_1 
"SELECT cap, citta, prov, LENGTH( citta ) AS citta_len
FROM sql_citta 
ORDER BY citta_len"
;

$Query_2 "SELECT cap, citta, prov
FROM sql_citta 
WHERE LENGTH( citta ) > 9
ORDER BY LENGTH( citta )"
;
?>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
include ('res/db_login.php');
if (!
$link mysql_connect($Host$User$Password)) {
    echo 
mysql_error() . "<br />\n"
} else {
    if (!
mysql_select_db($DBName)) {
        echo 
mysql_error() . "<br />\n"
    } else {
        
mysql_set_charset("utf8");
        if (
$result mysql_query($Query)) {
            
$num_row mysql_num_rows($result);
            
$numfields mysql_num_fields($result);
            
$fields = array();
            for (
$i=0$i $numfields$i++) {
                
$fields[] = mysql_field_name($result$i);
            }
            if (
$num_row 0) {
                echo 
$num_row " record letti<br />\n";
                echo 
"<table class=\"tabella_it\">\n";        
                echo 
"<tr>\n";
                for (
$i=0$i $numfields$i++) {
                    echo 
"<th>" $fields[$i] . "</th>\n";
                }
                echo 
"</tr>\n";
                while (
$row mysql_fetch_array($result)) {
                    echo 
"<tr>\n";
                    for (
$i=0$i $numfields$i++) {
                        echo 
"<td>";
                        echo 
is_null($row[$fields[$i]]) ? 'NULL' $row[$fields[$i]];
                        echo 
"</td>\n";
                    }
                    echo 
"</tr>\n";
                }
                echo 
"</table>\n";
            } else {
                echo 
"Nessun record restituito<br />\n";
            }
        } else {
            echo 
mysql_error() . "<br />\n"
        }
    }
}
mysql_close ($link);

Questi sono i risultati che si ottengono con le due Query

38 record trovati
15 record visualizzati
cap citta prov citta_len
29010 Godi PC 4
31037 Loria TV 5
21030 Cuvio VA 5
56017 Agnano PI 6
38030 Varena TN 6
80125 Agnano NA 6
80070 Fusaro NA 6
06031 Bevagna PG 7
98031 Capizzi ME 7
21020 Daverio VA 7
56011 Agropoli GH 8
43050 Cereseto PR 8
40059 Medicina BO 8
02011 Accumoli RI 8
17010 Giusvalla SV 9
... ... ... ...
15 record trovati
15 record visualizzati
cap citta prov
35031 AbanoTerme PD
20050 Correzzana MB
58010 Marsiliana GR
95040 Borgo lupo CT
81010 Gallo matese CE
67010 Ville di Fano AQ
36078 Castelvecchio VI
60015 Falconara Alta AN
22010 Dosso del liro CO
23821 Abbadia Lariana LC
18037 Castel Vittorio IM
39013 Moso in passiria BZ
12011 Borgo S. Dalmazzo CN
67020 Castelvecchio calvisio AQ
12040 Isola di bene vagienna CN

Il campo più lungo ed il campo più corto con MAX, MIN, e LENGTH

l'abbinamento di queste funzioni può restituirci il valore più lungo e quello più breve tra quelli memorizzati in una tabella.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$Query_1 
"SELECT MAX( LENGTH( citta ) ) AS maximum, citta
FROM sql_citta
WHERE LENGTH( citta ) = (
SELECT MAX( LENGTH( citta ) )
FROM sql_citta )
GROUP BY citta"
;

$Query_2 "SELECT MIN( LENGTH( citta ) ) AS minimum, citta
FROM sql_citta
WHERE LENGTH( citta ) = (
SELECT MIN( LENGTH( citta ) )
FROM sql_citta )
GROUP BY citta"
;
?>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
include ('res/db_login.php');
if (!
$link mysql_connect($Host$User$Password)) {
    echo 
mysql_error() . "<br />\n"
} else {
    if (!
mysql_select_db($DBName)) {
        echo 
mysql_error() . "<br />\n"
    } else {
        
mysql_set_charset("utf8");
        
$result mysql_query($Query);
        
$num_row mysql_num_rows($result);
        
$numfields mysql_num_fields($result);
        if (!
$result) {
            echo 
mysql_error() . "<br />\n";
        } else {
            
$fields = array();
            for (
$i=0$i $numfields$i++) {
                
$fields[] = mysql_field_name($result$i);
            }
            
$row mysql_fetch_array($result);
            echo 
$num_row " record restituiti<br />\n";
            echo 
"<table class=\"tabella_it\">";
            echo 
"<tr>\n";
            for (
$i=0$i $numfields$i++) {
                echo 
"<th>" $fields[$i] . "</th>\n";
            }
            echo 
"</tr>\n";
            echo 
"<tr>\n";
            for (
$i=0$i $numfields$i++) {
                echo 
"<td>" $row[$fields[$i]] . "</td>\n";
            }
            echo 
"</tr>\n";
            echo 
"</table>\n";
        }
    }
}
mysql_close ($link);
?>

Questi sono i risultati che si ottengono con le due Query

2 record restituiti
maximum citta
22 Castelvecchio calvisio
1 record restituiti
minimum citta
4 Godi

 

 



settore tecnico il sito di lorettabweb il Forum di sostegno
il forum il forum il forum