giorno settimanamesegiorno

Sono passati 296 giorni dall'inizio dell'anno che corrispondono a 43 settimane

Per quanto allunghi il collo l'oca non diverrà mai cigno



* Chattina

Aggiorna Storia
  • mar: Passo per un saluto, so che ci siete sempre tutti da qualsiasi postazione e io da qui vi abbraccio forte! :grazieJ:
    Dicembre 21, 2025, 13:03:46
  • mar: Che bella la dedica per Gianni mi ha commosso,è pieno di speranza il tuo messaggio prof! :abbraccio:
    Dicembre 01, 2025, 19:53:23
  • mar: Buona sera piccini vi saluto da qua!
    Dicembre 01, 2025, 19:51:50
  • mar: :Amore8:
    Novembre 13, 2025, 17:35:20
  • mar: Vi voglio beneeeeee per sempre!:Amore8:
    Novembre 13, 2025, 17:34:06
  • mar: Uffa pero' il Natale da bambini e' cosi' bello, da adulti ti spessa il cuore! :n044:
    Novembre 12, 2025, 13:39:23
  • mar: Mi mancate tanto  ma quando vengo qui ci siete ancora ed e' come se il tempo non fosse passato! :Amore8:
    Novembre 12, 2025, 13:36:44
  • mar: E ciao piccola Ketty :baci_baci:
    Novembre 12, 2025, 13:35:03
  • mar: Mi piace passare di qui perche' qui ci siete ancora tutti vero? Ciao Gianni lo so che mi leggi e ciao Louise! Vi voglio sempre bene! :abbraccio:
    Novembre 12, 2025, 13:33:44
  • mar: :tuffarsi:
    Novembre 12, 2025, 09:54:11
  • mar: :ciao:
    Novembre 12, 2025, 09:53:15
  • mar: Buon giorno se qualcuno passa vi mando i baci dalla bassa!:tuffarsi:
    Novembre 12, 2025, 09:52:30
  • mar: Ora vado a nanna,ho anche aggiornato il profilo!Buona notte piccini :ciao:
    Ottobre 27, 2025, 21:29:54
  • mar: Mi sono rimaste aperte tutte le emoticon non so come chiuderle!
    Ottobre 27, 2025, 21:25:05
  • mar: Buona notte anche da qui...tra me e me! :baci_baci: :abbraccio:
    Ottobre 27, 2025, 21:23:34
  • mar: Ma ci ero g'a passata nel 2022! Mo' non lo mollo anche se ci passo solo io!
    Ottobre 27, 2025, 19:08:34
  • mar: E' bellissimo ripassare di qui!
    Ottobre 27, 2025, 19:05:54
  • mar: :resistere:
    Febbraio 15, 2022, 19:44:48
  • mar: Non mi ricordavo di essere un global moderator wauuuu Ok Prof ti lascio restaurare in pace!
    Febbraio 15, 2022, 19:43:56
  • mar: :Cartelli70:
    Febbraio 15, 2022, 19:41:14
  • mar: ad cazzum pure qui?
    Febbraio 15, 2022, 19:41:02
  • mar: ciaoooo sono in perlistrazione
    Febbraio 15, 2022, 19:40:44
  • mar: :okkey:
    Febbraio 15, 2022, 19:40:20
  • Loretta/Nina: ciao a tutti
    Ottobre 04, 2021, 19:23:02
  • Loretta/Nina: :tuffarsi:
    Settembre 21, 2021, 07:08:03
  • Loretta/Nina: Buon autunno a tutti
    Settembre 21, 2021, 07:01:35
  • nuvolotta: avventure testuali
    Luglio 06, 2020, 23:26:08
  • _jan_: ...gli ultimo però....!!
    Gennaio 14, 2019, 14:45:09
  • _jan_: vedi gli ultimi post in fondo.
    Novembre 24, 2018, 19:10:00
  • mar: Trovato :Amm9:
    Novembre 24, 2018, 18:57:51
  • mar: Chi cerca trova non vi trovo! :Cartelli2:
    Novembre 24, 2018, 18:57:05
  • mar: Vado a vedere le cartoline!
    Novembre 24, 2018, 18:52:38
  • mar: :Amore145:
    Novembre 24, 2018, 18:52:21
  • mar: :Amore178:
    Novembre 24, 2018, 18:52:07
  • _jan_: Welcome Visitor.  :Party133:
    Novembre 15, 2018, 10:03:24
  • Loretta/Nina: Benvenuto ligi  :Cartelli37:
    Ottobre 09, 2018, 13:19:25
  • nuvolotta: Cucù...  :Amore20:
    Settembre 16, 2018, 01:16:47
  • Loretta/Nina: :Party133:
    Settembre 01, 2018, 17:05:30
  • _jan_: Ciao ai visitors!!
    Settembre 01, 2018, 17:02:31
  • Loretta/Nina: :fischio: :979:
    Agosto 28, 2018, 16:20:48

