Browsing Category: "Pillole di Programmazione"

jqGrid – creazione tabelle e griglie tramite jquery

Sunday, February 27th, 2011 | jQuery, Pillole di Programmazione with 2 Comments

jQuery è un framework in grado di offrire un’ampia gamma di funzionalità per la manipolazione della proprie pagine web; questa libreria contiene una serie di metodi volti ad agevolare la vita del programmatore nella costruzione di effetti,transizioni,modifica stili e creazione interfacce utente user friendly.

Questo potente framework  è facilmente estendibile tramite plugin, ed è per questo che a mio parere ha riscosso un grande successo. Tra le novità che escono ogni giorno, oggi voglio presentarvi jqGrid, un add-in in grado di costruire un interfaccia grafica ed accattivante per la manipolazione e rappresentazione di dati tabulati sul web.  Tramite jqGrid saremmo in grado di creare tabelle e griglie, basate su moltitudine di sorgenti dati(mysql,xml,sqlserver,json) e di interagire aggiungendo,modificando e ricercando i nostri record. Vediamo un piccolo esempio, per la documentione ufficiale vi rimando alle demo:

jqGrid da XML:

Prerequisiti:


Configurazione:

  1. All’interno della cartella del proprio progetto copiare le due cartelle js e css dallo zip scaricato.
  2. All’interno della cartella css copiare il tema scaricato, nel mio caso ui-lightness.
  3. all’interno del progetto inserire il file xml che useremo come base dati, nel mio caso myxml.

Definizione pagina web:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jqGrid Example</title>

<link rel="stylesheet" type="text/css" media="screen" href="css/ui-lightness/jquery-ui-1.8.9.custom.css" />
<link rel="stylesheet" type="text/css" media="screen" href="css/ui.jqgrid.css" />

/*Inclusione javascript contenenti la libreria base e il plugin*/
 <script src="js/jquery-1.4.2.min.js" type="text/javascript"></script>
<script src="js/i18n/grid.locale-it.js" type="text/javascript"></script>
<script src="js/jquery.jqGrid.min.js" type="text/javascript"></script>

<script type="text/javascript">
  $(document).ready(function(){
        $("#list").jqGrid
        ({
            /*Definizione path file xml*/
			url: 'myxml.xml',
            datatype: "xml",
            colNames:["Squadra","Giocate","Vinte","Perse","Pareggiate","Punti"],
            /*Definizione column Model,tutti i tipi disponibili li potete trovare qua:
			  trirand.com/jqgridwiki/doku.php?id=wiki:predefined_formatter
			*/
			colModel :[
                          {name:'squadra', index:'squadra', width:100, search:true, xmlmap:"squadra"},
                          {name:'giocate', index:'giocate',width:100, xmlmap:"giocate"},
                          {name:'vinte', index:'vinte', width:100, xmlmap:"vinte"},
                          {name:'perse', index:'perse', width:100, xmlmap:"perse"},
                          {name:'pareggiate', index:'pareggiate', width:100, xmlmap:"pareggiate"},
                          {name:'punti', index:'punti', width:100, xmlmap:"punti"}
                      ],
            height:100,
            rowNum:10,
            rowList:[10,20,30],
            pager : '#gridpager',
            viewrecords: true,
            imgpath: 'css/ui-lightness/images',
            loadonce: true,
            xmlReader: {
                        /*radice del file xml*/
						root : "NewDataSet",
                        row: "Table",
                        repeatitems: false,
                        id: "squadra"
                        },
            sortorder: "punti",
            caption:'Classifica'
        });
		/*modulo di ricerca,occorre selezionare il modulo in fase di download del plugin*/
        $("#list").jqGrid('filterToolbar', {stringResult: true, searchOnEnter: false, defaultSearch:"cn"});
    });
</script>

</head>
<body>
<center>
<!-- attraverso i relativi id, visualizzo la griglia -->
<table id="list"></table>
<div id="pager"></div>
</center>
</body>
</html>

Allego infine il progetto(jQgridExample) e vi invito a dare uno sguardo ad una piccola applicazione che utilizza jqGrid(LaStanza)

Share

MySql e PHP5 – Call to undefined function mysql_connect()

Sunday, September 5th, 2010 | Dbms, mysql, Php, Pillole di Programmazione with No Comments »

