TinyMCE 儲存至資料庫範例

儲存至資料庫,要加上stripslashes函數,才能把 html code 正確放入資料庫。



 TinyMCE 




tinyMCE.init({
        // General options
        mode : "textareas",
        theme : "advanced",
        plugins : "spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",

        // Theme options
        theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",
        theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
        theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
        theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,spellchecker,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,blockquote,pagebreak,|,insertfile,insertimage",
        theme_advanced_toolbar_location : "top",
        theme_advanced_toolbar_align : "left",
        theme_advanced_statusbar_location : "bottom",
        theme_advanced_resizing : true,

        // Skin options
        skin : "o2k7",
        skin_variant : "silver",

        // Example content CSS (should be your site CSS)
        content_css : "css/example.css",

        // Drop lists for link/image/media/template dialogs
        template_external_list_url : "js/template_list.js",
        external_link_list_url : "js/link_list.js",
        external_image_list_url : "js/image_list.js",
        media_external_list_url : "js/media_list.js",

        // Replace values for the template plugin
        template_replace_values : {
                username : "Some User",
                staffid : "991234"
        }
});


query("SET NAMES 'utf8'"); $text = stripslashes($_POST['content']); $q2 = "INSERT INTO content(textarea,id) VALUES ('$text', NULL)"; $r2 = $conn->query($q2); $q1 = "SELECT * FROM content"; $r1 = $conn->query($q1); while( ($row_data = $r1->fetch_assoc()) !== NULL ){ echo "

{$row_data['id']}
"; echo "{$row_data['textarea']}

"; } ?>

mysql 備份資料庫 mysqldump 遇到錯誤 mysqldump: Got error: 1044:

mysqldump -u username -ppasswd dbname > .dbsql
(-ppasswd)-p 和密碼中間不能有空白
是一個不錯的資料庫備份方式,網路上可以找到很多關於 mysqldump 的教學和使用心得文章

不過,如果遇到下面這個錯誤怎麼解呢?

mysqldump: Got error: 1044: Access denied for user 'username'@'localhost' to database 'db' when using LOCK TABLES

這個錯誤的原因是,username 帳號嘗試要 dump 資料庫 db 之前,會先 lock 鎖住 db 資料庫,而如果 usrname 沒有 db 這個資料庫的 LOCK TABLES 這個權限的話就會發生這個錯誤!

解法很簡單,把 username 加入 db 資料庫的 LOCK TABLES 權限就可以了!

密碼的部份,也可以把密碼儲存在 ~/.my.cnf 裡面。
格式如下:

[client]
password=xxxxx

Flex按鈕,透過php,更新MySQL的值

這是初學 Flex 的一點心得,因為剛學,下面分享的程式碼必然有不少不夠好的地方,各路高手敬請不吝指教!

程式目的是利用 Flex 做出一個 flash 按鈕,並且可以利用這個按鈕更新 MySQL 裡面的值。

因為找不到 Flex 直接與 MySQL 溝通的方法,所以利用 HTTPService 這個東西來完成。



    
    	
        
    
    
        
    
    
    
        
            
        
    
    
    
        
        	
            McD
        
    

<?php
define( "DATABASE_SERVER", "server ip" );
define( "DATABASE_USERNAME", "db user name" );
define( "DATABASE_PASSWORD", "db user passwd" );
define( "DATABASE_NAME", "db table name" );

//connect to the database.
$mysql = mysql_connect(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD);
if($mysql == FALSE){
	echo "mysql_connect failure
"; } $r = mysql_select_db( DATABASE_NAME ); if($r == FALSE){ echo "mysql_select_db failure
"; } $Var = $_POST["name"]; //return a list of all the users $Query = "SELECT comment FROM food_data WHERE name='$Var'"; $Result = mysql_query( $Query ); if($Result == NULL){ echo "NULL_1"; } $Shop = mysql_fetch_object( $Result ); $new_comment = $Shop->comment; $new_comment = $new_comment + 1; $Query = "UPDATE food_data SET comment = '$new_comment' WHERE name='$Var'"; $Result = mysql_query( $Query ); if($Result == NULL){ echo "NULL_2"; } $Query = "SELECT comment FROM food_data WHERE name='$Var'"; $Result = mysql_query( $Query ); if($Result == NULL){ echo "NULL_3"; } $Return = ""; while ( $Shop = mysql_fetch_object( $Result ) ) { $Return .= "".$Shop->comment.""; } $Return .= ""; mysql_free_result( $Result ); print ($Return) ?>

Flex 連結 MySQL, ,利用 HTTPSericve 呼叫 php 達成

目前好像還沒有 Flex 直接呼叫 MySQL 的方法,一定要透過 PHP 之類的,之前有篇文章分享 AMFphp 的方法,這篇要分享關於利用 Flex 裡面的 HTTPService 這個屬性來呼叫 PHP 程式,一樣達成與 MySQL 溝通的目的!

mxml code:



    
        
    
    
        
            
            
        
        
            
            
        
        
    
    
        
            
            
        
    
    
    
    
        
            {username.text}
            {emailaddress.text}
        
    

php code:

<?php
define( "DATABASE_SERVER", "server ip" );
define( "DATABASE_USERNAME", "db username" );
define( "DATABASE_PASSWORD", "db passwd" );
define( "DATABASE_NAME", "db table name" );

//connect to the database.
$mysql = mysql_connect(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD);

mysql_select_db( DATABASE_NAME );

// Quote variable to make safe
function quote_smart($value)
{
 // Stripslashes
 if (get_magic_quotes_gpc()) {
 $value = stripslashes($value);
 }
 // Quote if not integer
 if (!is_numeric($value)) {
 $value = "'" . mysql_real_escape_string($value) . "'";
 }
 return $value;
}

if( $_POST["emailaddress"] AND $_POST["username"])
{
//add the user
$Query = sprintf("INSERT INTO users VALUES ('', %s, %s)", quote_smart($_POST['username']), quote_smart($_POST['emailaddress']));

$Result = mysql_query( $Query );
}

//return a list of all the users
$Query = "SELECT * from users";
$Result = mysql_query( $Query );

$Return = "";

while ( $User = mysql_fetch_object( $Result ) )
{
$Return .= "".$User->userid."".$User->username."".$User->emailaddress."";
}
$Return .= "";
mysql_free_result( $Result );
print ($Return)
?>

MySQL資料產生命令

CREATE TABLE `users` (
`userid` int(10) unsigned NOT NULL auto_increment,
`username` varchar(255) collate latin1_general_ci NOT NULL,
`emailaddress` varchar(255) collate latin1_general_ci NOT NULL,
PRIMARY KEY (`userid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=utf-8_unicode_ci AUTO_INCREMENT=3 ;

參考網頁:
Adobe 官方教學文章
Ubuntu 安裝 Flex 編譯器
Flex SDK 下載頁面

flex使用amfphp連結資料庫範例。

關於 Flex ,基礎環境架設就 看這一篇 吧!

不過,我只有參考 AMFphp 的安裝部份,其他的 XAMPP、php IDE我倒是沒裝

安裝 AMFphp 的部份簡述如下:
amfphp 下載 AMfphp 檔案

當然了,你必須先擁有 apache 以及 php 的環境,關於這點可以看連結的教學或者上網查『LAMP (linux apache mtsql php)』

下載好 AMfphp 之後解壓縮,把解壓縮出來的 amfphp 這個資料夾上傳到伺服器的網頁根目錄底下隨便一個地方

接下來就和連結裡面的教學 STEP2 一樣了。

下面貼的這個是程式碼是 flex 連結到資料庫的範例,不是很難。

query("SET NAMES 'utf8'");
		if(mysqli_connect_errno() != 0 ){
			$messenge = mysql_connect_error();
			return "

MySQL Connect Error!

"; $conn->close(); } else{ } $sql1="SELECT comment FROM food_data WHERE phone = "{$phone}""; $result = $conn->query($sql1); if( ($data = @$result->fetch_assoc() ) !== NULL){ return "The comment of {$phone} is {$data['comment']}"; } else{ return "There is no info about {$phone},Do you want to add it?"; } } } ?>

只要把上述程式碼存檔到 /your/htdocs/amfphp/services/ 底下,就可以用 AMFphp 裡面原始附的 swf 來呼叫並執行。
程式碼第十七行回傳的結果即出現在 Result 欄裡面。
flex php mysql 連結範例

好像只要是你原本 php 裡面有的模組,就可以直接透過 AMFphp 讓 Flex 呼叫使用。
上的時候要把 echo 之類的語法拿掉,否則會出現下面這樣的錯誤

(Object)#0
message = “faultCode:INVALID_AMF_MESSAGE faultString:’Invalid AMF message’ faultDetail:’Ha Ha


剛剛我成功的在 Windows 上面執行了 Flex 使用 remoting 連結,其中比較不明白的地方是,在 Flex Builder 裡面新增一個 Flex Project ,在 server location 的設定部份為什麼好像只能用 localhost 或者 127.0.0.1 或者本機 IP

Web root這個設定值意思是產生出來的專案檔案放置的地方,建議是你的機器上面的網頁根目錄

Root URL的意思應該是你產生出來的檔案要在哪個網站執行就填入該網站的網頁根目錄

例如我在我家裡面產生出來的檔案是要在 http://magicallove.ccns.ncku.edu.tw/flex1 這邊執行的話

那 Root URL 就填入 http://magicallove.ccns.ncku.edu.tw ,即使程式告訴你 Cannot access the web server 也沒關係


  • 被呼叫的 php 程式
  • 這個範例剛好有用 fopen 開了一個檔案, fopen 的第一個參數是要開啟的檔案路徑,我寫的相對路徑會在 HelloWorld.php 相同的

    資料夾底下開一個檔案,然後寫入兩行字,關閉檔案

    開檔關檔的概念跟 php 沒啥關係,反正程式裡面對於檔案就是這樣操作,記住吧!

    
    
    	
    	
    	
    
    
  • 產生 swf 的 mxml 檔案
  • 注意三四五這三行裡面出現 sayHello、HelloWorld 的地方
    第四行的 click="this.amfphp.Remoting.sayHello()" 是執行 HelloWorld.php 裡面的 function sayHello
    第五行的 source="HelloWorld" 指的是載入 HelloWorld.php 這隻程式的意思

    載入 HelloWorld.php 的位址好像是在電腦第一次拜訪該伺服器網頁的時候會設定(有錯歡迎指正)
    例如我的 services 位址是 webroot/amfphp/services

    你也可以把 source 寫成 source="flex.HelloWorld"
    這樣他就會變成到 webroot/amfphp/services/flex/ 底下去載入 HelloWorld.php 這隻程式了
    範例Demo
    http://magicallove.ccns.ncku.edu.tw/flex1/flex1.html

    感謝 Ausir 的指教!

    推薦閱讀:AMFPHP-搭起Flash與PHP的美麗橋樑

    python-mysqldb

    剛剛在安裝MySQL-python-1.2.2的時候,進行到python setup.py build ,出現了下面這個錯誤!

    『EnvironmentError: mysql_config not found』

    顯而易見的是少了mysql_config這個指令,解決方法是安裝下面這兩個套件,

    • apt-get install libmysqlclient15-dev
    • apt-get install python-mysqldb

    很基本的,另外它還必須要先安裝好python的開發環境!

    • apt-get install python-dev

    剛剛遇到問題我一直把錯誤訊息拿去估狗,但是好像因為東西比較新,咕狗到的資訊很少。

    後來我發現讀完README就統統搞定了!!

    要裝啥套件,要去哪裡下載都有!

    例如它會告訴你要安裝setuptools,而且下載位址也會寫出來
    http://pypi.python.org/pypi/setuptools

    安裝好之後可以用下面的範例稍微試一下,當然了,你必須先有已經建立好的資料庫才行!

    #!/usr/bin/python
    # 引入 MySQL 模組
    import MySQLdb
    # 連接到 MySQL
    db = MySQLdb.connect(host="localhost", user="db_user", passwd="db_pass", db="db_name")
    cursor = db.cursor()
    # 執行 SQL 語句
    cursor.execute("SELECT * FROM db_table")
    result = cursor.fetchall()
    # 輸出結果
    for record in result:
    print record[0]
    

    參考網頁:
    http://sourceforge.net/projects/mysql-python/files/
    http://www.real-blog.com/programming/417