lunedì 29 ottobre 2012

MessageBox in un pdf

Piccolo esempio di come inserire un messaggio in un pdf all'evento click di un pulsante button.
Tool utilizzato Adobe LiveCycle Designer ES3 (ma è possibile farlo anche con versioni precedenti).
Di seguito il sorgente javascript da inserire all'evento click.
var name = "";
name = form1.subform1.TextName.rawValue;
xfa.host.messageBox("Hello " + name + " !", "Greetings", 3);

Screenshot dell'output:



domenica 28 ottobre 2012

Esempio di configurazione log4net

In una web application in ambiente .Net 2.5 la gestione della scrittura di log di tipo debug o di errore può essere affidata alla libreria log4net configurata nel seguente modo.
Il punto 4 rappresenta il tipo di output corrispondente a questa configurazione.

1)Fare riferimento alla libreria log4net.dll nel progetto (directory bin) e inserire il codice nel Global.asax
protected static log4net.ILog log;
private System.ComponentModel.IContainer components = null;
 
protected void Application_Start(object sender, EventArgs e) 
{
 InitializeComponent();
 log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile));
 log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
 log.Debug("Application_Start");
}

protected void InitializeComponent()
{    
 this.components = new System.ComponentModel.Container();
}

void Application_End(object sender, EventArgs e)
{
 log.Debug("Close Application");
}

void Session_Start(Object sender, EventArgs E)
{
 Application.Lock();
 Application.UnLock();
 log.Debug("Session start.");
}

2) Nel Web.Config
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>

...
  
 <log4net>
  <appender name="DebugAppender" type="log4net.Appender.DebugAppender" >
    <layout type="log4net.Layout.PatternLayout">
   <conversionPattern value="%d{dd MMM yyyy HH:mm:ss,fff} %-5p [%c] %m%n" />
    </layout>
  </appender>
  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
   <conversionPattern value=" %m%n" />
    </layout>
  </appender>
  <appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="log/example.log"/>
    <appendToFile value="true"/>
    <rollingStyle value="Size"/>
    <maxSizeRollBackups value="10"/>
    <maximumFileSize value="12MB"/>
    <staticLogFileName value="false"/>
    <layout type="log4net.Layout.PatternLayout">
   <conversionPattern value="%d{dd MMM yyyy HH:mm:ss,fff} %-5p [%c] %m%n"/>
    </layout>
  </appender>
  <root>
    <level value="ALL"/>
    <appender-ref ref="ConsoleAppender"/>
    <appender-ref ref="FileAppender"/>
  </root>
 </log4net>
</configuration>
3) Nel codebehind
protected static ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

//create method and put inside this code

try{
 //code here
 log.Debug("Debug description");
}
catch (Exception ex)
{
 log.Error(ex);
}
4) Esempio di output sul file "example.log"

06 Sep 2010 10:05:28,140 ERROR [Project.Classname] Error description
02 Oct 2010 16:10:12,267 DEBUG [Project.Classname] Debug description

sabato 27 ottobre 2012

Richiamare una funzione in un pdf

Con il seguente codice di esempio è possibile richiamare le funzioni javascript da un evento di un oggetto in un pdf.
Immaginiamo di richiamare la funzione "TestMessage":

Nell'evento mouseUp del button inserire:
form1.sub1.JSfunctions.TestMessage(sub1.TextField1.rawValue);
La funzione di esempio è:
function TestMessage(name)
{
 xfa.host.messageBox("Hello " + name + " !", "Greetings", 3);
}



Output:


venerdì 26 ottobre 2012

Eseguire un download da evento onclick di un button in c#

Il seguente codebehind può essere applicato all'evento onclick su di un pulsante button in ambiente .Net ed è utile per generare il download di un file.
L'utente, cliccando sul pulsante di una form, può eseguire il download del file example.txt

Esempio di pulsante su di una form.
<asp:button id="buttondownload" runat="server" text="Download" onclick="Download_Click"/>

Esempio codebehind:
 protected void Download_Click(object sender, EventArgs e)
 {
 string documentPath = "c:\\example.txt";
 try
 {
 if (!documentPath.Equals(""))
 {
  using (FileStream fs = File.OpenRead(documentPath))
  {
   int length = (int)fs.Length; byte[] buffer;
   using (BinaryReader br = new BinaryReader(fs)) { 
    buffer = br.ReadBytes(length); 
   } 
   Response.Clear();
   Response.Charset = "";
   Response.ClearContent();
   Response.ClearHeaders();
   Response.Buffer = true;
   Response.AddHeader("content-disposition", String.Format("attachment;filename={0}", Path.GetFileName(documentPath)));
   Response.ContentType = "text/plain"; //change for other format type: text/plain because it's a txt file
   Response.BinaryWrite(buffer);
   Response.Flush();
   Response.Close();
  }
 }
 }
 catch (Exception ex)
 {
 //code here
 }
}

