2017-04-05 44 views
-1

SO。我在這個WordPress的網站上工作。這相信我很煩人。所以我有這個PHP和HTML組合的龐大代碼。在表單提交之前,一切都顯得很好。當頁面刷新時,它會加載到同一頁面(具有相同的URL),但會出現404錯誤。將HTML/PHP表單提交至404 Eorror

<center> 
    <code> 
    [insert_php] 
     // Info to connect to the Wishlist database 
     $servername = "eggcavity.com"; 
     $dbusername = "******"; 
     $password = "*******"; 
     $dbname = "EggcavityTravelIndex"; 

     try { 
     // To connect to the database please 
     $conn = new mysqli($servername, $dbusername, $password, $dbname); 

     if ($conn->connect_error) { 
      die('Connect Error (' . $conn->connect_errno . ') ' . $conn->connect_error); 
     } 

     // Get current user's username 
     $current_user = wp_get_current_user(); 
     $username = $current_user->user_login; 
     $allowed_roles = array('moderator', 'administrator'); 

     if ($username == "") { 
      // If person is not logged in 
      echo "Please login to see if you have moderator privileges."; 
     } else if (array_intersect($allowed_roles, $current_user->roles)) { 
      // If person is logged in and has moderator privileges, show the page 

      $page = 1; 

      if($_SERVER['QUERY_STRING'] != ""){ 
      $page = $_SERVER['QUERY_STRING']; 
      } 

      if(isset($_POST['submit'])){ 
      $ids = $_POST['ids']; 
      $theCount = 0; 

      // Prepare and bind the udpate statement 
      $sql2 = "UPDATE Travels SET Name = ?, Picture = ?, Price = ?, " . 
       "Description = ?, Rarity = ?, Status = ? WHERE ID = ?"; 
      $stmt2 = $conn->prepare($sql2); 
      $stmt2->bind_param('ssssssi', $name, $picture, $price, $description, $rarity, $status, $id); 

      foreach($ids as $id){ 
       $namecode = $id . "name"; 
       $picturecode = $id . "picture"; 
       $pricecode = $id . "price"; 
       $raritycode = $id . "rarity"; 
       $descriptioncode = $id . "description"; 
       $statuscode = $id . "status"; 
       $name = $_POST[$namecode]; 
       $picture = $_POST[$picturecode]; 
       $price = $_POST[$pricecode]; 
       $rarity = $_POST[$raritycode]; 
       $description = $_POST[$descriptioncode]; 
       $status = $_POST[$statuscode]; 
       $stmt2->execute(); 
      } 

      if(isset($_POST['delete'])) { 
       $delete=!empty($_POST['delete']) ? $_POST['delete'] : false; 
       if($delete && !is_array($delete)){ 
        $delete=explode(',',$delete); 
       } 

       foreach($delete as $id){ 
        $sql = "DELETE FROM Travels WHERE ID = ?"; 
        $stmt = $conn->prepare($sql); 
        $stmt->bind_param('i', $id); 
        $stmt->execute(); 
        $theCount++; 
       } 
       } 
       echo "<font size='3'>The travel database has been updated, and " . $theCount . 
       " travels(s) has/have been removed."; 
      } else { 
       // Just display the form 
       $start = 0; 
       $stop = 100; 
       if ($page == "2") { 
       $start = 100; 
       $stop = 100; 
       } else if ($page == "3") { 
       $start = 200; 
       $stop = 100; 
       } else if ($page == "4") { 
       $start = 300; 
       $stop = 100; 
       } else if ($page == "5") { 
       $start = 400; 
       $stop = 100; 
       } else if ($page == "6") { 
       $start = 500; 
       $stop = 100; 
       } else if ($page == "7") { 
       $start = 600; 
       $stop = 100; 
       } else if ($page == "8") { 
       $start = 700; 
       $stop = 100; 
       } else if ($page == "9") { 
       $start = 800; 
       $stop = 100; 
       } else if ($page == "10") { 
       $start = 900; 
       $stop = 100; 
       } else if ($page == "11") { 
       $start = 1000; 
       $stop = 100; 
       } else if ($page == "12") { 
       $start = 1100; 
       $stop = 100; 
       } else if ($page == "13") { 
       $start = 1200; 
       $stop = 100; 
       } else if ($page == "14") { 
       $start = 1300; 
       $stop = 100; 
       } else if ($page == "15") { 
       $start = 1400; 
       $stop = 100; 
       } 
       $sql = 'SELECT * FROM Travels LIMIT ' . $start . ',' . $stop; 
       $result = mysqli_query($conn, $sql); 
       $sql11 = 'SELECT * FROM Travels'; 
       $result11 = mysqli_query($conn, $sql11); 
       $numtravels = mysqli_num_rows($result11); 
       if ($numtravels > 0) { 
       $numpages = ceil($numtravels/100); 
       $cnt = 1; 
       echo 'Pages: '; 
       while ($cnt <= $numpages){ 
        echo '<a style="border-style:solid;border-radius:5px;border-width:1px;padding:2px;" href="?' . $cnt . '">' 
        . $cnt . '</a> '; 
        $cnt++; 
       } 
       echo '<br><br>'; 
       $begin = $start + 1; 
       $end = $begin + 99; 
       echo '<form method="POST"><table style="border-collapse: collapse";>' . 
        'Travels ' . $begin . ' to ' . $end; 

       while($row = $result->fetch_assoc()) { 
        $name = $row["Name"]; 
        $id = $row["ID"]; 
        $picture = $row["Picture"]; 
        $price = $row["Price"]; 
        $rarity= $row["Rarity"]; 
        $description = $row["Description"]; 
        $status= $row["Status"]; 
        echo '<tr>'; 
        echo '<td rowspan="2" style="border:1px solid gray;text-align:center;"><br><img src="' . $picture . '"></td>'; 
        echo '<td style="border:1px solid gray;text-align:center;">' . 
        '<strong>Name: </strong><input type="text" name="' . $id . 'name" value="' . $name . '"></td>'; 
        echo '<td style="border:1px solid gray;text-align:center;">' . 
        '<strong>Image URL: </strong><input type="text" name="' . $id . 'picture" value="' . $picture . '"></td>'; 
        echo '<td style="border:1px solid gray;text-align:center;">' . 
        '<strong>Price: </strong><input type="text" name="' . $id . 'price" value="' . $price . '"></td>'; 
        echo '<td style="border:1px solid gray;text-align:center;">' . 
        '<strong>Rarity: </strong><input type="text" name="' . $id . 'rarity" value="' . $rarity . '"></td>'; 
        echo '</tr>'; 
        echo '<td colspan="2" style="border:1px solid gray;text-align:center;">' . 
        '<strong>Description: </strong><br><input style="width:300px" type="text" name="' . $id . 'description" value="' . $description . '"></td>'; 
        echo '<td style="border:1px solid gray;text-align:center;"><strong>Status: </strong><br><select name="' . $id . 'status">' . 
        '<option value ="' . $status . '" selected>' . $status . '</option>'; 
        if ($status == "Available") { 
        echo '<option value ="Retired">Retired</option>'; 
        } else if ($status == "Retired") { 
        echo '<option value ="Available">Available</option>'; 
        } else if ($status == "") { 
        echo '<option value ="Retired">Retired</option>'; 
        echo '<option value ="Available">Available</option>'; 
        } 
        echo '</select></td>'; 
        echo '<td style="border:1px solid gray;text-align:center;">' . '<strong>Delete</strong><br>' . 
        '<input type="checkbox" name="delete[]" value="' . $id . '"></td>'; 
        echo '</tr>'; 
       } 
       echo '</table><br><input name="submit" type="submit" id="submit" value="Update">' . 
       '</form><br><br>'; 
      } else { 
       echo "<br>There are no travels in the database."; 
      } 
      } 

     } else { 
      // If person is logged in but does not have mod privileges 
      echo "Sorry, you're not a moderator!"; 
     } 

     } catch (mysqli_sql_exception $e) { 
     throw $e; 
     } 
     // Close the connection to the database 
     $conn->close(); 
    [/insert_php] 
    </code> 