* Emoticon aggiuntive e link al portale


Autore Topic: -2- Gestione completa (o quasi) del DB (Data Base) (MySQL & PHP)  (Letto 6861 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline micdas

  • Administrator
  • Hero Member
  • *****
  • Post: 848
  • Sesso: Maschio
    • sito su Excel ed il suo vba
 :hihihi:
Credevo di passare subito a descrivere la piccola gestione DB, ma andando avanti ho pensato che prima c'era da chiarire alcuni punti senza i quali copiereste sì il codice che posto, ma, se dovesse poi succedere qualcosa di imprevisto, non sapreste poi dove mettere le mani.
Quindi...................ecco un'altra puntata teorica.

Prima di continuare con l'esplorazione della nostra gestione è bene soffermarci un attimino su alcune considerazioni che vanno fatte sulle Query, altrimenti ci si ritrova con una montagna di codice e non si sa da dove iniziare.
Nel 3D precedente abbiamo detto che le Query possono essere di lettura o scrittura.
Una Query manda una "richiesta" al "Data Base" attivo.
Per Query con SELECT, SHOW, DESCRIBE, EXPLAIN ed altre dichiarazioni restituisce dei valori o FALSE
Per Query con DELETE, INSERT, REPLACE, UPDATE, DROP ed altre dichiarazioni restituisce TRUE o FALSE

I passi da seguire per agire con un DB, prima di offrirgli una Query, sono questi:
  • creare la Query che vogliamo mandare in esecuzione
  • Impostazione dei dati per la connessione
  • Quindi iniziare aprendo una connessione verso il nostro DB
  • Il passo successivo è quello di specificare il nome del database al quale ci vogliamo connettere
  • Poi avremo l'istruzione successiva per eseguire la Query
  • Alla fine è buona norma chiudere la connessione al DB
Il tutto può essere definito come in questo frammento di codice dove mettiamo anche una sorta di controllo di eventuali fallimenti:
Codice: Non sei autorizzato a vedere i links. Registrati o Login
<?php
    $Query 
= "quello che vuoi";
    if (!
$link = mysql_connect($Host, $User, $Password)) {
        echo 
"errore nella connessione<br />".mysql_error() . "<br />\n";
    } else {
        echo 
"La connessione è avvenuta con successo<br />\n";
    }
    if (!
mysql_select_db($DBName, $link)) {
        echo 
"DataBase non trovato<br />".mysql_error() . "<br />\n";
    } else {
        echo 
"Il database è stato agganciato con successo<br />\n";
    }
    
$result = mysql_query($Query, $link);
    if (!
$result) {
        echo 
$Query . "<br />";
        die (
"errore nella query<br />".mysql_error());
    } else {
    ................
    }
    
mysql_close ($link);
?>
Per comprendere meglio il tipo di errore che eventualmente si verifichi, abbiamo a disposizione la funzione MySQL mysql_error()
Se ci aspettiamo che la Query ci debba restituire dei valori possiamo leggere tali valori in queto modo:
Codice: Non sei autorizzato a vedere i links. Registrati o Login
<?php
$result 
= mysql_query($Query, $link);
if (!
$result) {
echo 
'Errore nella Query: ' . mysql_error();
}
if (
mysql_num_rows($result) > 0) {
while (
$row = mysql_fetch_assoc($result)) {
echo 
$row['Field'] . "<br />\n";
}
}
?>
Se la Query è una semplice Query di comando (quindi non ci aspettiamo alcun valore restituito), possiamo terminare qui la nostra procedura:
Codice: Non sei autorizzato a vedere i links. Registrati o Login
<?php
$result 
= mysql_query($query, $link);
if (!
$result) {
echo 
"errore nella query<br />\n" . $query . "<br />";
}
?>

Il discorso si potrebbe concludere qui. Ma è bene che mostrare almeno alcuni esempi di query per compiere le più comuni operazioni.


Elenco di tutte le tabelle presenti nel DB
Codice: Non sei autorizzato a vedere i links. Registrati o Login
$Query = "SHOW TABLES FROM $DBName";Questa Query potrebbe tornarci utile per poter decidere se:
* dobbiamo creare una tabella
* dobbiamo eliminare una tabella

Creazione di una tabella
Codice: Non sei autorizzato a vedere i links. Registrati o Login
$Query = "CREATE TABLE rubrica (id mediumint unsigned NOT NULL auto_increment, cognome varchar(100), nome varchar(100), nato DATE NOT NULL DEFAULT '0000-00-00', indirizzo varchar(100), cap varchar(10), citta varchar(100), prov varchar(10), tel1 varchar(20), tel2 varchar(20), tel3 varchar(100), PRIMARY KEY (id)) ENGINE = MyISAM";
Eliminazione una tabella
Codice: Non sei autorizzato a vedere i links. Registrati o Login
$Query = "DROP TABLE rubrica";
Lettura dei campi di una tabella
Codice: Non sei autorizzato a vedere i links. Registrati o Login
$table = "rubrica";
$Query = "SHOW COLUMNS FROM " . $table;

Conoscere il numero di record:
Codice: Non sei autorizzato a vedere i links. Registrati o Login
$Query = "SELECT * FROM " . $table;
$result = mysql_query($Query, $link);
$num_rows = mysql_num_rows($result);
echo $num_rows . " record nella tabella " . $table> . "<br />\n";

Una volta creata una tabella è possibile eseguire diverse operazioni. Tra le principali abbiamo queste:
* Inserimento dei dati
* Modifica dei dati
* Eliminazione dei dati
* Visualizzazione dei dati

Inserimento dei dati
Codice: Non sei autorizzato a vedere i links. Registrati o Login
$Query = "INSERT INTO rubrica(id, cognome, nome, nato, indirizzo, cap, citta, prov, tel1, tel2, tel3) VALUES ('0', 'Liberali', 'Franca', '2004-08-20', 'VIA MARCHESANE, 232', '36010', 'Aragona', 'TN', '036 34871949', '06 0798', '')";
Per modificare un record
Codice: Non sei autorizzato a vedere i links. Registrati o Login
$Query = "UPDATE rubrica SET cognome = 'Migliavacca', nome = 'Luigi', nato = '2004-01-22', indirizzo = 'VIA DEL TUSCOLANO 1', cap = '14030', citta = 'Tatti', prov = 'MC', tel1 = '054/458798', tel2 = '555/4568978', tel3 = '054/458798' WHERE id = 1";
Per eliminare un record
Codice: Non sei autorizzato a vedere i links. Registrati o Login
$Query = "DELETE FROM rubrica WHERE id = '1'";
Lettura dei dati
Qui entriamo nel cuore della gestione vera e propria, ma anche la più complessa.
Quindi iniziamo senz'altro dalla più semplice per arrivare a quella più complessa, almeno nel nostro caso.

Mostra tutti i dati di tutti i campi di una tabella
Codice: Non sei autorizzato a vedere i links. Registrati o Login
$Query = "SELECT * FROM rubrica";
Mostra i dati dei soli campi indicati nella Query
Codice: Non sei autorizzato a vedere i links. Registrati o Login
$Query = "SELECT cognome, nome, indirizzo FROM rubrica";
Pone una condizione nella scelta dei record
Codice: Non sei autorizzato a vedere i links. Registrati o Login
$Query = "SELECT * FROM rubrica WHERE nome = 'Matteo'";
Pone più condizioni (è possibile usare nella clausola WHERE un AND oppure un OR)
Codice: Non sei autorizzato a vedere i links. Registrati o Login
$Query = "SELECT cognome, nome, indirizzo FROM rubrica WHERE nome = 'Matteo' AND citta <> 'Venezia'";
Effettua una ricerca tramite una porzione di stringa su un campo
Codice: Non sei autorizzato a vedere i links. Registrati o Login
$Query = "SELECT * FROM rubrica WHERE cognome LIKE '%a%'";
Effettua una ricerca tramite una porzione di stringa su più campi
Codice: Non sei autorizzato a vedere i links. Registrati o Login
$Query = "SELECT * FROM rubrica WHERE cognome LIKE '%a%' OR nome LIKE '%a%' OR citta LIKE '%a%'";
Restituisce un elenco ordinato dei record
Codice: Non sei autorizzato a vedere i links. Registrati o Login
$Query = "SELECT * FROM rubrica ORDER BY nome";

Dopo ogni connessione al DB, proposta della Query, ed eventuale visualizzazione dei dati da quest'ultima restituiti, è buona norma chiudere il collegamento aperto per rilasciare le risorse impegnate.
Ma nella stessa istanza è possibile eseguire anche più Query ricordandosi tuttavia di chiudere alla fine l'istanza aperta precedentemente.
Codice: Non sei autorizzato a vedere i links. Registrati o Login
mysql_close ($link);
Ora, prima di concludere vediamo un piccolo esempio completo come riportato nel codice di esempio qui di seguito.
In questo esempio vogliamo trovare nella tabella tutti i nostri contatti che abitano in una città che hanno all'interno del loro nome la stringa "co":
Codice: Non sei autorizzato a vedere i links. Registrati o Login
<?php
if (!$link = mysql_connect($Host, $User, $Password)) {
    echo 
"errore nella connessione<br />".mysql_error() . "<br />\n";;
} else {
    echo 
"La connessione &egrave; avvenuta con successo<br />\n";
}
if (!
mysql_select_db($DBName, $link)) {
    echo 
"DataBase non trovato<br />".mysql_error() . "<br />\n";;
} else {
    echo 
"Il database &egrave; stato agganciato con successo<br />\n";
    
$Query = "SELECT * FROM " . $table;
    echo 
"La Query per contare i record<br />\n" . $Query . "<br />\n";
    
$result = mysql_query($Query, $link);
    
$num_rows = mysql_num_rows($result);
    if (
$num_rows != 0) {
        echo 
"Nella tabella " . $table . " ci sono 
        " 
. $num_rows . " record<br />\n";
        echo 
"Ora vediamo quante citt&agrave; contendono 
        nel loro nome la stringa \"co\"<br />\n"
;
        
$Query = "SELECT * FROM rubrica WHERE citta LIKE '%co%' ORDER BY nome";
        echo 
"La Query:<br />\n" . $Query . "<br />\n";
        
$result = mysql_query($Query, $link);
        if (!
$result ) {
            echo 
"Errore nella Query<br />\n" . mysql_error() . "<br />\n";
        } else {
            if (
mysql_num_rows($result)) {
                echo 
"I record trovati<br />\n";
                echo 
" <div align=\"center\">\n";
                echo 
"<table>\n";
                echo 
"<tr>\n";
                echo 
"<th>cognome</th>\n";
                echo 
"<th>nome</th>\n";
                echo 
"<th>citta</th>\n";
                echo 
"<th>prov</th>\n";
                echo 
"</tr>\n";
                while (
$row = mysql_fetch_array($result)) {
                    echo 
"<tr>\n";
                    echo 
"<td>" . $row['cognome'] . "</td>\n";
                    echo 
"<td>" . $row['nome'] . "</td>\n";
                    echo 
"<td>" . $row['citta'] . "</td>\n";
                    echo 
"<td>" . $row['prov'] . "</td>\n";
                    echo 
"</tr>\n";
                }
                echo 
"</table>\n";
                echo 
"</div>\n";
            } else {
                echo 
"Nessun record trovato<br />\n";
            }
        }
    } else {
        echo 
"Nessun record trovato nella tabella " . $table . "<br />\n";
    }
}
mysql_close ($link);
?>

Per la chiusura del collegamento è da notare che avviene solo dopo l'esecuzione della seconda Query e la visualizzazione del Resultset restituito.
Questo potrebbe essere un possibile risultato che il codice sopra riportato potrebbe restituire:
Citazione
La connessione è avvenuta con successo
Il database è stato agganciato con successo
La Query per contare i record
SELECT * FROM rubrica
Nella tabella rubrica ci sono 25 record
Ora vediamo quante città contendono nel loro nome la stringa "co"
La Query:
SELECT * FROM rubrica WHERE citta LIKE '%co%' ORDER BY nome
I record trovati
cognomenomecittaprov
ScicchitanoAndreaCodenaRO
MainiMarilenaCossilaTO
Di MaggioMarioCopertinoPC
MainiMirellaSan Donato in CollinaCL

ATTENZIONE:
TUTTI I NOMI CHE FIGURANO NEI MIEI ELENCHI PRESENTI E FUTURI NON SI RIFERISCONO ASSOLUTAMENTE A PERSONE REALI.
Anche se li ho prelevati da un archivio reale li ho passati in Excel, mescolati casualmente tutti i campi.

Questa precisazione per quanto riguarda le disposizioni sulla privaci.
« Ultima modifica: Dicembre 05, 2010, 11:20:56 da micdas »
E' stupido pensare di non aver bisogno degli altri

Offline _jan_

  • Global Moderator
  • Sottocapo di 1° classe scelto (S.P.E.)
  • *
  • Post: 1727
  • Sesso: Maschio
  • comply 23 novembre
    • Firenze e molto altro
Re:-2- Gestione completa (o quasi) del DB (Data Base) (MySQL & PHP)
« Risposta #1 il: Novembre 25, 2010, 07:49:01 »
ewwai Micdas. (o Mikyssimo?)
Interessante.
Il mostro programmazione comincia diventare agnello
Quando credi di sapere qualche cosa è quello il momento di ricominciare