2012-06-22 38 views
3

我現在還沒有設計一個網站大約3年,所以我很生氣至少可以說。我必須回到Dreamweaver CS5上來幫助我。 Right ...嘗試運行基於下拉列表結果的SELECT sql查詢。 mySQL php

我想要一個新聞頁面,用戶/客戶將從下拉菜單中選擇日期(JAN,FEB,MAR,APR等)。現在,我在我的桌子上mySQL數據庫被稱爲'news',其中每行都被這些日期引用。我已經爲日期設置了一個動態列表(一個下拉列表)。

我想要的是客戶從下拉列表中選擇日期,並將結果顯示在下面的Recordset中。我假設的SQL查詢需要被寫的線沿線的東西:

選擇日期,主題,郵件 從新聞 其中date = $ XXXXXDROPDOWNLIST XXX $

正如你所看到的,我做了最後排隊,因爲我不能完全掌握它應該如何運作。我在想,下拉列表需要在POST和結果表格需要以GET形式存在的表單中。

難道有人比我更技術請開導我的dillema?

謝謝,羅布。

代碼

mysql_select_db($database_rcc, $rcc); 
$query_dropdowndate = "SELECT DATE_FORMAT(date, '%M %Y') AS FORMATTEDDATE FROM news GROUP BY FORMATTEDDATE ORDER BY Date DESC "; 
$dropdowndate = mysql_query($query_dropdowndate, $rcc) or die(mysql_error()); 
$row_dropdowndate = mysql_fetch_assoc($dropdowndate); 
$totalRows_dropdowndate = mysql_num_rows($dropdowndate); 

mysql_select_db($database_rcc, $rcc); 
$query_newsitems = "SELECT `Date`, Subject, Message FROM news WHERE date = $_POST['dropdowndate']"; 
$newsitems = mysql_query($query_newsitems, $rcc) or die(mysql_error()); 
$row_newsitems = mysql_fetch_assoc($newsitems); 
$totalRows_newsitems = mysql_num_rows($newsitems); 
?> 



<form id="choosedate" name="choosedate" method="post" action="#"> 
    <label for="dropdowndate"></label> 
    <select name="dropdowndate" id="dropdowndate"> 
    <?php 
do { 
?> 
    <option value="<?php echo $row_dropdowndate['FORMATTEDDATE']?>"<?php if (!(strcmp($row_dropdowndate['FORMATTEDDATE'], $row_dropdowndate['FORMATTEDDATE']))) {echo "selected=\"selected\"";} ?>><?php echo $row_dropdowndate['FORMATTEDDATE']?></option> 
    <?php 
} while ($row_dropdowndate = mysql_fetch_assoc($dropdowndate)); 
    $rows = mysql_num_rows($dropdowndate); 
    if($rows > 0) { 
     mysql_data_seek($dropdowndate, 0); 
     $row_dropdowndate = mysql_fetch_assoc($dropdowndate); 
    } 
?> 
    </select> 
    <input type="submit" name="submit" id="submit" value="Submit" /> 
</form> 
<p>&nbsp;</p> 
<form id="form1" name="form1" method="get" action=""> 
    <table border="0" cellpadding="5" cellspacing="2"> 
    <tr> 
     <td>Date</td> 
     <td>Subject</td> 
     <td>Message</td> 
    </tr> 
    <?php do { ?> 
     <tr> 
     <td><?php echo $row_newsitems['Date']; ?></td> 
     <td><?php echo $row_newsitems['Subject']; ?></td> 
     <td><?php echo $row_newsitems['Message']; ?></td> 
     </tr> 
     <?php } while ($row_newsitems = mysql_fetch_assoc($newsitems)); ?> 

一些可能看起來很怪異,所以讓我解釋...動態列表(下拉列表)被稱爲「dropdowndate」和方式被稱爲「choosedate」有一個叫按鈕「提交'以提交表格。 FORMATTEDDATE是爲記錄集提供下拉菜單動態列表的名稱。

我想從用戶的POST時,該動態列表中的值插入到查詢中,如我所說... SELECT Date,主題,消息從新聞WHERE date = $ _POST ['dropdowndate']「;(THIS BIT也許是錯誤的)

羅布

+0

代碼請。這將是最好的使用$ _POST ['fieldname'] –

+0

不要忘記驗證輸入或轉義它,請參閱mysqli_real_escape_string() – Andy

回答

0
SELECT date, subject, message FROM news WHERE date = $_POST['fieldvalue'] 

$ _POST變量包含表單發佈時發送的所有數據。字段值應該與您給選擇字段的名稱相對應。

這將開放注射,所以請確保您使用合理的安全措施。

如果您希望在不刷新的情況下獲取數據,則需要使用AJAX,以下內容對其進行了精美的介紹http://net.tutsplus.com/tutorials/javascript-ajax/submit-a-form-without-page-refresh-using-jquery/如果您需要更多信息,請點擊此處。

+0

感謝 - 請參閱編輯有關主要問題 –

+0

@RobHatton我剛剛閱讀它,我不確定的部分是,你是否試圖做到這一點,而無需刷新頁面(AJAX),或者這並不重要,你只是想刷新正常形式。如果你告訴我,我可以更有幫助:) –

0

一個HTML下拉

<form method="POST"> 
<select name="animal"> 
    <option value="dog">Dog</option> 
    <option value="cat">Cat</option> 
</select> 
</form> 

一個實例如何捕捉用PHP的信息的一個例子

<?php 
    echo $_POST['animal']; 
?> 
+0

謝謝,我將如何使用此POST在同一頁上的SQL SELECT查詢? –

+0

@RobHatton:'$ sql = mysql_query('SELECT * FROM pets WHERE type ='。$ POST ['animal']);'您可以根據自己的目的調整它,不要忘記接受答案,不管它是什麼。 –

+1

@RobHatton,上面有一個sintax錯誤,正確的句子是'$ sql = mysql_query(「SELECT * FROM pets WHERE type ='$ _POST ['animal']'」);',假設「animal」是一個數據庫中的字符串字段。你不直接在你的查詢中使用'$ _POST ['animal']'是非常重要的,你會對[SQL注入攻擊]非常脆弱(http://www.google.com.br/url?sa = T&RCT = J&q = SQL +注入+堆棧+溢出&源=幅和CD = 1&VED = 0CFYQFjAA&URL = HTTP%3A%2F%2Fstackoverflow.com%2Fquestions%2F601300%2Fwhat-是-SQL注入&EI = vu3kT53MA4T69QSL1b3lDg&USG = AFQjCNF_kQfZ7pJb7QOCb1VmHDMGFRPcNw及CAD = RJA)。 –

0

您是否希望在用戶從下拉菜單中選擇某項內容時加載記錄,或者是否希望將其加載到頁面中?

在第一種情況下,您需要使用Ajax將記錄置於後臺。

在另一種情況下,您可以執行類似於您在加載頁面時發佈的聲明。

+0

感謝您的輸入到目前爲止,我感謝您的幫助 - 儘管我似乎正在製作這個PHP頁面的右狗晚餐! –

0
$select = $_POST['dropdowndate']; 
$sql = "SELECT * FROM table WHERE attribute = '$select'" or die (mysql_error()); 
+0

我可以在這裏問問題嗎?它對我來說非常緊迫:'( – tira