mercoledì 24 ottobre 2012

Aggiornamento di Quiz versione 1.7

Da un paio di giorni è in linea la nuova versione di Quiz, la mia app Android, con più di 2800 quiz in lingua italiana, inglese e spagnolo.

Ecco gli aggiornamenti:
- inseriti 550 quiz in lingua spagnola;
- aggiunta della lingua spagnola per tutte le funzionalità
- ottimizzazioni varie su domande e risposte italiane e inglesi.

Alcuni numeri tra statistiche e download su questa app:
- Download totali dal 06-07-2012 al 22-10-2012: 44000+
- Max download dell'app in 1 giorno: 1720
- Max punteggio raggiunto nella classifica della settimana: 905 il 17-10-2012
- Max utenti simultanei nella classifica della settimana in 1 settimana: 8

martedì 23 ottobre 2012

Operazioni aritmetiche e sintassi FormCalc in un pdf

Altre funzioni sono disponibili con il FormCalc di Adobe; in questo esempio una serie di operazioni di aritmetica selezionabili da una DropDownList tra cui un mix di operazioni inserite in una condizione "if then endif".
if ($.boundItem(xfa.event.newText) == "Addition") then
 sub1.TextField3.rawValue = sub1.TextField1.rawValue + sub1.TextField2.rawValue
elseif ($.boundItem(xfa.event.newText) == "Multiplication") then
 sub1.TextField3.rawValue = sub1.TextField1.rawValue * sub1.TextField2.rawValue
elseif ($.boundItem(xfa.event.newText) == "Division") then
 sub1.TextField3.rawValue = sub1.TextField1.rawValue / sub1.TextField2.rawValue
elseif ($.boundItem(xfa.event.newText) == "Subtraction") then
 sub1.TextField3.rawValue = sub1.TextField1.rawValue - sub1.TextField2.rawValue
elseif ($.boundItem(xfa.event.newText) == "Mix") then
 var total = Round(Abs((sub1.TextField1.rawValue / sub1.TextField2.rawValue)),2)
 sub1.TextField3.rawValue = Concat("€ ", total)
 if(Abs(total)>4) then
  xfa.host.messageBox("Value too high", "Attention", 3, 0)
 endif
endif
Output:
FormCalc in un pdf



Link di riferimento per funzioni e sintassi FormCalc:
http://help.adobe.com/en_US/livecycle/es/FormCalc.pdf

domenica 21 ottobre 2012

Somma di due numeri in un pdf con FormCalc

L'esempio mostra come effettuare una somma di due numeri (inseriti in campi testo) con il linguaggio FormCalc di Adobe.
Prima di inserire il seguente codice nel pdf, in questo caso all'evento click del pulsante, ricordarsi di selezionare FormCalc come linguaggio di script.
var sumValues = sum(sub1.TextField1.rawValue + sub1.TextField2.rawValue)
xfa.host.messageBox(Concat("The sum is ", sumValues), "Attention", 3, 0)

Output:
FormCalc in un pdf

sabato 20 ottobre 2012

Riproduzione di un suono con un click in Android

E' possibile eseguire un suono in un'applicazione android inserendo inizialmente il file da riprodurre nella directory "raw" del progetto android e successivamente integrare queste righe di codice.
In questo esempio sono stati utilizzati due file in formato wav posizionati nei path "\res\raw\bip_1.wav" e "\res\raw\bip_2.wav" che verranno riprodotti rispettivamente al click dei pulsanti "btn_ok" e "btn_no"
public class Example extends Activity {

 private SoundManager soundManager = new SoundManager();

 public void onCreate(Bundle savedInstanceState) {  
  super.onCreate(savedInstanceState);  
  setContentView(R.layout.example); 

  soundManager.initSound(getBaseContext());
  soundManager.addSound(1, R.raw.bip_1);
  soundManager.addSound(2, R.raw.bip_2);
  
  /* ... */
  
  Button btnOk = (Button) findViewById(R.id.btn_ok);
  btnOk.setOnClickListener(new OnClickListener() {
   public void onClick(View arg0) {
     soundManager.playSound(1);
   }
  });
  
  Button btnNo = (Button) findViewById(R.id.btn_no);
  btnNo.setOnClickListener(new OnClickListener() {
   public void onClick(View arg0) {
     soundManager.playSound(2);
   }
  });
 }
}
Classe da istanziare:
public class SoundManager {
 private SoundPool soundPool;
 private HashMap hMap;
 private AudioManager audioManager;
 private Context context;

