2017-04-05 11 views
-1

SO。私はこのWordpressサイトで働いています。それは私を信じているので、とても迷惑です。 PHPとHTMLのコンボです。フォームが提出されるまで、すべてがうまく表示されます。ページがリフレッシュされると、同じページ(同じ正確なURLを持つ)にロードされますが、404エラーが発生します。404に送信するHTML/PHPフォーム

<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

dbユーザー名/パスワードを公開したので、変更してください。 – mkaatman

+0

あなたはいくつかのトリッキーなことが起こっています。答えはApache、PHP、WordPressのエラーログを調べ始める。 – mkaatman

+0

フォームはどのようにPOSTするかを知っていますか?ページをポストしたいので、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

関連する問題