Содержание блога

вторник, 22 июня 2010 г.

PHP MySQL SL шпаргалка

Куски MySQL кода для ускорения писания программ:
Инициализация БД
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
    $db=mysql_connect(HostName,UserName,Password);// подключение к mysql
    mysql_select_db(DBName,$db);// подключение к базе данных
    $sqlUTF = @"set names utf8";//Волшебный запросик чтобы вопросиков не было
    $sql="SELECT * FROM wp_session WHERE caveid=$caveid ORDER BY sessionname";
    @mysql_query($sqlUTF,$db);//Волшебный запросик чтобы вопросиков не было
    $ress=mysql_query($sql,$db);//Выполнение запроса
    //echo($sql);
    $nmax=mysql_num_rows($ress);//Количество строк
    if ($nmax>0)
    {
        for ($n=0;$n<$nmax;$n++)
        {
            $sessionid=@mysql_result($ress,$n,"id");
            echo("$sessioni\r\n");
        }
    }
    @mysql_close($db);
}

Текущее ДатаВремя в юникс формате
1
$sql="INSERT INTO wp_session(sessionname, caveid, datecrt, dateupd) values 
(\"$sessionname\",\"$caveid\",UNIX_TIMESTAMP(NOW()),UNIX_TIMESTAMP(NOW()));";  

Перевод даты из юникс в обычную
1
2
$sql="SELECT wp_cave.*, FROM_UNIXTIME(datecrt) as datecrt_fu, 
FROM_UNIXTIME(dateupd) as dateupd_fu FROM wp_cave ORDER BY cavename";          

foreach
foreach (PiketListItem pkt in dataGrid1.ItemsSource as List<PiketListItem>)
{
}

понедельник, 21 июня 2010 г.

XML Parser на PHP

Хорошая статья


Еще одна статья

Блочная отправка методом GET


        private void button3_Click(object sender, RoutedEventArgs e)
        {
            string sql;
            sql = "";
            List listPk = new List();
            PiketListItem npkt;
            foreach (PiketListItem pkt in dataGrid1.ItemsSource as List)
            {
                npkt = new PiketListItem();
                npkt.ID = pkt.ID;
                if (pkt.FROM != null)
                    npkt.FROM = pkt.FROM.Trim();
                if (pkt.TO != null)
                    npkt.TO = pkt.TO.Trim();
                if (pkt.BEARING != null)
                    npkt.BEARING = pkt.BEARING.Trim();
                if (pkt.INC != null)
                    npkt.INC = pkt.INC.Trim();
                if (pkt.LENGTH != null)
                    npkt.LENGTH = pkt.LENGTH.Trim();
                if (pkt.LEFT != null)
                    npkt.LEFT = pkt.LEFT.Trim();
                if (pkt.UP != null)
                    npkt.UP = pkt.UP.Trim();
                if (pkt.DOWN != null)
                    npkt.DOWN = pkt.DOWN.Trim();
                if (pkt.RIGHT != null)
                    npkt.RIGHT = pkt.RIGHT.Trim();
                if (pkt.COMMENTS != null)
                    npkt.COMMENTS = pkt.COMMENTS.Trim();
                npkt.IsPiket = pkt.IsPiket;
                npkt.IsPiketWall = pkt.IsPiketWall;
                listPk.Add(npkt);
            }
            blocks = new List();
            BlockGet bl = new BlockGet();
            string s;
            foreach (PiketListItem pkt in listPk)
            {
                string sIsPiket = "0";
                if (pkt.IsPiket) sIsPiket = "1";
                string sIsPiketWall = "0";
                if (pkt.IsPiketWall) sIsPiketWall = "1";

                s = "insert into wp_pkt_bf(p_FROM,p_TO,p_AZIMUT,p_INC,p_LENGTH,p_LEFT,p_UP,p_DOWN,p_RIGHT,p_COMMENTS,p_IsPiket,p_IsPiketWall,sessionid) values "
                    + "(\"" + pkt.FROM + "\",\"" + pkt.TO + "\",\"" + pkt.BEARING + "\",\"" + pkt.INC + "\",\"" + pkt.LENGTH +"\","
                    + "\"" + pkt.LEFT + "\",\"" + pkt.UP + "\",\"" + pkt.DOWN + "\",\"" + pkt.RIGHT + "\",\"" + pkt.COMMENTS + "\","
                    + "\"" + sIsPiket + "\",\"" + sIsPiketWall + "\",\""+sessionID+"\"" 
                    + ");" + "\r\n";
                if (bl.blockText.Length + s.Length < 1000)
                {
                    bl.blockText += s;
                }
                else
                {
                    sql+=bl.blockText;
                    bl.blockId=DateTime.Now.Hour.ToString()+DateTime.Now.Minute.ToString()
                        +DateTime.Now.Second.ToString()+DateTime.Now.Millisecond.ToString();
                    blocks.Add(bl);
                    bl=new BlockGet();
                    bl.blockText = s;
                }
            }
            //textBoxLog.Text += "SQL:" + "\r\n" + sql + "\r\n";
            // http://aks.m-ten.ru/webpiket/datagetway.php


            #region Отправить методом GET
            //метод не совсем подходящий, но рабочий POST пока не нашел как заставить работать
            //Установил ограничение длины строки get = 1000 символа + ~100(http://aks.m-ten.ru/webpiket/datagetway.php?act=insertpkt&blockid=114440901&sessionid=0&sql=)
            Uri uri;
            WebClient wc;
            foreach (BlockGet blk in blocks)
            {
                uri = new Uri(getwayURL.Text + "?act=insertpkt&blockid=" + blk.blockId + "&sessionid=" + sessionID + "&sql=" + blk.blockText, UriKind.Absolute);
                textBoxLog.Text += "uri.OriginalString = " + uri.OriginalString + "\r\n";

                wc = new WebClient();
                textBoxLog.Text += "DownloadStringCompleted... blockid=" + blk.blockId + "\r\n";
                wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(DownloadStringCompletedHndlr);
                textBoxLog.Text += "DownloadStringAsync... \r\n";
                wc.DownloadStringAsync(uri, "POST");
            }

            #endregion Отправить методом GET

        }

суббота, 19 июня 2010 г.

Послать блок текста на сервер методом POST

Первая попытка, почемуто в ответ тишина


#region попытка раз
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);  
            textBoxLog.Text += "Формирование POST запроса...request" + "\r\n";
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded" + "\r\n";
            textBoxLog.Text += "request.RequestUri = " + request.RequestUri.AbsoluteUri + "\r\n";
            sqlpkt = sql;
            textBoxLog.Text += "Формирование POST запроса...BeginGetRequestStream....";
            request.BeginGetRequestStream(new AsyncCallback(RequestReady), request);
            textBoxLog.Text += "ok \r\n";

            #endregion попытка раз