 public void initSound(Context theContext) {
  context = theContext;
  soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 0);
  hMap = new HashMap();
  audioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
 }

 public void addSound(int index, int SoundID)
 {
  hMap.put(index, soundPool.load(context, SoundID, 1));
 }
 public void playSound(int index)
 {
  float streamVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
  soundPool.play((Integer) hMap.get(index), streamVolume, streamVolume, 1, 0, 1f);
 }
}

venerdì 19 ottobre 2012

Richiamo di una stored procedure in c#

In questo esempio viene richiamata con c# una stored procedure contenente un campo in input.
Il db utilizzato è Oracle e viene restituita una lista di record che puo' essere integrata in una lista di oggetti tipizzata (in questo caso di Employee).

public List<Employee> LoadData()
 {
 List<Employee> listEmployee = new List<Employee>();
 Employee employee = new Employee();
  
 using (OracleCommand cmd = con.CreateCommand())
 {
  /* write name of stored procedure */
  cmd.CommandText = "SCHEMA_DB.test_store_procedure";
  cmd.CommandType = CommandType.StoredProcedure;
     
  /* input for stored procedure, for example NVarChar */
  cmd.Parameters.Add("IN_NAME_FIELD1", OracleType.NVarChar).Value = "test";
  cmd.Parameters["IN_NAME_FIELD1"].Direction = ParameterDirection.Input;
     
  /* return from store procedure */
  cmd.Parameters.Add("OUTPUT", OracleType.Cursor).Direction = ParameterDirection.Output;
  
  DataTable dt = new DataTable();
     
  /* call stored procedure */
  using (OracleDataReader oracleDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection))
  {
   dt.Load(oracleDataReader);
  }
     
  /* read values */
  foreach (DataRow dr in dt.Rows) 
  {
   employee = new Employee();
   
   if (dr["NAME"] != DBNull.Value)
   employee.name = (string)dr["NAME"];
   else
   employee.name = "";
   
   listEmployee.Add(employee);
  }
  }
  return listEmployee;
  }
}

giovedì 18 ottobre 2012

Aprire una form con c# una sola volta

