2013-08-02 98 views
0

我一直在爲一個婚禮網站製作一個定製的結婚禮物註冊表,我一直在建設,一段時間它似乎工作正常,但現在它似乎不工作,我不是知道爲什麼......PHP表格沒有正確更新SQL數據庫

禮物登記的工作方式如下:

  • 它使用基於MySQL數據庫的更新的動態表;並且,
  • 在用戶輸入「禮品的選擇」,並使用PHP的形式更新的MySQL數據庫,以便禮物的狀態變得不可用(這反映在表)
  • 代碼最初HTML表單會更新動態表格並刷新頁面,以便用戶可以看到他們選擇的禮物現在已被「取走」(刷新很重要,否則表格內容將不會更新)。現在發生的情況是,當用戶填寫表單並單擊提交時,表單條目似乎不會被輸入到數據庫中。

    該代碼,這是一個完整的背,我從來沒有使用PHP,SQL或JavaScript在此之前(我曾涉獵一點在HTML),所以很自然,我認爲我是有點失落..

    那麼有人知道我出錯了嗎?

    我希望任何人都能給予幫助。


    的代碼如下:

    以下構建動態表

    <?php 
    echo"<thead> 
    <tr> 
    <th>Gift</th> 
    <th>Price</th> 
    <th>Where to buy</th> 
    <th>Availability</> 
    </tr> 
    </thead>"; 
    
    $dbc = mysqli_connect('localhost','XXXXX','XXXXX','XXXXX_giftregistry') or die('Error connecting to MYSQL server.'); 
         $results = mysqli_query($dbc,"SELECT gift_name, price, where_to_buy, status FROM gift_reg"); 
    
         while($row = mysqli_fetch_array($results)) { 
         ?> 
          <tr> 
           <td><?php echo $row['gift_name']?></td> 
           <td><?php echo $row['price']?></td> 
           <td><?php echo $row['where_to_buy']?></td> 
           <td><?php echo $row['status']?></td> 
          </tr> 
    
         <?php 
         } 
         ?> 
    
         </table> 
    

    下一部分是表單提交代碼

    <?php 
    $person_gifting = $_POST['name']; 
    $status = $_POST['status']; 
    $gift_name = $_POST['gift_name']; 
    
    if ($_POST['submit']) { 
    $dbc = mysqli_connect('localhost','XXXXXX','XXXXXX','XXXXX_giftregistry') or die('Error connecting to MYSQL server.'); 
    mysqli_query($dbc,"UPDATE gift_reg SET person_gifting = '$person_gifting' WHERE gift_name = '$gift_name'") or die ('Error querying database.'); 
    mysqli_query($dbc,"UPDATE gift_reg SET status = '$status' WHERE gift_name = '$gift_name'") or die ('Error querying database.'); 
    mysqli_close($dbc); 
    echo "<script> formSubmit()</script>"; 
    } 
    

    下一節是形成。

    echo "<form method='post' action='index.php'><label>Name</label><input name='name' placeholder='Type Here' required><label>What gift would you like to give?</label>"; 
    
    
    $dbc = mysqli_connect('localhost','XXXXX','XXXXX','XXXXX_giftregistry') or  die('Error connecting to MYSQL server.'); 
    $query="SELECT gift_name FROM gift_reg WHERE status='Available'"; 
    $result = mysqli_query ($dbc,$query); 
    echo "<select name='gift_name'>"; 
    
    while($nt=mysqli_fetch_array($result)){ 
    echo "<option value=$nt[gift_name]>$nt[gift_name]</option>"; 
    } 
    
    echo "</select>"; 
    mysqli_close($dbc); 
    ?> 
    
    
    <label>Have you already purchased this gift?</label> 
    <input name='status' type="radio" value="Taken" id="r1" required> 
    <label for="r1"><span></span> Already purchased </label> 
        <input name='status' type="radio" value="Taken" id="r2" required> 
        <label for="r2"><span></span> Going to purchase </label> 
    
    <input id="submit" name="submit" type="submit" value="Submit"> 
    
    
    </form> 
    

    的formSubmit()是指:

    <script> 
    function formSubmit() { 
    window.location.reload(); 
    } 
    </script> 
    
    +0

    在我看來,你重新加載頁面,而不是提交表單 –

    +1

    不是你

    B) '正在問,但[你的SQL代碼極其脆弱](http:// stackoverflow。COM /問題/ 332365 /如何 - 做最SQL注入,來自該鮑比 - 表 - XKCD可笑的工作)。 – bfavaretto

    +0

    我可能錯過了一些東西,但是「現在不工作」?是否有一些錯誤信息?插入了錯誤的數據還是沒有數據?服務器崩潰?還有別的嗎? –

    回答

    0

    嘗試改變

    while($nt=mysqli_fetch_array($result)){ 
        echo "<option value=$nt[gift_name]>$nt[gift_name]</option>"; 
    } 
    

    while($nt=mysqli_fetch_array($result)){ 
        echo "<option value=\"{$nt['gift_name']}\">{$nt['gift_name']}</option>"; 
    } 
    

    這部作品的原因是:

    a)當$ nt [giftname]與$ nt ['giftname']不同時,引用一個數組元素,第一個數組元素的鍵值等於constant的值,稱爲'giftname',其中後者正在尋找一個帶有'giftname'鍵的數組元素。根據該文件類型與您的合作應該使用值=「值」,而不是價值=價值

    +0

    不知道爲什麼你被拒絕,因爲這個工程。謝謝你幫助我! –

    +0

    可能是因爲我沒有提供很多關於它爲什麼有效的解釋,請參閱編輯。別擔心! – JohnnyFaldo