您在這裡

怎麼樣在每個特定的cck欄位中填入一樣的資料內容?

tky's 的頭像
tky 在 2008-11-07 (週五) 23:18 發表

「怎麼樣在每個特定的cck欄位中填入一樣的資料內容?」這個問題乍看之下其實有些不尋常:因為我們通常會在多個node的特定cck欄位(比方說「日期」、「姓名」)中填入不一樣內容,為什麼需要全部填入一樣的內容呢?

這是因為tky使用了viewsfield模組,可以在cck之中嵌入特定的views表格。比方說「師資」的「開設課程」欄位集裡頭有個viewsfield cck欄位,連結到一個用nid當作argument的views表格,會過濾出特定師資所開設的課程資料。

由於搭配了token模組,只要在這個viewsfield cck欄位填入[nid]就可以自動對應不同的師資node而變更nid。這樣就不用一個個node去填寫不同的nid了。

問題是,有很多師資node建立的比較早,沒有預先填入這個[nid]值。所以還是得一個個node去手動輸入。tky最不喜歡的就是做這種繁複性的重複動作,所以想找個法子把[nid]全部填入這個viewsfield cck欄位。看了一下phpmyadmin,發覺似乎沒法子用sql指令去做的樣子。想請教一下高手們有沒有對策。

另一個相關的問題是,cck欄位都可以有預設值的,在建立新node的時候自動填入。不過由於tky要填入的預設值是[nid],而新的node在存入資料庫之前是沒有nid的,在建立node的表單中自然就不會自動填入。這也是一件挺麻煩的事情。又要填入token的數值又要讓token不要在建立node的時候發生作用,不曉得有什麼好法子可以解決這個惱人的問題。

希望可以找到個模組來解決大量填入相同內容或token變數的問題。
不曉得jimmy的quick edit content模組會不會考慮把這樣的功能加進去?

PHPMYADMIN是好工具,

你進入去, 隨便找一個你要修改的數據, 按編輯, 編輯好後按執行
之後你會看見上方出現SQL語法

比方:
UPDATE `db_name`.`node` SET `title` = 'ABC' WHERE `node`.`nid` =1043 LIMIT 1 ;

你修改一下為:
UPDATE `db_name`.`node` SET `title` = 'XYZ' WHERE `node`.`nid` ='';

這樣就會修改所有 `node`.`nid`為空的欄的title 為XYZ

緊記先備份!!!
或用SELECT 語法試一試是不是你想要的數據
例如:
SELECT * FROM `node` WHERE `title` = '';
=====================
會XHTML + CSS

多謝Kay.L的指導。
不過很奇怪,使用

WHERE `node`.`nid` =''

的陳述並不會將數值填入所有沒有數值的欄位,而是沒有反應。後來tky依樣畫葫蘆,是改成這樣:

UPDATE `db_name`.`content_type_teacher` SET `field_thesisadviser_vname` = '[nid]' WHERE `content_type_teacher`.`vid` <> 0 ;

由於所有的欄位都一定有vid或者nid,判斷式改成不等於0,就等於修改全部的表格了。

tky

tky

要看該欄位的預設值 是 空字串, 0 還是 NULL
一般 id 的話預設值應該是 0

你是field_thesisadviser_vname這個空 ??

如果這樣應該是:
UPDATE `db_name`.`content_type_teacher` SET `field_thesisadviser_vname` = '[nid]' WHERE `content_type_teacher`.`field_thesisadviser_vname` = '';

如果你是field_thesisadviser_vname完全沒有數據, 想把所有改的, 更簡單:
UPDATE `db_name`.`content_type_teacher` SET `field_thesisadviser_vname` = '[nid]' ;
不用WHERE 了

不過你成功就好了, 方法有很多種 ^.^