====== Gtktreeview e database con Php ====== Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **//27/11/2015 - 12:25//** \\ \\ {{:programmazione:php:2015-11-27_122413.png?400|}} \\ \\ Questo articolo vuole essere un inizio sulla programmazione di applicazioni che fanno uso di database tramite Php-gtk2 e database mediante [[programmazione:php:spdo_una_classe_per_pdo]]. \\ Lo script realizzera' una piccola interfaccia grafica che mostra il risultato di una select. Come da figura. ===== Lo script ===== **main.php** #! /usr/bin/php get_widget('window1'); $window->connect_simple('destroy', array('Gtk', 'main_quit')); //La casella di testo del nominativo completo $Nome=$glade->get_widget('txtNome'); $Cognome=$glade->get_widget('txtCognome'); $Email=$glade->get_widget('txtEmail'); //Il modello che aggancero' alla vista ad albero (gtktreeview) $store = new GtkListStore(Gobject::TYPE_LONG, Gobject::TYPE_STRING, Gobject::TYPE_STRING,Gobject::TYPE_STRING ); //Agganciamo il modello al treeview $treeview=$glade->get_widget('treeviewMain'); $treeview->set_model($store); //Al click sulla tabella prelevo l'id della riga $selection = $treeview->get_selection(); $selection->connect('changed', 'selection_changed'); function selection_changed($selection) { //get_selected ritorna lo store e l'iteratore per quella riga list($model, $iter) = $selection->get_selected(); //Prelevo il valore di ogni singola cella nella riga selezionata global $ID; $ID=$model->get_value($iter, 0); $mCognome=$model->get_value($iter, 1); $mNome=$model->get_value($iter, 2); $mEmail=$model->get_value($iter, 3); global $Cognome; $Cognome->set_text($mCognome); global $Nome; $Nome->set_text($mNome); global $Email; $Email->set_text($mEmail); printf("ID: %s\n", $ID); } //E' usata per disegnare testo nelle celle $cell_renderer = new GtkCellRendererText(); //Prima colonna (ID) $colID = new GtkTreeViewColumn('ID', $cell_renderer, 'text', 0); $colID->set_visible(false);//rendo invisibile la colonna $treeview->append_column($colID); //seconda colonna (Cognome) $colCognome = new GtkTreeViewColumn('Cognome', $cell_renderer, 'text', 1); $treeview->append_column($colCognome); //terza colonna (nome) $colNome = new GtkTreeViewColumn('Nome', $cell_renderer, 'text', 2); $treeview->append_column($colNome); //quarta colonna (Cognome) $colEmail = new GtkTreeViewColumn('Email', $cell_renderer, 'text', 3); $treeview->append_column($colEmail); //Connessione al db grazie alla classe spdo $mydb= new sPDO(); $mydb->DSN = 'mysql:host=127.0.0.1;dbname=test-php' ; $mydb->DBUSER ='root'; $mydb->DBPASS =''; $mydb->connect(); $sql='Select * from persone;' ; if (!$mydb->execute($sql)) echo 'Problemi nella query'; for ($i=1; $i<= $mydb->nrows(); $i++) { $store->append(array($mydb->read($i, "id"), $mydb->read($i, "cognome") , $mydb->read($i, "nome") , $mydb->read($i, "email")) ); } $mydb->disconnect(); //Start the main loop Gtk::main(); ?> ===== L'interfaccia realizzata con Glade per gtk2 (libglade) ===== 800 600 True False True False True False True False _File True True False gtk-new True False True True gtk-open True False True True gtk-save True False True True gtk-save-as True False True True True False gtk-quit True False True True True False _Modifica True True False gtk-cut True False True True gtk-copy True False True True gtk-paste True False True True gtk-delete True False True True True False _Visualizza True True False A_iuto True True False gtk-about True False True True False True 0 True False True True automatic automatic 500 True True True True 0 True False True False 0.019999999552965164 1 Cognome True True 0 True True False False True True True True 1 True False 0.029999999329447746 1 Nome True True 2 True True False False True True True True 3 True False 0.029999999329447746 1 Email True True 4 True True False False True True True True 5 True False 35 gtk-delete True True True True True True 0 gtk-add True True True True True True 1 gtk-save True True True True True True 2 True True 6 True False 0 0 293 1 263.69999999999999 293 182 131 True True 196 7 True True 1 True True 1