</center> 

Here is a picture of the form 這是形式

And a picture after submitting the form 這是提交後的頁面。

該代碼是類似於我有工作的頁面。如下所示:

<center> 
    <code> 
    [insert_php] 
     // Info to connect to the Wishlist database 
     $servername = "eggcavity.com"; 
     $dbusername = "********"; 
     $password = "*******"; 
     $dbname = "EggcavityTravelIndex"; 

     try { 
     // To connect to the database please 
     $conn = new mysqli($servername, $dbusername, $password, $dbname); 
     if ($conn->connect_error) { 
      die('Connect Error (' . $conn->connect_errno . ') ' . $conn->connect_error); 
     } 

     // Get current user's username 
     $current_user = wp_get_current_user(); 
     $username = $current_user->user_login; 

     if ($username == ""){ 
      echo "Please login to use wishlist feature."; 
     } else { 

     echo "<font size ='3'><br>Please click <strong>" . 
      "<a href = 'http://eggcavity.com/add-wishlist'>here</a></strong>" . 
      " to add creatures to your wishlist.<br><br>Please click <strong>" . 
      "<a href='http://eggcavity.com/wishlists'>here</a></strong> to view your wishlist.<br>" . 
      "<br>At the moment when you enter notes you cannot view them on the edit page." . 
      "<br>Please go to the view wishlist page to see your notes.<br><br></font>"; 

     $page = 1; 
     if($_SERVER['QUERY_STRING'] != ""){ 
      $page = $_SERVER['QUERY_STRING']; 
     } 

     if(isset($_POST['submit'])){ 
      $ids = $_POST['ids']; 
      $theCount = 0; 

      // Prepare and bind the udpate statement 
      $sql2 = "UPDATE Wishlists SET Picture = ?, Stage = ?, Gender = ?, " . 
      "Frozen = ?, Notes= ? WHERE ID = ?"; 
      $stmt2 = $conn->prepare($sql2); 
      $stmt2->bind_param('sssssi', $picture, $stage, $gender, $frozen, $notes, $id); 

      foreach($ids as $id){ 
      $stagecode = $id . "stage"; 
      $gendercode = $id . "gender"; 
      $frozencode = $id . "frozen"; 
      $notescode = $id . "notes"; 
      $namecode = $id . "creature"; 
      $stage = $_POST[$stagecode]; 
      $Stage = $stage; 
      $gender = $_POST[$gendercode]; 
      $frozen = $_POST[$frozencode]; 
      $notes = $_POST[$notescode]; 
      $name = $_POST[$namecode]; 
      $sql1 = 'SELECT * FROM Creatures WHERE Name = "' . $name . '"'; 
      $result = mysqli_query($conn, $sql1); 
      $row = $result->fetch_assoc(); 
      $picture = $row["$stage"]; 
      $stmt2->execute(); 
      } 

      if(isset($_POST['delete'])) { 
      $delete=!empty($_POST['delete']) ? $_POST['delete'] : false; 
       if($delete && !is_array($delete)){ 
       $delete=explode(',',$delete); 
       } 

       foreach($delete as $id){ 
       $sql = "DELETE FROM Wishlists WHERE ID = ?"; 
       $stmt = $conn->prepare($sql); 
       $stmt->bind_param('i', $id); 
       $stmt->execute(); 
       $theCount++; 
       } 
      } 
      echo "<font size='3'>Your wishlist has been updated, and " . $theCount . 
       " creature(s) has/have been removed from your wishlist.<br><br>Please click <u>" . 
       "<strong><a href='http://eggcavity.com/edit-wishlist'>here</a></u></strong>" . 
       " to return to the edit page.</href><br><br>"; 
      } else { 
      // Just display the form 
      $start = 0; 
      $stop = 100; 
      if ($page == "2") { 
       $start = 100; 
       $stop = 100; 
      } else if ($page == "3") { 
       $start = 200; 
       $stop = 100; 
      } else if ($page == "4") { 
       $start = 300; 
       $stop = 100; 
      } else if ($page == "5") { 
       $start = 400; 
       $stop = 100; 
      } else if ($page == "6") { 
       $start = 500; 
       $stop = 100; 
      } else if ($page == "7") { 
       $start = 600; 
       $stop = 100; 
      } else if ($page == "8") { 
       $start = 700; 
       $stop = 100; 
      } else if ($page == "9") { 
       $start = 800; 
       $stop = 100; 
      } else if ($page == "10") { 
       $start = 900; 
       $stop = 100; 
      } else if ($page == "11") { 
       $start = 1000; 
       $stop = 100; 
      } else if ($page == "12") { 
       $start = 1100; 
       $stop = 100; 
      } else if ($page == "13") { 
       $start = 1200; 
       $stop = 100; 
      } else if ($page == "14") { 
       $start = 1300; 
       $stop = 100; 
      } else if ($page == "15") { 
       $start = 1400; 
       $stop = 100; 
      } 
      $sql = 'SELECT * FROM Wishlists WHERE Username = "' . $username . 
       '" ORDER BY Creature LIMIT ' . $start . ',' . $stop; 
      $result = mysqli_query($conn, $sql); 
      $sql11 = 'SELECT * FROM Wishlists WHERE Username = "' . $username . '"'; 
      $result11 = mysqli_query($conn, $sql11); 
      $numcreatures = mysqli_num_rows($result11); 
      if ($numcreatures > 0) { 
       $numpages = ceil($numcreatures/100); 
       $cnt = 1; 
       echo 'Pages: '; 
       while ($cnt <= $numpages){ 
       echo '<a style="border-style:solid;border-radius:5px;border-width:1px;padding:2px;" href="?' . $cnt . '">' 
        . $cnt . '</a> '; 
       $cnt++; 
       } 
       echo '<br><br>'; 
       $begin = $start + 1; 
       $end = $begin + 99; 
       echo '<form method="POST"><table style="border-collapse: collapse";><strong>' . 
       'Creatures ' . $begin . ' to ' . $end . 
       '<tr>' . 
        '<td>' . $numcreatures . ' creatures</td>' . 
        '<td style="border:1px solid gray;text-align:center;">Creature</td>' . 
        '<td style="border:1px solid gray;text-align:center;">Stage</td>' . 
        '<td style="border:1px solid gray;text-align:center;">Gender</td>' . 
        '<td style="border:1px solid gray;text-align:center;">Frozen</td>' . 
       '</tr></strong>'; 

       while($row = $result->fetch_assoc()) { 
       $creature = $row["Creature"]; 
       $id = $row["ID"]; 
       $picture = $row["Picture"]; 
       $stage = $row["Stage"]; 
       $sql3 = 'SELECT * FROM Creatures WHERE Name = "' . $creature . '"'; 
       $result2 = mysqli_query($conn, $sql3); 
       $row2 = $result2->fetch_assoc(); 
       echo '<input name="ids[]" type="hidden" value="' . $id . '">' . 
        '<input name="' . $id . 'creature" type="hidden" value="' . $creature . '">' . 
        '<tr>' . 
        '<td rowspan="2" style="border:1px solid gray;text-align:center;"><img src="' . 
         $picture . '"></td>' . 
        '<td style="border:1px solid gray;text-align:center;">' . $creature . '</td>' . 
        '<td style"border:1px solid gray;text-align:center;"><select name="' . $id . 
         'stage">' . 
         '<option value ="' . $stage . '" selected>' . $stage . '</option>' . 
         '<option value = "Stage1">Stage1(Egg)</option>' . 
         '<option value = "Stage2">Stage2</option>'; 

       if ($row2["Stage3"] != "") { 
        echo '<option value = "Stage3">Stage3</option>'; 
       } 

       if ($row2["Stage4"] != "") { 
        echo '<option value = "Stage4">Stage4</option>'; 
       } 
       echo '</select></td>' . 
        '<td style="border:1px solid gray;text-align:center;"><select name="' . $id . 
        'gender">' . 
        '<option value ="' . $row["Gender"]. '" selected>' . $row["Gender"] . '</option>' . 
        '<option value = "Unspecified">Unspecified</option>' . 
        '<option value = "Female">Female</option>' . 
        '<option value = "Male">Male</option>' . 
        '</select></td>' . 
        '<td style="border:1px solid gray;text-align:center;"><select name="' . $id . 
        'frozen">' . 
        '<option value ="' . $row["Frozen"] . '" selected>' . $row["Frozen"] . '</option>' . 
        '<option value="Unspecified">Unspecified</option>' . 
        '<option value="Yes">Yes</option>' . 
        '<option value="No">No</option>' . 
        '</select></td>' . 
       '</tr>' . 
       '<tr>' . 
        '<td style="border:1px solid gray;text-align:center;" colspan="3">Notes: ' . 
        '<input type="text" name="' . $id . 
        'notes" value="' . $row["Notes"] .'"></td>' . 
        '<td style="border:1px solid gray;text-align:center;">' . 'Delete<br>' . 
        '<input type="checkbox" name="delete[]" 
        value="' . $id . '"></td>' . 
       '</tr>'; 
       } 
       echo '</table><br><input name="submit" type="submit" id="submit" value="Update">' . 
       '</form><br><br>'; 
      } else { 
       echo "<br>You have no creatures in your wishlist."; 
      } 
      } 
     } 
     } catch (mysqli_sql_exception $e) { 
     throw $e; 
     } 

     // Close the connection to the database 
     $conn->close(); 
    [/insert_php] 
    </code> 
</center> 

如果您有任何想法可能導致此問題,請幫助!

+1

現在你已經公佈你的數據庫用戶名/密碼,你應該改變他們。 – mkaatman

+0

你有一些詭計正在進行。在apache,php和wordpress錯誤日誌中尋找答案。 – mkaatman

+0

表單如何知道在哪裏發佈?以防萬一確保您有指定PHP_SELF的操作,因爲您希望該頁面在該頁面上發佈。 – cosmoonot

回答

0

您的網頁是否已保存併發布?

如果不是,那可能是它沒說找到頁面的原因。

此外,還有一種更好的方法來處理頁碼生成(或分頁)比你寫的長的if else語句。

請到了這一點:http://code.runnable.com/U8dzQWEzMxxqeQ_E/php-pagination-example-using-mysql-database-for-dbms

這也將是明智的,有一個自定義的WordPress插件,你將擁有所有這樣的邏輯,而不是頁數與WordPress的管理員訪問權限的人都可以更改代碼,你當然不會想要那樣。

+0

Deff保存併發布。我會仔細看看。但我只是希望首先得到這個工作(:我從來沒有涉足插件,所以也許我會測試水域 – TurtleBo