2011-05-07 37 views
0

又一query.If這將是太複合那麼我不會甚至不屑......所以繼承人的查詢。它我再呼應PHP代碼中的XML文件

我有標題,藝術家,人名&奉獻消息存儲在mysql.May可以這是愚蠢的..有可能創建XML文件從數據庫中檢索上述四個信息。我在xml文件中編寫了下面的代碼,但不知道缺少什麼。config.php具有數據庫連接信息。

非常感謝您的幫助! 內華達州

<?php 

require("config.php"); 



$i=0; 
$db = "SELECT * FROM songlist WHERE songtype='S' ORDER BY date_added DESC LIMIT 50"; 
$db = "SELECT songlist.artist, songlist.title, requestlist.name, requestlist.msg FROM songlist, requestlist WHERE requestlist.name <> '' and requestlist.songID = songlist.ID ORDER BY requestlist.t_stamp DESC LIMIT 20"; 
$count = 1; 

    while($results = $db->row()) 
    { 
     $count++; 

     if(($count % 2)== 0) 

?> 
<?php echo('<?xml version="1.0" encoding="utf-8"?>'); ?> 
<playlist version="1" xmlns="http://xspf.org/ns/0/"> 

<trackList> 
    <track> 

     <Song><?php echo $results['title']?></Song> 
     <album><![CDATA[<?php echo $results['artist']; ?>]]></album> 
    </track> 

    </trackList> 

</playlist> 

<? 
$i++; 
} 
?> 
+1

您能否告訴我們在執行此操作時會發生什麼情況? – 2011-05-07 04:06:20

+0

您應該在循環上方移動XML前導碼。只有' ...'應該在'while {}'循環中打印出來。關閉''和''也應該在循環之外。 – mario 2011-05-07 04:12:18

回答

0

你沒有解釋你的問題是什麼?另外,我需要關於xml所需格式的信息,或者需要將哪些命令發送到數據庫代碼。

它看起來像你有一些格式上的錯誤,以及。我只能猜測什麼工作,但試試這個:

1)在文件的開頭,你似乎已經忘記了開始標籤 2)$我似乎是未使用,將其刪除() ? 3)你的SQL語句不僅在引號中沒有被封閉,而且需要被髮送到數據庫代碼(完全猜測,因爲我不知道你的config.php裏面會是什麼)$ db-> query(「你的sql在這裏「); 4)delete:'); ?> 5)...實際上這變得愚蠢,我應該只是爲你重寫它!

的一點是,任何事情之前,我需要知道,如果你需要使用的config.php?或者,如果我可以使用本機php函數進行編碼。

但這仍然是充滿了問題(因爲我不知道有什麼要求的格式爲XML是一個),但我給它一個去!所以,告訴我你是否需要使用你的config.php,如果不是,那麼我會很快編寫一些代碼。否則,你將有權發佈

乾杯

確定這裏是在什麼工作我最好的猜測的config.php文件中的內容:

<?xml version="1.0" encoding="utf-8"?> 
<playlist version="1" xmlns="http://xspf.org/ns/0/"> 
    <trackList> 
<?php 

$DB_SERVER = "localhost"; 
$DB_NAME = "yourdatabasename"; 
$DB_USER = "yourdbuser"; 
$DB_PASSWORD = "yourpw"; 

mysql_connect($DB_SERVER, $DB_USER, $DB_PASSWORD); 
mysql_select_db($DB_NAME); 

$sql = "select * from songlist order by date_added desc limit 10"; 

$res = mysql_query($sql); 

while ($result = mysql_fetch_assoc($res)){ 
    ?> 
     <track> 
      <Song><![CDATA[<?= $result['title']?]]></Song> 
      <album><![CDATA[<?= $result['artist']?>]]></album> 
     </track> 
    <? 
} 
?> 
</trackList> 
</playlist>  

只要改變你的數據庫名稱,用戶名和密碼,那麼你將擁有你的xml。但是,您可能需要將上述相冊行更改爲:

+0

我懷疑$ db =「你的sql」會起作用!你需要說出你的config.php文件使用的數據庫框架,我懷疑你需要調用類似$ db-> query(「你的sql」) – Jodes 2011-05-07 04:30:51

+0

非常感謝所有的快速響應! config.php是由SAM Broadcaster模板提供的。我現在已經替換dbconfigxml.php.Below所述的config.php是代碼<?/ * \t \t \t MYSQL \t \t 本地主機 \t \t \t \t *** \t \t *** \t \t *** \t * /?> – Nev 2011-05-07 04:33:52

+0

我不認爲你需要使用dbconfigxml.php,我將快速代碼的東西,你可以使用,而不是... – Jodes 2011-05-07 04:47:24

0

好了,你的主要問題似乎是:

$db = "SELECT * .."; 
$db = "SELECT song ..."; 

    while($results = $db->row()) 
    { 

你分配一個字符串那裏,然後立即嘗試使用它作爲某種數據庫接口。因爲我不知道什麼是你的配置腳本怎麼回事,或者你用怪異的數據庫接口,它更容易使用過時的mysql_functions解釋說:

$result = mysql_query("SELECT songlist.artist, ... goes here"); 

while($results = mysql_fetch_assoc($result)) 
{ 

mysql_query運行你的SELECT語句,然後纔可以使用從mysql_query獲得的$ result值迭代結果mysql_fetch_assoc

請注意,你必須決定,你的兩個查詢的實際運行在這裏。您不能同時使用兩個SELECT查詢。 (或不不在你的情況下,至少。)