L'apertura di una form da una applicazione in .net c# è semplice utilizzando ad esempio
FrmAudio form = new FrmAudio();
form.Show();
Ma per controllare che venga aperta una sola volta senza ricorrere a strategie varie, tipo disabilitare un pulsante dopo averla lanciata, si può utilizzare il seguente esempio (in questo caso applicato all'evento di un pulsante button):
private void BtnTest_Click(object sender, EventArgs e){
 if (CnsUtilMisc.IsNumeric(txtScript.SelectedText)){
  FrmAudio form = new FrmAudio();
  //check existing form
  foreach (Form frmTest in System.Windows.Forms.Application.OpenForms)
 if (frmTest is FrmAudio)
  return;
  form.Show();
 }
}

domenica 14 ottobre 2012

Grafico a torta con MSChart in vb6

Supponiamo di avere dei valori e degli elementi in una tabella di un database (in questo esempio un db MSAccess) e portare in un grafico a torta le percentuali di ciascun elemento.
L'oggetto utilizzato è il MSChart di Visual Basic aggiunto al progetto dal componente Microsoft Chart Control 6.0
Di seguito l'esempio:

Private Sub CmdLoad_Click()
 Dim adodbRec As ADODB.Recordset
 Dim adodbConn As ADODB.Connection
 Dim sql As String
 Dim dbTest As String
 Dim intRows
  
 dbTest = "Provider = Microsoft.Jet.OleDB.4.0;Data source =
 C:\test\dbtest.mdb;Persist Security Info=False"
    
    Set adodbConn = New ADODB.Connection
    adodbConn.Open (pathConnection)
    adodbConn.CursorLocation = adUseClient 'tipo di cursore
    On Error GoTo 0 'Resume normal error processing
    Set adodbRec = New ADODB.Recordset
    sql = "select valore, descr_costo from tab_costi"
    
    adodbRec.Open sql, adodbConn, adOpenDynamic, adLockOptimistic
    intRows = adodbRec.RecordCount

    MSChart1.ColumnCount = intRows

    With MSChart1
             .chartType = VtChChartType2dPie
               
         For i = 1 To adodbRec.RecordCount
             .Row = 1
             .Column = i
             .Data = adodbRec.Fields.Item(0).Value
             adodbRec.MoveNext
         Next
        
         With .DataGrid
           adodbRec.MoveFirst
             .RowLabelCount = 1
             .ColumnCount = intRows
             .RowCount = 1
             For i = 1 To .ColumnCount
                 If IsNull(adodbRec.Fields.Item(1).Value) Then
                    .ColumnLabel(i, 1) = "---"
                 Else
                    .ColumnLabel(i, 1) = adodbRec.Fields.Item(1).Value
                 End If
                 adodbRec.MoveNext
             Next i
         End With
        
         For i = 1 To .Plot.SeriesCollection.Count
             With .Plot.SeriesCollection(i).DataPoints(-1).DataPointLabel
                .LocationType = VtChLabelLocationTypeOutside
                .Component = VtChLabelComponentPercent
                .PercentFormat = "0%"
                .VtFont.Size = 10
             End With
         Next i
    
     End With
     adodbRec.Close
End Sub

Queste le figure del grafico a torta e della tabella:





venerdì 12 ottobre 2012

Macro per copiare valori tra due file MS Excel

L'esempio seguente permette di copiare tre valori presi da celle di un file Excel in un altro file Excel.
In questo caso da file "example.xlsx" a "new_file_yyyy-mm-dd_hh-mm_ss.xlsx"
Il codice è stato inserito su di un pulsante presente in un file "example.xlsm" (file di tipo MS Excel 2007 che permette di editare ed eseguire macro).


File example.xlsm
Option Explicit

Sub cmdCreateOuput_Click()
    Dim currentPath As String
    Dim strId, strName, nameFileOut, nameFileIn As String
    Dim extNameFileOut As String
    Dim myArrayId() As String
    Dim FileFormatNum As Integer
    Dim i As Integer
    Dim Sourcewb
    Dim Destwb
    Dim myArrayName() As String
    ReDim myArrayId(3)
    ReDim myArrayName(3)
    
    currentPath = ThisWorkbook.Path
    nameFileIn = "example.xlsx"
    
    '----- start file input -----
    
    Set Sourcewb = Workbooks
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    
    Sourcewb.Open currentPath & "\" & nameFileIn, ReadOnly:=True

    With Sourcewb(2)
        .Activate
        .Sheets(1).Protect UserInterfaceOnly:=True
        strId = .Sheets(1).[A14]
        strName = .Sheets(1).[B14]
        
        For i = 1 To 3
                myArrayId(i) = .Sheets(1).Cells(i + 14, "A").Value
                myArrayName(i) = .Sheets(1).Cells(i + 14, "B").Value
        Next i

        .Close SaveChanges:=False
    End With
    
    '----- end file input -----
    
    '----- start file output -----
    
    Set Destwb = Workbooks.Add
    extNameFileOut = ".xlsx": FileFormatNum = 51
    nameFileOut = "new_file_" & Format(Now, "yyyy-mm-dd_hh-mm_ss")

    With Destwb
        .Sheets(1).[A1] = strId
        .Sheets(1).[B1] = strName
        For i = 1 To UBound(myArrayId)
            .Sheets(1).Cells(i + 1, "A") = myArrayId(i)
            .Sheets(1).Cells(i + 1, "B") = myArrayName(i)
        Next
        
        .SaveAs currentPath & "\" & nameFileOut & extNameFileOut, FileFormat:=FileFormatNum
        .Close SaveChanges:=True
    End With

    '----- end file output -----

    MsgBox "File created."
End Sub


mercoledì 10 ottobre 2012

Una macro in WinCvs per la copia di uno o più file in Python

L'esempio seguente è la creazione di una macro in WinCvs 2.0 e permette di selezionare uno o più file da una directory e copiarli in un' altra mantenendo il path iniziale.
Potrebbe essere utile per creare un pacchetto di file.
Ecco come fare:
- chiudere eventualmente WinCvs se aperto;
- creare il file AddFileToDirTest.py nella directory ".../wincvs/Macros";
- copiare il codice qui sotto;
- modificare eventualmente i path o parametri all'interno della macro;
- riavviare WinCvs (ricordarsi di avere python installato sul pc e aver fatto riferimento nelle impostazioni sulla dll di python);
- selezionare i file da copiare;
- selezionare la macro AddFileToDirTest.

# start copy here
from cvsgui.Macro import *
from cvsgui.CvsEntry import *
from cvsgui.ColorConsole import *
import cvsgui.App, os.path, os
import string
import copy
import shutil

class AddFileToDirTest(Macro):
 def __init__(self):
  Macro.__init__(self, "AddFileToDirTest", MACRO_SELECTION, 0, "Add File To Dir Test")

 def CreaDirectory(self,dirFile):
  if not os.path.isdir(dirFile):
   os.makedirs(dirFile)
   print "- directory created: " + dirFile
 
 def OnCmdUI(self, cmdui):
  sel = cvsgui.App.GetSelection()
  isOnlyExistingFiles = len(sel) > 0
  for s in sel:
   if not s.IsFile() or s.IsMissing():
    isOnlyExistingFiles = 0
    break

  cmdui.Enable(isOnlyExistingFiles)
  if isOnlyExistingFiles:
   cmdui.SetText("Add File selected to Directory")
  else:
   cmdui.SetText("Click on file to select")

 def Run(self):
  print "* Add file in progress... *"
  
  #+--------- start set here--------+
  #example directory root: c:\temp\test
  pathComuneDoveCopiareIFile ="c:\\" + "temp" + "\\" 
  nomeDirectoryComuneATuttiIProgetti="test" #insert the name into common directory
  #+--------- stop set here --------+
  
  sel = cvsgui.App.GetSelection()
  paths = []
  for s in sel:
   paths.append(s.GetFullName())
   nomeFile=os.path.split(s.GetFullName())
  
  dir = os.path.dirname(os.path.commonprefix(paths))
  print "- directory selected: ", dir
  where = dir.find(nomeDirectoryComuneATuttiIProgetti)      
  dirReplace = dir[(where):]
  dirDaCreare= pathComuneDoveCopiareIFile + dirReplace
  self.CreaDirectory(dirDaCreare)
 
  for s in sel:
   paths.append(s.GetFullName())
   nomeFile=os.path.split(s.GetFullName())
   pathDoveCopiare = dirDaCreare + "\\" + nomeFile[1]
   print "- copy file in:" + pathDoveCopiare
   shutil.copyfile(s.GetFullName(), pathDoveCopiare)
   print "-- filename copied: " + nomeFile[1]
   
  print "* End elaboration *"


AddFileToDirTest()
# end copy here
Un esempio in questa figura:




martedì 9 ottobre 2012

Esempio di formattazione data in c#

Piccolo esempio utile per la formattazione della data in ambiente .Net c#.
Di seguito codice e screenshot:
class Program
{
static void Main(string[] args)
{
 DateTime dateToday = DateTime.Today;
 DateTime dateYesterday = DateTime.Today.AddDays(-1);

 string strDateToday = string.Format("{0:dd-MM-yyyy}", dateToday);
 string strDateYesterday = string.Format("{0:dd-MM-yyyy}", dateYesterday);

 Console.Write("Today: " + strDateToday);
 Console.Write("\n");
 Console.Write("Yesterday: " + strDateYesterday);
 Console.Read();
}
}

Output a video:



domenica 7 ottobre 2012

Finestra tavolozza colori in c#

Nell'esempio di seguito viene illustrato come richiamare la finestra dei colori e utilizzarli per customizzare un oggetto (ad esempio un oggetto label).
In questo caso il codice è inserito nell'evento click di un button e permette di colorare lo sfondo di una label.
private void button1_Click(object sender, EventArgs e)
{
 ColorDialog colorDlg = new ColorDialog();
 colorDlg.ShowDialog();
 lblcolor.BackColor = colorDlg.Color;
}
L'output nella figura:


sabato 6 ottobre 2012

Esempio di un trigger su tabella

L'esempio, creato e testato su db Oracle, permette di creare un trigger su di una tabella di un database.
In questo caso ogni volta che viene inserito un nuovo record, con la prima istruzione verranno copiati i dati dalla tabella "mytable" alla "mytable2", mentre con la seconda
istruzione saranno eliminati alcuni record presenti sulla prima tabella.
Eventualmente si possono inserire altre istruzioni all'interno del BEGIN/END
CREATE OR REPLACE TRIGGER myschema.MYTRIGGER
AFTER INSERT
ON myschema.mytable 
REFERENCING NEW AS New OLD AS Old
BEGIN

 insert into myschema.mytable2 (
     id,day_market,type_market) 
     select 
        id,day_market,type_market   
     from myschema.mytable where 
  to_date(myschema.mytable.day_market, 
  'yyyy/mm/dd')<sysdate-2;
     
 delete myschema.mytable where 
 to_date(myschema.mytable.day_market, 
 'yyyy/mm/dd')<sysdate-2;  

 -- ... other operations  
 
END ;

giovedì 4 ottobre 2012

Caricamento dati da una tabella per una combobox in c#

Il seguente codice illustra come connettersi ad un database (MS Access in questo caso) e prendere dei valori da una tabella per popolare una combobox presente in una Form.
La prima parte è il codice da inserire nel app.config di una windows application; la seconda parte è il caricamento dati.
Ho utilizzato Visual Studio 2008 su Win7 64bit, per lo stesso ambiente ricordarsi di eseguire la compilazione per una platform x86.


Il file app.config
<configuration>
  <configSections/>
  <appSettings>
    <add key="ConnectionString" value="Provider=Microsoft.Jet.OLEDB.4.0;
Data source=C:\db_employee.mdb"/>
  </appSettings>
  <system.web/>
</configuration>
Codice per il popolamento della combobox: ad esempio si può inserire nel "Load" della pagina.
private void Form1_Load(object sender, EventArgs e)
{
 GetDataFromEmployees();
}

private void GetDataFromEmployees()
{
 try
 {
 string connectionString = ConfigurationSettings.AppSettings[
"ConnectionString"];
 using (System.Data.OleDb.OleDbConnection connection = new
 System.Data.OleDb.OleDbConnection(connectionString))
 {
  string sql = "SELECT name, lastname FROM tbl_employees where
 lastname=@rlname";

  System.Data.OleDb.OleDbCommand command = new 
System.Data.OleDb.OleDbCommand(sql, connection);
  command.Parameters.AddWithValue("@rlname", "brown");
  connection.Open();
  System.Data.OleDb.OleDbDataReader reader = command.ExecuteReader();
  ArrayList al = new ArrayList();
  while (reader.Read())
  {
   comboBox1.Items.Add(reader["name"] + " " + reader["lastname"]);
  }
  reader.Close();
  connection.Close();
 }
 }
 catch(Exception e){
 //code here
 }
}
L'output nella figura:


martedì 2 ottobre 2012

Lettura file e conversione in una lista di stringhe

L'esempio di seguito riportato in c# mostra come caricare dei dati da file e far ritornare una List<String> piena e ordinata.
Nome del file "example.txt"

Esempio del contenuto del file:
words:Austria|words:Germania|words:Italia|words:Spagna|
private List<String> listKeywords()
{
 string pathDoc="c:";
 List<String> listWords = new List<String>();
 
 if (File.Exists(pathDoc + "\\example.txt"))
 {
 string[] lines = System.IO.File.ReadAllLines(pathDoc + "\\example.txt");
  
 foreach (string line in lines)
 {
  if (line.IndexOf("words") != -1)
  {
   string[] arrayWords = line.Replace("words:", "").Trim().Split('|');
   listWords.AddRange(arrayWords);
  }
 }
 }
 
 listWords.Sort();
 return listWords;
}

lunedì 1 ottobre 2012

Inserimento dati su db con php

Si può prendere spunto da questo esempio per inserire dei dati su di un database (ad esempio MySQL).
Il primo file include della variabili utili alla connessione e il secondo inserisce i dati nel database (includendo il primo file nella prima riga). Se l'operazione non va a buon fine viene intercettato l'errore e mostrato a video.

File connectionvar.php
<?php
# Type="MYSQL"
# HTTP="true"
$hostname_localhost = "localhost";
$database_localhost = "dbname";
$username_localhost = "root";
$password_localhost = "password";
$con_localhost = mysql_pconnect($hostname_localhost, 
 $username_localhost, $password_localhost) or 
 trigger_error(mysql_error(),E_USER_ERROR); 
?>
File insertdata.php
<?php require_once('Connections/connectionvar.php'); ?>
<html>
... <!-- html here-->
<?php
$lastname     = $_POST['lastname'];
$name        = $_POST['name'];

mysql_select_db($database_localhost, $con_localhost);

$sql = "insert into tbl_employee (name, lastname) values(
 '".trim($name)."','".trim($lastname)."')";
$result = mysql_query($sql,$con_localhost);

if (!$result){
 echo mysql_errno() . ": " . mysql_error() . "\n";
}
else
{
?>
... <!-- html here-->
<?php
mysql_close($con_localhost);
?>
</html>