2016-11-30 10 views
1

Daten werden auf einer Seite (all.php) angezeigt, indem die Werte aus der Tabelle abgerufen werden. Das Hauptproblem ist hier, wenn ich die Seite mit "f5-key" oder "refresh-icon" aktualisiere In Chrome bleiben die Daten gut, aber sobald ich die URL auswähle und "Enter" drücke, verschwinden die Daten. Was könnte der Grund sein?Daten werden nach dem Aktualisieren der Seite nicht angezeigt

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

Wahrscheinlich, weil, wenn Sie f5 Form drücken wird erneut gesendet, während, wenn Sie in der Adressleiste eingeben drücken ist es nicht . – Cyclonecode

+1

Sie haben zuerst die POST- und GET-Anfrage verstanden. Nun kommen Sie zu Ihrem Problem, wenn Sie die Seite aktualisieren, indem Sie die f5-Taste oder den Browser aktualisieren senden Sie die POST-Anfrage erneut an die all.php, aber wenn Sie die EINGABETASTE drücken durch Auswahl der URL sendet GET-Anfrage, warum Sie nicht sind die Daten bekommen. – Bokul

Antwort

1

Sie die Datenbank nur die Abfrage, ob eine Anforderung POST gibt. Wenn Sie die Seite erneut laden, verwenden Sie die Methode "click and enter", die in Ihrem Beitrag beschrieben wird. Es gibt keine POST-Anfrage mehr, sondern nur eine GET-Anfrage.

Ihr Skript speichert die Daten, die Sie aus dem Formular senden, auch nicht in DB.

Der Teil des Codes, der die Datenbank abfragt, sollte aus dem if-Blocktest für eine POST-Anforderung entfernt werden, und innerhalb dieses if-Blocks sollten Sie eine (neue) Methode zum Speichern der Daten in der Datenbank aufrufen.

all.php sollte wie folgt aussehen:

$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

Daten nicht Anzeige wird, wenn Sie direkt auf URL gehen, weil der IF-Bedingung ist, die für $ _POST Variable überprüft.

Was ich meine ist, dass, wenn Sie auf Senden Schaltfläche klicken, sendet es die Post-Daten (In diesem Fall ist es die Schaltfläche), so dass Daten angezeigt werden.

Jetzt, wenn Sie auf Aktualisieren klicken oder F5 drücken, sendet Ihr Browser die letzte Anfrage erneut (In diesem Fall ist es dasselbe wie wenn Sie auf Senden klicken, der die Post-Daten enthält), so dass Ihre Daten in diesem Fall angezeigt werden.

Aber wenn Sie direkt zu Ihrer URL gehen, enthält es keine Post-Daten mehr und so wird Ihre If-Bedingung falsch und die Daten werden nicht mehr angezeigt.

Dies könnte nicht viel von Hilfe sein, weil ich denke, es ist schon beantwortet ...

Verwandte Themen