2013-10-05 29 views
-1

我有時間問題。我正在製作卡拉OK網站,我在某些操作中使用了php。該網站是用Drupal製作的。我的問題是我使用date()來創建記錄的歌曲的文件名。但是這個文件名在我的頁面的兩個地方使用。第一個地方在頁面加載後立即生成文件名,並「回顯」它以供applet使用。該小程序將在用戶在錄製歌曲後離開頁面時最後上傳文件。如何使用date()常量通過代碼來創建變量? (php,drupal)

第二個地方會在按下按鈕時使用文件名。此代碼會將文件名寫入節點(我的歌曲)以供稍後訪問。所以兩個文件名必須相同。問題在於兩個代碼使用常量的時間不一致。因此,在我的歌曲節點中寫入的文件名稱與上載的文件名稱不同。因爲兩個代碼使用文件名時有4-5分鐘的差異。我想這個函數:date('dmhi')存儲在常量中,而不是函數的字符串(結果)。我嘗試使用一個變量並首先用一個字符串對它進行初始化,所以它仍然是一個字符串,但它不起作用。我更多的是C++和VB編碼器,所以我不明白變量和常量如何在php中工作。我在網上搜索了幾天,我沒有找到任何答案。我希望你們能幫助我。這裏是我的代碼部分:

第一次出現:

<?php 

Global $user; 
    profile_load_profile($user); 
$name = $user->name; 
define("FILE", $title . $name . date('dmhi') . ".spx"); 


echo "<param name=\"refreshURL\" value=\"http://english.karavid.com/node/2?sampleName=" . FILE . "&movie=" . $movie . "&title=" . $title . "&name=" . $name . "\">\n"; 

echo "<param name=\"uploadFileName\" value=\"" . FILE . "\">\n"; 


?> 

當按鈕被按下其次次數:

$node1->body = substr($node1->body, 0, -8) . "<tr> 
<th scope=\"col\"><a href=\"http://english.karavid.com/node/2?sampleName=" . FILE . "&movie=" . $movie . "&title=" . $title . "&name=" . $name . "\">" . $title . "</a></th> 
<th scope=\"col\">" . date('j M Y') . "</th> 
<th scope=\"col\"></th> 
</tr> </table>"; 

node_save($node1); 

預先感謝您能給我任何線索。

納塔莉

編輯:

我會盡量解釋更好。我正在生成一個頁面,它將在applet中創建一些代碼(語音記錄器)。在該applet中,我使用php來構成小程序代碼的一部分。這部分是爲了讓小程序上傳用戶完成的錄製。現在,我需要一個對每個用戶都不同的文件名。如果用戶在一天中多次錄製同一首歌曲,則文件名稱必須不同,因此我在文件名稱中使用了日期和時間。用函數date();

但是,該文件名在加載時生成。所以文件名將包含加載頁面的時間。稍後當用戶確實保存該歌曲時,時間已過,但上載的文件名包含加載時的時間而不是保存時間。發生這種情況是因爲在加載頁面時,applet中的文件名稱是「echo」(ed)。沒有其他方法可以解決它。

但是,我想保留那段時間,以便我可以再次使用它。當我嘗試再次使用文件名時,時間不再相同。幾分鐘過去了。所以文件名稱是不一樣的。並且當保存時在記錄之後將文件名寫入另一個頁面(節點或文件)時,它與前一個不一樣。

我知道這有點複雜。但基本上,我需要生成一個包含其中的時間的文件名。並在兩次使用相同的文件名稱,將用時間框架分隔。但文件名不應該改變。

回答

0

我不確定你在問什麼。

您可以創建一個函數來返回日期...

public function myDate(){ 
    return date('dmhi'); 
} 

並調用

echo $this->myDate(); 

或者,如果你想設置日期的第一個電話,並有後續調用檢索相同的日期

private $_myDate; 
public function myDate(){ 
    if($this->_myDate == null) 
     $this->_myDate = date('dmhi'); 
    return $this->_myDate; 
} 

編輯

試試吧沒有$這個?

$_myDate = null; 
function myDate(){ 
    if($_myDate == null) 
     $_myDate = date('dmhi'); 
    return $_myDate; 
} 

$date = myDate(); 

編輯2

爲什麼不這樣做呢?

$myDate = date('dmhi'); 
$file = $title . $name . $myDate . ".spx"; 

然後

$node1->body = substr($node1->body, 0, -8) . "<tr> 
<th scope=\"col\"><a href=\"http://english.karavid.com/node/2?sampleName=" . $file . "&movie=" . $movie . "&title=" . $title . "&name=" . $name . "\">" . $title . "</a></th> 
<th scope=\"col\">" . $myDate . "</th> 
<th scope=\"col\"></th> 
</tr> </table>"; 
+0

謝謝你的回答。如果不清楚,我很抱歉。英語不是我的母語。我想要做的就是你說的,我需要在第一次調用(加載頁面時)時設置日期(和時間),並在隨後的調用中設置相同的日期(時間)(最後當「保存「按鈕被按下)。但是當第二次被調用時,時間會有幾分鐘的差異。 我用你的代碼(第二個),但它不起作用。我打電話這樣的功能: $ date = $ this-> myDate(); 但它不編譯。 –

+0

我認爲我們混淆了這個問題。你基本上是生成一個頁面,該頁面將提供一個按鈕來訪問以前定義的文件,對吧? – ameagher

+0

再次感謝你。我嘗試了兩種解決方案,它們編譯得很好,但沒有解決我的問題。感謝您的幫助,我編輯了我的問題以清除問題。 –

0

所以想很多事情之後,我找到了一種方法來解決它。我將它發佈在這裏,以防將來有人需要這樣做。

在我的頁面上,我有一個表格用於「保存」按鈕。我只是在表格末尾添加這樣的:

echo "<input type=\"hidden\" value=\"" . FILE . "\" name=\"filename\" id=\"filename\"> 
</form>"; 

所以它打印的頁面加載時,我需要的文件名,它仍然隱藏。所以,當「保存」按鈕被按下以後,最終的代碼運行,我只是養傷已傳遞到這個隱藏字段的常量,像這樣:

$file = $_POST["filename"];

這不是一個完美的解決方案,但它作品。如果有人有更好的,請讓我知道。

相關問題