....
        #region RequestReady ResponseReady

        void RequestReady(IAsyncResult asyncResult)
        {
            textBoxLog.Text += "RequestReady\r\n";
            HttpWebRequest request = asyncResult.AsyncState as HttpWebRequest;
            Stream stream = request.EndGetRequestStream(asyncResult);

            // Hack for solving multi-threading problem  
            // I think this is a bug  
            this.Dispatcher.BeginInvoke(delegate()
            {
                // Send the post variables  
                textBoxLog.Text += "RequestReady: Send the post variables.... ";
                StreamWriter writer = new StreamWriter(stream);
                writer.WriteLine("sessionid="+sessionID);
                writer.WriteLine("sql="+sqlpkt);
                writer.Flush();
                writer.Close();
                textBoxLog.Text += "ok\r\n";
                textBoxLog.Text += "RequestReady: request.BeginGetResponse\r\n";
                request.BeginGetResponse(new AsyncCallback(ResponseReady), request);
                textBoxLog.Text += "RequestReady: request.BeginGetResponse....ok\r\n";
            });
        }  

        // Get the Result  
        void ResponseReady(IAsyncResult asyncResult)
        {
            textBoxLog.Text += "ResponseReady\r\n";
            HttpWebRequest request = asyncResult.AsyncState as HttpWebRequest;
            HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asyncResult);

            this.Dispatcher.BeginInvoke(delegate()
            {
                textBoxLog.Text += "ResponseReady: this.Dispatcher.BeginInvoke(delegate() \r\n";
                Stream responseStream = response.GetResponseStream();
                StreamReader reader = new StreamReader(responseStream);
                // get the result text  
                string result = reader.ReadToEnd();
                textBoxLog.Text += "reader result: " + result + "\r\n";
            });
        }
        #endregion RequestReady ResponseReady
 

Динамическое создание элемента form

