2016-11-30 8 views
1

Данные отображаются на странице (all.php) путем извлечения значений из таблицы. Основная проблема здесь в том, что если я обновляю страницу с помощью «f5-key» или «refresh-icon», в хроме данные остаются хорошими, но как только я выберу URL и ударяю «введите», данные исчезнут. Что может быть причиной?Данные не отображаются после обновления страницы

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. Когда вы снова загружаете страницу, используя метод «нажмите и введите», описанный в вашем сообщении, больше нет запроса POST, а только запрос GET.

Ваш скрипт также не сохраняет в БД данные, которые вы отправляете из формы.

Часть кода, запрашивающего базу данных, должна быть удалена из проверки блока if для POST Resquest и внутри этого блока if вы должны вызвать (новый) метод для сохранения данных в базе данных.

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 из-IF условие, которое проверяет на $ _POST переменной.

Что я имею в виду, когда вы нажимаете кнопку отправки, он отправляет данные Post (в данном случае это кнопка), поэтому отображаются данные.

Теперь, когда вы нажимаете кнопку обновления или нажимаете F5, ваш браузер повторно отправляет последний запрос (в этом случае это то же самое, что и при нажатии кнопки отправки, которая имеет данные «Постов»), поэтому ваши данные отображаются в этом случае.

Но когда вы переходите напрямую к своему URL-адресу, он больше не содержит данных «Постов», поэтому ваше условие if становится ложным, и данные больше не будут отображаться.

Это не может быть много помощи, потому что я думаю, что это уже был дан ответ ...

Смежные вопросы