2011-07-12 29 views
4

私は2つのファイルfile.phpget_xml.phpを持っています。私は、両方のPHPファイルでエコーテーブル情報を問題なく、私はデータを照会するために検索フォームを使用したい場合はget_xml.phpに送信して、私は結果を得ることはできません。検索フォームを送信した後にデータベースからクエリ結果を受け取っていません

file.php

<?php 
$username="****"; 
$password="*******"; 
$database="******"; 

mysql_connect(localhost,$username,$password); 
@mysql_select_db($database) or die("Unable to select database"); 
$query="SELECT * FROM markers"; 
$result=mysql_query($query); 

$num=mysql_num_rows($result); 

mysql_close(); 
?> 


<form action="get_xml2.php" method="post"> 
Name: <input type="text" name="name"><br> 
Address: <input type="text" name="address"><br> 
Type: <input type="text" name="type"><br> 
<input type="Submit"> 
</form> 

get_xml2.phpあなたが

<?php 
require("db_access.php"); 

function parseToXML($htmlStr) 
{ 
$xmlStr=str_replace('<','&lt;',$htmlStr); 
$xmlStr=str_replace('>','&gt;',$xmlStr); 
$xmlStr=str_replace('"','&quot;',$xmlStr); 
$xmlStr=str_replace("'",'&#39;',$xmlStr); 
$xmlStr=str_replace("&",'&amp;',$xmlStr); 
return $xmlStr; 
} 

$name=$_POST['name']; 
$address=$_POST['address']; 
$type=$_POST['type']; 


// Opens a connection to a MySQL server 
$connection=mysql_connect (localhost, $username, $password); 
if (!$connection) { 
    die('Not connected : ' . mysql_error()); 
} 

// Set the active MySQL database 
$db_selected = mysql_select_db($database, $connection); 
if (!$db_selected) { 
    die ('Can\'t use db : ' . mysql_error()); 
} 




// Select all the rows in the markers table 
$query = sprintf(
    "SELECT name, address, type FROM markers WHERE name = '%s' AND address = '%s' AND  type = '%s'", 
    mysql_real_escape_string($name), 
    mysql_real_escape_string($address), 
    mysql_real_escape_string($type) 
); 
$result = mysql_query($result); 
if($result == false) { 
    die(mysql_error() . "<br />\n$query"); 
} 
if(mysql_num_rows($result) == 0) { 
    user_error("No rows returned by:<br />\n$query"); 
} 

header("Content-type: text/xml"); 

// Start XML file, echo parent node 
echo '<markers>'; 

// Iterate through the rows, printing XML nodes for each 
while ($row = @mysql_fetch_assoc($result)){ 
    // ADD TO XML DOCUMENT NODE 
    echo '<marker '; 
    echo 'name="' . parseToXML($row['name']) . '" '; 
    echo 'address="' . parseToXML($row['address']) . '" '; 
    echo 'type="' . parseToXML($row['type']) . '" '; 
    echo 'lat="' . $row['lat'] . '" '; 
    echo 'lng="' . $row['lng'] . '" '; 
    echo '/>'; 
} 

// End XML file 
echo '</markers>'; 

?> 

Here is a working example along with all rows as a reference as to what is in the actual MySQL table.

今ここにコード自体です検索は、あなたは、あなたがこれを取得します見ることができます:

> Query was empty 
SELECT name, address, type 
FROM markers 
WHERE name = 'The Melting Pot' 
AND address = '14 Mercer St, Seattle, WA' 
AND type = 'restaurant' 

しかし、私は

$query = "SELECT * FROM markers WHERE 1"; 
$result = mysql_query($query); 
if (!$result) { 
    die('Invalid query: ' . mysql_error()); 
} 

The xml happily retrieves ALL data in from the database, as seen hereにXMLのコードを変更したとき。

ありがとうございました!

答えて

5

あなたはおそらくこれのために自分を蹴るでしょう。

$result = mysql_query($query); 

屋がそれを嫌いではありません

​​3210

すべきですか? :-)

+0

​​3210

は、しかし、あなたはもう一つのことで私を助けることができ、ありがとうございましたか! xmlは、すべてのフィールドを正しく入力した場合にのみ結果を返します。私は、例えば、TYPEかNAMEを記入すると、対応する行を返すようにスクリプトを修正できますか?ありがとう:) – pufAmuf

+0

条件付きでwhere句を追加したいですか?条件文とチェックをSQlの周りに置くだけです。 $ nameClause = "name =" "。}次に、$ nameClauseをSQL文の$ nameのどこに置くかを指定します。そのようにして、変数が何かを持っているときに条件チェックが行われます。 –

+0

hmmmm私はこれを試しました。(空($ name)){ $ nameClause = ''; } else { $ nameClause = "name = '"。$ name。 "'"; }でも、これを実行してもすべてのフィールドに入力する必要があります:mysql_real_escape_string($ nameClause)。私はあなたにもっと気にしますが、このテキストボックスでやりとりするのは難しいので、新しい質問のもとにファイルを書きます。再度、感謝します :)! – pufAmuf

3

あなたは間違いがあります。代わりに

$result = mysql_query($query); 
+0

大変ありがとうございます:)))) – pufAmuf

関連する問題