Dato che ho iniziato a studiare l’integrazione di php con i vari dbms, in particolare mysql, seguendo la guida installare-apache-mysql-e-php-in-ubuntu , ho voluto subito testarne l’effettivo funzionamento creando le pagine:

connessione.php


<?php

 phpinfo();
 function connect_to_db()
 {
 echo "Test";
 {
 $db_server = "localhost" ;
 $db_database = "MAPS" ;
 $db_user = "root" ;
 $db_pw = "cleaner" ;
 }

 $connect = mysql_connect($db_server,$db_user,$db_pw) or die('Non è possibile connettersi al DB MySql.' );
 if ($connect){
 echo "ok";}
 else
 {
 echo "ko";
 }

 $database = mysql_select_db($db_database);
 }
?>

test.php

<?php
require('connessione.php');
connect_to_db();
$sql = "INSERT INTO tb_country (id_country,description) VALUES (4, 'b')";
$query = mysql_query($sql) or die("errore: ".mysql_error());
echo 'I dati sono stati inviati al database';
$chiusura = mysql_close($connessione);
?>

Puntando sulla seconda pagina,ed avendo abilitato a priori la visualizzazione degli errori nel broswer mi ritornava il seguente errore:

Fatal error: Call to undefined function mysql_connect() in /home/cirio/workspace/myproject/test/connessione.php on line 12

Dopo svariate ricerche sono giusto alla soluzione del problema; nell’installazione standard di php5 , oltre all’abilitazione manuale dell’estensione per mysql occorre installare il pacchetto php5-mysql. Vediamo come procedere:

Modifica file PHP.ini


gksudo gedit /etc/php5/apache2/php.ini

Ricerchiamo la riga extension=msql.so e scommentiamola togliendo il ‘;’ che la precede. Salviamo e chiudiamo il file.

Installazione pacchetto php5-mysql

sudo apt-get install php5-mysql

Terminato il download del pacchetto riavviamo apache tramite il comando

sudo /etc/init.d/apache2 restart
Share

VB.Net – Creazione Dataset [Pillola]

Sunday, March 28th, 2010 | Pillole di Programmazione, Visual Basic with 2 Comments

Dato che sto studiando come autodidatta Vb.Net,  cimentandomi in qualche programmino basato sui windows-forms,voglio condividere con voi, per tenerne traccia, un piccola funzione che ho creato per la gestione di un nuovo DataSet.

Public Function crea_dtset(ByVal sql As String, ByVal RiempiDataGrid As Boolean, ByVal SqlFilter As String) As DataSet
        Try

            Dim objAdapter As New SqlClient.SqlDataAdapter()
            Dim objDataSet As DataSet
            Dim objConnection As New SqlClient.SqlConnection
            Dim objCommand As SqlClient.SqlCommand
            Dim objDataView As New DataView()


            'Setto ed apro la connessione
            objConnection.ConnectionString = "Server=myServer\SQLEXPRESS;Database=mydb;User ID=myid;Password=mypwd;Trusted_Connection=False;"
            objConnection.Open()

            If (objConnection.State = ConnectionState.Open) Then

                'Creo un nuovo oggetto command a cui viene passata la nostra stringa
                'sql e i parametri di connessione
                objCommand = New SqlClient.SqlCommand(sql, objConnection)
                objCommand.CommandText = sql
                objCommand.CommandType = CommandType.Text


                'Viene Riempito il DataSet
                objAdapter = New SqlClient.SqlDataAdapter(objCommand)
                objDataSet = New DataSet()
                objAdapter.Fill(objDataSet)

                objConnection.Close()

                crea_dtset = objDataSet
                
                'Filtro i miei dati
                
                If RiempiDataGrid = True Then
                    'Riempio il dataview con l'intero contenuto della mia query
                    objDataView = objDataSet.Tables(0).DefaultView
                    objDataView.RowFilter = sqlFilter

                    'Assegno come datasource l'oggetto objdataview(filtrato)
                    frmMain.DGVDati.DataSource = objDataView
                End If

                'Svuoto gli oggetti per la prossima query
                objDataView = Nothing
                objAdapter = Nothing
                objCommand = Nothing
                objDataSet = Nothing
                objConnection = Nothing
            End If



        Catch ex As Exception

            MsgBox("Error!")

        End Try
    End Function

