lunedì 3 marzo 2008

5B ITC Esercitazioni classe

La lezione di lunedì 17 Marzo 2008 consisterà nella selezione di record, dalla tabella "persone" del database "test" di mysql, attraverso il web tramite una pagina php.
Procediamo per passi:
  1. Costruire una pagina web che contenga il form per la richiesta dei dati (in pratica un "submit");
  2. inserire i seguenti comandi di connessione al server mysql:

Questa tecnologia mette a disposizione numerose funzioni per la connessione con MySQL, tutte presenti nel manuale ufficiale di questo linguaggio. Le principali funzioni sono:

  • $Connessione=MySQL_connect($server,$user,$password);
    - E' la funzione che permette di accedere a MySQL. Come primo parametro inseriremo il nome del server, notoriamente "localhost"; come nome utente e password vuoto (con gli apici).
  • $database=mysql_select_db($name_db,$connessione);
    - Con questa funzione selezioniamo direttamente il database di MySQL da utilizzare, "test" nel nostro caso o qualsiasi altro presente visibile dalla shell di MySQL con il comando: "show databases;". Il secondo parametro è la connessione precedentemente aperta verso il server.
  • $tutto=mysql_query($sql,$connessione);
    - Con questa funzione effettuiamo la query. Il primo parametro è una stringa contente i comandi SQL ("select","update","insert","delete") precedentemente preparata; il secondo parametro è la connessione aperta inizialmente.
  • Mysql_close($connessione);
    - Chiude la connessione con MySQL. Chiaramente questo sarà l'ultimo comando da inserire nel codice Php.
  • cols=mysql_num_fields($tutto);
    - Questa funzione restituisce il numero di campi della query "select" memorizzata in $tutto.
  • rows=mysql_num_rows($tutto);
    - Questa funzione restituisce il numero di record della query "select" memorizzata in $tutto.
  • mysql_fetch_array ($tutto)
    - Questa funzione un array i cui elementi sono i diversi campi della tabella risultato della selezione o falso se non ci sono più record, un esempio d'uso potrebbe essere il seguente:
    while ($riga = mysql_fetch_array($risultato)) {
    echo "Cognome: ".$riga["Cognome"]." Nome: ".$riga["name"]."
    "
    ;
    }
    supponendo, ovviamente, che la selezione della query $sql richiedesse il nome e cognome.
L'esercizio successivo consisterà nell'aggiungere un nuovo record (al database preso in considerazione nell'esercizio precedente), bisognerà quindi modificare sia la pagina di immissione dati (creando un form, lato client) sia la parte di inserimento record nel database (modificando la query $sql che dovrà essere un insert to ... ,lato server).

Non ce l'avete fatta?
Allora eccovi alcuni suggerimenti: dal lato client suddividete la data in giorno mese e anno (e ricordate che mysql utilizza la notazione inglese aaaa/mm/gg); dal lato server costruite la stringa corrispondente alla data
nel seguente modo
$Data_nascita=$_POST["Anno"]."/".$_POST["Mese"]."/".$_POST["Giorno"]; dopodiché definite la stringa di interrogazione $interrogazione="INSERT INTO Persone VALUES ('$Cognome', '$Nome' , '$Indirizzo', '$Data_nascita','');"; attenzione che l'ultimo campo non è una virgola doppia (shift 2) , ma sono doppie virgolette per indicare un campo vuoto, questo perché questo campo è la chiave primaria che nel database è auto_increment e viene gestito automaticamente.


Ora come esercizio provate a fare la cancellazione di un record di cui richiedete le informazioni dal lato client (il form potrebbe essere lo stesso dell'aggiunta di un nuovo record) poi, dal lato server, costruite l'interrogazione di cancellazione (potrebbe essere simile alla seguente:
$interrogazione="DELETE FROM Persone WHERE Indirizzo='$Indirizzo';"; , in questo caso la condizione è sull'indirizzo, ma potreste scegliere altre condizioni, anche più complesse. Per verificare se il record, che si voleva cancellare, era presente nella base di dati esiste la funzione MySQL_affected_rows([$connessione ]) che restituisce il numero di righe considerate dalla query, ad esempio potrebbe essere zero se il record non era presente. Sfruttando questa funzione potrete fornire un output all'utenete sull'effettiva cancellazione del record. La funzione MySQL_affected_rows può essere utilizzata anche con i comandi INSERT e UPDATE e in ogni caso il parametro $connessione è opzionale.

4 commenti:

Unknown ha detto...

ciao TUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN!!!!!!!!!!!!!!!!!!!!!!!

valentina.dl ha detto...

ma prof...

Anonimo ha detto...

ma li pensa di notte questi esercizi impossibili?????

caterina d'aprile ha detto...

Prof Tuan, can you please change the colour of your blog's background? Thank you, your affectionate colleague, c.