Создание элемента форм с скрытыми полями, ошибок не дал, но и неисполнил ни чего, треуется дальнейшее изучение этого блока:
textBoxLog.Text += "create HtmlElement sqlform... ";
            System.Windows.Browser.HtmlElement sqlform = System.Windows.Browser.HtmlPage.Document.CreateElement("form");
            textBoxLog.Text += "ok \r\n";
            textBoxLog.Text += "SetProperty sqlform name = sqlform ... ";
            sqlform.SetProperty("name", "sqlform");
            textBoxLog.Text += "ok \r\n";
            textBoxLog.Text += "SetProperty sqlform method = post ... ";
            sqlform.SetProperty("method", "post");
            textBoxLog.Text += "ok \r\n";
            textBoxLog.Text += "SetProperty sqlform action = http://aks.m-ten.ru/webpiket/datagetway.php?act=insertpkt... ";
            sqlform.SetProperty("action", "http://aks.m-ten.ru/webpiket/datagetway.php?act=insertpkt");
            textBoxLog.Text += "ok \r\n";
            textBoxLog.Text += "create HtmlElement sqlInput(sql)... ";
            System.Windows.Browser.HtmlElement sqlInput = System.Windows.Browser.HtmlPage.Document.CreateElement("input");
            sqlInput.SetProperty("type", "hidden");
            sqlInput.SetProperty("name", "sql");
            sqlInput.SetProperty("value", sql);
            sqlform.AppendChild(sqlInput);
            textBoxLog.Text += "ok \r\n";
            textBoxLog.Text += "create HtmlElement sessionInput(sessionid)... ";
            System.Windows.Browser.HtmlElement sessionInput = System.Windows.Browser.HtmlPage.Document.CreateElement("input");
            sessionInput.SetProperty("type", "hidden");
            sessionInput.SetProperty("name", "sessionid");
            sessionInput.SetProperty("value", sessionID);
            sqlform.AppendChild(sessionInput);
            textBoxLog.Text += "ok \r\n";
            textBoxLog.Text += "create HtmlElement actInput(act)... ";
            System.Windows.Browser.HtmlElement actInput = System.Windows.Browser.HtmlPage.Document.CreateElement("input");
            actInput.SetProperty("type", "hidden");
            actInput.SetProperty("name", "act");
            actInput.SetProperty("value", "insertpkt");
            sqlform.AppendChild(actInput);
            sqlform.Invoke("submit");
            textBoxLog.Text += "ok \r\n";

пятница, 18 июня 2010 г.

Чтение из DataGrid

DataGrid заполнялся списком List<PiketListItem>


            string sql;
            sql = "";
            List<PiketListItem> listPk = new List<PiketListItem>();
            PiketListItem npkt;
            foreach (PiketListItem pkt in dataGrid1.ItemsSource as List<PiketListItem>)
            {
                npkt = new PiketListItem();
                npkt.ID = pkt.ID;
                npkt.FROM = pkt.FROM;
                npkt.TO = pkt.TO;
                npkt.BEARING = pkt.BEARING;
                npkt.INC = pkt.INC;
                npkt.LENGTH = pkt.LENGTH;
                npkt.LEFT = pkt.LEFT;
                npkt.UP = pkt.UP;
                npkt.DOWN = pkt.DOWN;
                npkt.RIGHT = pkt.RIGHT;
                npkt.COMMENTS = pkt.COMMENTS;
                npkt.IsPiket = pkt.IsPiket;
                npkt.IsPiketWall = pkt.IsPiketWall;
                listPk.Add(npkt);
            }
            foreach (PiketListItem pkt in listPk)
            {
                string sIsPiket = "0";
                if (pkt.IsPiket) sIsPiket = "1";
                string sIsPiketWall = "0";
                if (pkt.IsPiketWall) sIsPiketWall = "1";
                sql += "insert into wp_pkt(FROM,TO,BEARING,INC,LENGTH,LEFT,UP,DOWN,RIGHT,COMMENTS,sIsPiket,sIsPiketWall) values "
                    + "(\"" + pkt.FROM + "\",\"" + pkt.TO + "\",\"" + pkt.BEARING + "\",\"" + pkt.INC + "\",\"" + pkt.LENGTH +"\","
                    + "\"" + pkt.LEFT + "\",\"" + pkt.UP + "\",\"" + pkt.DOWN + "\",\"" + pkt.RIGHT + "\",\"" + pkt.COMMENTS + "\","
                    + "\"" + sIsPiket + "\",\"" + sIsPiketWall + "\",\"" 
                    + ");" + "\r\n";
            }
            textBoxLog.Text += "SQL:" + "\r\n" + sql + "\r\n";

Интерфейс INotifyPropertyChanged

Изменение значения в ячейках DataGrid
INotifyPropertyChanged Interface

//Add using statements
using System.ComponentModel;
using System.Windows.Data;


...


// Create a class that implements INotifyPropertyChanged
public class Person : INotifyPropertyChanged
{
    private string firstNameValue;
    public string FirstName{
        get { return firstNameValue; }
        set
        {
            firstNameValue=value;
            // Call NotifyPropertyChanged when the property is updated
            NotifyPropertyChanged("FirstName");
        }
    }

    // Declare the PropertyChanged event
    public event PropertyChangedEventHandler PropertyChanged;

    // NotifyPropertyChanged will raise the PropertyChanged event passing the
    // source property that is being updated.
    public void NotifyPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }  
} 
 
Если в DataGrid изменить значение в какой либо ячейке с помощью какого либо действия не связанного именно с тыканьем мышкой в ячейку и ввода нового значения, то значение не обновляется до тех пор пока, например, не прокрутишь DataGrid вниз и обратно.
читать всю ветку Изменение значения в ячейках DataGrid
взято с silverlighter.ru