Scusate l’identazione del codice forse poco chiara, ma la dimensione delle colonna sinistra del blog me lo impone. Rimediate leggendo il Source dall’apposito pulsante.
Ogni suggerimento o critica è sempre ben accetta:

Share

Programmare attraverso diagrammi di flusso

Friday, October 10th, 2008 | Pillole di Programmazione with No Comments »

Per chi si avvicina alla programmazione per la prima volta, l’approccio iniziale potrebbe essere alquanto ostico; per ovviare a ciò viene utilizzata una tecnica a mio avviso utile per comprendere fino in fondo l’algoritmo su cui è basato un programma. Il mezzo che utilizzeremo saranno i diagrammi di flusso.

Diagrammi di flusso(flow chart):

Formalismi grafici per esecutori umani, i quali utilizzano blocchi contenenti istruzioni e connessi tra loro tramite frecce. La loro funzione, come accennato in precedenza, è evidenziare la struttura dell’algoritmo.

I blocchi utilizzabili sono:

1) BLOCCHI RETTANGOLARI: Funzione di assegnamento; è presente una variabile e una costante; “V” variabile, “E” costante
rettangolo

2) BLOCCHI ROMBOIDALI: Realizzano istruzioni di salto con condizione, tipicamente sono valori boleani(true o false).
romboidali

3) BLOCCHI OVALI: Utilizzati per inizio e fine algoritmo. “v1,v2,v3” rappresentano dati di ingresso dell’algoritmo.
ovali

Vediamo un esempio:

Dati due numeri interi non negativi AeB, calcolarne il prodotto p.

limitazioni compilatore -> somma/confronto/decremento unitario.

Algoritmo risolutivo informale: p=axb=a+a+…+a }b volte

flusso

Il diagramma si legge così:

1) Assegna 0 a p

2) Se b=0 vai all’istruzione 6

3) Assegna p+a a p

4) Assegna b-1 a b

5)Vai all’istruzione 2(ciclo)

6)Fine.

Share

client – server applicazione base python [source]

Tuesday, May 6th, 2008 | python with 14 Comments

source_chat_python

Vi posto ora il source (codice) per una applicazione base, client/server, è stata implementata una chat.
Il programma funziona da linea di comando e non è presente alcuna interfaccia grafica. Lo ritengo un buon punto di partenza per sviluppare applicazioni più complesse basate sui socket, un ramo della programmazione che ritengo essenziale e molto interessante.

Salvare i file con estesione .py ed eseguire nel terminale prima il server e poi il corrispettivo client.

SERVER:

[snippet=6134]

CLIENT:

[snippet=6133]

Ringrazio il forum di python-it.org per il supporto che mi stà fornendo.

Share

Funzione join e split in python – concretizziamo l’uso delle liste

Tuesday, March 18th, 2008 | python with No Comments »

Oggi parleremo di due funzioni che ritengo fondamentali per imparare a lavorare con le liste in python, tali operazioni sono “join” e “split”; dette così sembrano due amici ^^; in realtà si comportano uno inversamente all’altro, vediamo ora come:

UTILIZZO FUNZIONE “split” :

>>> import string
>>> stringa = "Girovagando per il web ho incontrato cirio"
>>> string.split(stringa)
['Girovagando', 'per', 'il', 'web', 'ho', 'incontrato', 'cirio']

Come potete notare l’utilizzo di questa funzione ci permette di suddividere in diversi elementi la nostra frase, cosichè da creare una lista sulla quale poter lavorare singolarmente su ogni oggetto.

UTILIZZO FUNZIONE “join”:

La funzione join si comporta in modo inverso, prende una lista di stringhe e ne concatena gli elementi, inserendo uno spazio tra ogni coppia:

>>> import string
>>> stringa = "Girovagando per il web ho incontrato cirio"
>>> string.join(stringa)
'G i r o v a g a n d o p e r i l w e b h o i n c o n t r a t o c i r i o'
>>>

Inoltre la funzione accetta anche un delimitatore, di norma è un “_”, quindi sarebbe,

string.join(stringa, ‘_’). Spero di esservi stato utile,a me è servito parecchio per un mio programmino.

 

Share