php
  • html
  • 2014-09-24 20 views 0 likes 
    0

    我的頁面中的代碼量越來越大。單獨來說,我對所有各個部分的工作原理都有一個很好的理解,但我不明白他們是如何運作的。代碼的第一位我有一個SQL數據庫拉一個名稱,然後將其傳遞到另一個表,由我所選擇的名稱進行排序該表:瞭解PHP POST以及如何提交多個命令

    <form method="post" enctype="multipart/form-data"> 
    <table id="" summary="PAGE HEADER" style='width:20%'> 
    <tr> 
        <th> 
        <?php 
        include('./db.php'); 
        $PM = mysqli_query($con, "SELECT DISTINCT PMName FROM report ORDER BY PMName ASC"); 
        ?> 
        <b style="font-family: Candara, Calibri, Segoe, Optima, Arial, sans-serif;">Choose PM: </b> 
        <br> 
        <span class="custom-dropdown custom-dropdown--red">  
        <Select class="custom-dropdown__select custom-dropdown__select--red" name="PMName" onChange="submit(this.form)"<> 
        <?php 
        while ($row = mysqli_fetch_row($PM)) { 
        $selected = array_key_exists('PMName', $_POST) && $_POST['PMName'] == $row[0] ? ' selected' : ''; 
        $sel = ($table === $row[0]) ? "id='sel' selected" : ""; 
        printf(" <option value='%s' %s>%s</option>\n", $row[0], $selected, $row[0]); 
        } 
        ?> 
        </th> 
    </span> 
    </tr> 
    </select>  
    </form> 
    

    ,因爲結果是巨大的,我已經建立在某種「上一頁,下一頁」交易中,用戶一次只能顯示10個結果。

    <?php 
    if (isset($_POST['next'])) { 
    $postedLimit = (isset($_POST['next']) ? (int) $_POST['next'] : 0); 
    $nextLimit = $postedLimit + 10; 
    session_start(); 
    $_SESSION['page'] = ((int) $nextLimit/10)+1; 
    $result = mysqli_query($con, "SELECT * FROM report WHERE PMName = '$PMSelection' AND REGNSB <> 0.000 ORDER BY RegNSB DESC Limit $nextLimit,$LimitItems"); 
    } 
    ?> 
    
    <table id="box-table-a" stlye="widgth:20%"> 
    <form method="POST" action=""> 
    <div class="container"> 
    <div class="right">Page <?= $_SESSION['page'] ?> of <?= $totalPages ?> 
    <input type="submit" name="next" value="next" onclick="this.value=<?php echo $nextLimit; ?>"> 
    </div></form></div></table> 
    

    我的問題是,當我點擊這個「下一步」按鈕,該查詢運行:

    $result = mysqli_query($con, "SELECT * FROM report WHERE PMName = '$PMSelection' AND REGNSB <> 0.000 ORDER BY RegNSB DESC Limit $nextLimit,$LimitItems"); 
    

    但是,(原諒整件事是如何工作的我不認識...) $ PMSelection現在是空的,並且沒有將任何值傳遞給SQL查詢,所以無論我通過哪個名稱過濾掉列表,都會消失。我來自VBA的世界,在那裏我定義了一些東西,我可以永遠使用它...爲什麼$ PMSelection有一個值,然後沒有價值,對我來說是非常困惑....

    我的問題是:

    1. 爲什麼$ PMSelection,一旦確定和以前使用的,而不是仍然可後來當我嘗試使用它?
    2. 我該如何讓$ PMSelection在某處/某種程度上被保持,這樣我才能在第二個代碼中訪問它?
    +0

    如果您執行'$ PMSelection ='whatever'',那麼您執行該頁面,該值將設置爲該頁面的生命週期。如果轉到新頁面,如果該值未被重新分配,則不存在。這就是爲什麼我們在php中有'$ _SESSION'的原因,因爲它允許您以全局方式存儲對值的引用。 – Ohgodwhy 2014-09-24 19:49:06

    回答

    0

    在第一頁,你必須變量$PMSelection漫天投入到您的$_SESSION這樣的:

    if (!empty($_POST['PMName'])) { 
        $_SESSION['PMSelection'] = $_POST['PMName']; 
    } 
    

    和第二頁,如果是後來被稱爲,能得到這個值回這樣的:

    $PMSelection = $_SESSION['PMSelection']; 
    

    你可以用你所有的數據做到這一點。

    另一種方式

    如果第一頁的<form>元素將派遣它的數據就其提交的第二頁,那麼你會得到$_POST陣列中的所有輸入字段數據時,第二頁被調用。但是,你必須改變你的<form>標籤是這樣的:

    <form action="second_page.php" method="post" enctype="multipart/form-data"> 
    

    ,如果有與此數據表單沒有輸入元素,數據不敏感,你可以做一個隱藏的輸入字段,並把你的數據它,就像這樣:

    <input type="hidden" name="PMSelection" value="{value}" /><!-- single data --> 
    
    <input type="hidden" name="PMSelection[]" value="{value1}" /><!-- array data --> 
    <input type="hidden" name="PMSelection[]" value="{value2}" /> 
    <input type="hidden" name="PMSelection[]" value="{value2}" /> 
    [...] 
    
    +0

    我想我不清楚 - 沒有任何實際的第二頁。當用戶點擊「上一個」或「下一個」時,我在表中執行該命令: $ result = mysqli_query($ con,「SELECT * FROM report WHERE PMName ='$ PMSelection'AND REGNSB <> 0.000 ORDER BY RegNSB DESC Limit $ nextLimit,$ LimitItems「); $ nextLimit和$ LimitItems顯示它們的SQL Entires 0-10,然後是10-20,然後是20-30等。但是,當我單擊下一個按鈕時,值或$ PMSelection將重置.... – lordterrin 2014-09-24 20:13:25

    +0

    @lordterrin我在你的示例代碼中看不到它。你第二次在哪裏使用變量?另一件事是,我看不到'$ PMSelection'從哪裏來...... – algorhythm 2014-09-24 20:16:07

    +0

    @lordterrin另一件事是,你不需要兩頁來使用'$ _SESSION'。您也可以在一個頁面中使用它。在第一次出現'$ PMSelection'時,把它放在會話中,然後再把它拿回來。 – algorhythm 2014-09-24 20:17:06

    0

    使用$_SESSION如果你想一旦你存儲在會話值用它在不同的頁面,或在你的語言代碼的第二位,那麼你就可以使用它。

    相關問題