2010-02-04 81 views
1

這裏是我的代碼PHP不會回顯XML孩子

<form method="post"> 
    <input name="hash" type="text" id="hash" style='width: 30%;'/> 
    <input name="Crack!" type="submit" value="Crack!" onfocus="if(this.blur)this.blur()"/> 
</form> 

    <?php 
if(isset($_POST['Crack!'])){ 
    $hash = $_POST['hash'];   

    $xml = simplexml_load_file("http://gdataonline.com/qkhash.php?mode=xml&hash=$hash"); 

    $status = $xml->data->status; 
    if ($status = "Success"){ 
    $plain = $xml->data->result; 
     }elseif ($status = "Hash not found"){ 
     $plain = "Not Found"; }  

?> 
<table> 
<tr> 
<td><?php echo "gdataonline.com: "; ?></td> 
<td><?php echo "$plain"; ?></td> 
</tr> 
</table> 

<?php 
echo "<pre>"; 
var_dump($xml); 
echo "</pre>"; 

} //if submit 

?> 

出於某種原因,我無法得到它的回聲$平原,在所有。就好像它甚至無法讀取它一樣。

回答

5

Rob,如果您希望人們甚至理解您的問題,您必須付出努力而不是隻發佈一大堆不相關的代碼,並問「爲什麼這個不工作?」

所以,我做了你的功課,我想出了什麼e腳本正在做並取得example XML document。事實證明,你的層次結構錯了。此外,這是無關的,但您使用assignment operators而不是comparison operators。換句話說,您的if s不會測試任何東西,第一個只會將$status設置爲「成功」。

相關部分應該是這樣的:

$data = simplexml_load_file("http://gdataonline.com/qkhash.php?mode=xml&hash=$hash"); 

switch ($data->status) 
{ 
    case 'Success': 
     $plain = $data->result; 
     break; 

    case 'Hash not found': 
     $plain = "Not Found"; 
     break; 
} 
+0

是的,你的代碼是:-) – streetparade 2010-02-04 20:42:39

+0

非常感謝!像魅力一樣工作! – Rob 2010-02-04 20:54:19

1

你在哪裏得到「$ xml-> data」?根據php.net,SimpleXMLElement對象沒有名爲「data」的成員。查看該鏈接或simplexml_load_file的文檔以獲取有關正確使用此內容的衆多示例。

+0

http://gdataonline.com/qkhash.php?mode=xml&hash=098f6bcd4621d373cade4e832627b4f6 – Rob 2010-02-04 20:35:35

1

它可能不是你的整個問題,但一個明確的問題是,你有兩個任務,而不是測試:

if ($status = "Success")

}elseif ($status = "Hash not found"){

都分配這些值爲$狀態而不是測試相等。你需要$status == "Success"$status == "Hash not found"

在這種情況下,你的第一個測試總是會成功的(因爲賦值的返回值是分配的值,所以$ status =「Success」將返回「Success」如果'測試,那麼$ plain將始終是$ xml-> data->結果,即使狀態不是真的成功。

+0

你對了,我不知道我是怎麼錯過的。謝謝!但我仍然有同樣的問題,但仍然有必要,謝謝。 – Rob 2010-02-04 20:45:31

0

這爲我工作:

<form method="post"> 
    <input name="hash" type="text" id="hash" style='width: 30%;'/> 
    <input name="Crack!" type="submit" value="Crack!" onfocus="if(this.blur)this.blur()"/> 
</form> 

    <?php 
if(isset($_POST['Crack!'])){ 
    $hash = $_POST['hash'];   

<?php 

$xml = simplexml_load_file("http://gdataonline.com/qkhash.php?mode=xml&hash=$hash") 

if(!xml) 
{ 
echo "hash not found"; 
// return false; // not function so cant return false ignore it 
} 

$plain = $xml->result; 

?> 


<table> 
<tr> 
<td><?php echo "gdataonline.com: "; ?></td> 
<td><?php echo "$plain"; ?></td> 
</tr> 
</table>