2016-11-30 219 views
1

通過從表中檢索值,數據顯示在頁面(all.php)中。主要問題在於如果使用「f5-key」或「refresh-icon」刷新頁面,在鉻的數據保持良好,但一旦我選擇的網址和點擊「輸入」數據消失。可能是什麼原因?刷新頁面後數據不顯示

的index.php

<form action="all.php" method="post"> 
    <p>Get all the Codes</p> 
    <input type="submit" name="all" > 
</form> 

all.php

<?php 
    require 'config.php'; 

    if(isset($_POST['all'])) 
    { 
     $new_obj= new config; 
     $rows= $new_obj->Get_All(); 
     foreach($rows as $variable => $value){ 
     echo $value['EAN'].$value['ProductCode']."</br>"; 
    } 
} 

的config.php

<?php 

class config 
{ 
    function Get_ALL() 
    { 
     try { 
      $conn = new PDO('mysql:host=localhost;dbname=test',$this->config['username'],$this->config['password']); 
      $conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 
      $stmt=$conn->prepare("select EAN,ProductCode from code"); 
      $stmt->execute(); 
      //$rows = $stmt->fetch(PDO::FETCH_ASSOC); 
      $rows = $stmt->fetchall(); 
      return $rows; 
     } 
     catch(PDOException $e) 
     { 
      echo 'Error:'. $e->getMessage(); 
     } 
    } 
} 

$new_obj= new config; 
+1

可能是因爲當你按下F5鍵的形式重新發送,而如果按在地址欄中輸入它不是。 – Cyclonecode

+1

您已經先了解POST和GET請求。現在通過點擊f5按鈕刷新頁面或刷新瀏覽器再次發送POST請求到all.php時遇到問題,但是當您按ENTER按鈕時,通過選擇URL發送GET請求,說明您爲什麼不是獲取數據。 – Bokul

回答

1

你只查詢數據庫,如果有一個POST請求。 當你再次加載頁面時,使用你的文章中描述的「click and enter」方法,不再有POST請求,但只有GET請求。

您的腳本也不會在數據庫中保存您從表單發送的數據。

查詢數據庫的代碼部分應該從if區塊測試POST Resquest中取出,並且在這個區塊中您應該調用一個(新)方法將數據保存到數據庫中。

all.php應該是這個樣子:

$new_obj= new config; 
    if(isset($_POST['all'])) 
    { 
     // save data in database 
    } 


    $rows= $new_obj->Get_All(); 
    foreach($rows as $variable => $value){ 
     echo $value['EAN'].$value['ProductCode']."</br>"; 
    } 
1

數據沒有被顯示時,你直接去URL是因爲檢查$ _ POST變量,如果條件。

我的意思是,當你點擊提交按鈕時,它發送發佈數據(在這種情況下,它是按鈕),所以數據顯示。

現在,當您點擊刷新按鈕或點擊F5時,瀏覽器會重新發送最後一個請求(在這種情況下,與點擊具有發佈數據的提交按鈕相同),這樣您的數據就會顯示在這種情況下。

但是,當您直接轉到您的網址時,它不再包含發佈數據,因此您的if條件變爲false並且數據將不再顯示。

這可能不會有太大的幫助,因爲我認爲這是已經回答了...