0

わかりました、私はこれらのページを持っていると言います、

  • /admin/admin.php
  • /admin/blogger.php

メインのindex.php内に、「存在する場合は$page」関数を実行するスイッチ配列があります。これは正常に機能します。私のすべてのページは、site.com / index.php?page = about、site.com / index.php?page=miscなどから呼び出されます。

admin.phpページ内には、管理セクション(blogger / image manager / file manager / quotes manager)に4つのタブを使用するphpタブ付きナビゲーションがあります。4ページのタブ機能のスイッチを使用します。

blogger.phpは、問題のスイッチがある場所です。

今私の質問のために:ブログシステムのために複数のページを持っている代わりに、「delete.php、add.php、edit.phpなど」そして「ここでクリック(delete.php?id = 1)を削除するために」のように使用します。ブロガーのページからすべてを試して実行したかった。たとえば、「site.com/admin.php?page=blogger&act=dp/ep/ap」は、渡された$ actを取得し、スイッチを使用してアクションを完了します。

PAGEスイッチは正常に機能しますが、さらに多くのスイッチを呼び出そうとすると機能しません。これをコードとして使ってみました

if(isset($_SESSION['id'])) {  
  $act = $_GET['act'];  
  switch ($act) {  
    case 'ap':  
      addPost();  
      break;  
    case 'ep':  
      editPost();  
      break;  
    case 'dp':  
      delPost();  
      break;  
    default:  
      ~table setup  
      ~$query, $result  
      ~if / while loops
      ~echo $row->article_id/title/author/date  
      echo "<a href=\"index.php?page=admin&amp;tabindex=0&amp;act=ep&amp;id={$row->article_id}\">Edit</a>"  
      ...  
      ...  
      ...  

これが私が抱えている問題です。ページが正しく、tabindexが正しいと、機能しなくなります。本来の編集ページではなく、空白のページが表示されます。editPost.php?id = 1の方法でテストしたので、私のeditPost関数は正しいです。これは避けようとしています。はい、私の機能もここから含まれています。

URLが正しく渡されていませんか?または、アクトスイッチが正しく設定されていません。おそらく、切り替えの前にisset($ _ GET ['act'])を設定しますか?私は途方に暮れています。

ありがとうございました。

4

2 に答える 2

0

このように一度に複数のアクションを渡したいですか?

//test.php?action=add/update/notify
if(isset($_GET['action'])) {

  $act = $_GET['action'];

  //split actions
  $actions = explode('/', $_GET['action']);

  foreach( $actions as $action ){
      switch ($action) {  
        case 'add':  
          echo "add<br />\n";
          break;  
        case 'update':  
          echo "update<br />\n";
          break;  
        case 'notify':  
          echo "notify<br />\n";  
          break;  
        default:
        // default action if no match  (runs for every item of $actions array)
        break;
      }
  }
}
于 2012-12-13T20:28:47.800 に答える
0

site.com/admin.php?page=blogger&act=dp/ep/ap

そんなことはできません。具体的にはact=dp/ep/ap。WordPressと同じようにできるようにmod_rewrite、複数の組み合わせをお勧めします。$_GET

site.com/admin/blog/edit

Mod_rewrite to:

site.com/admin.php?page=blog&act=edit

そこから、依存関係のあるものを使用$_GETして、1 つだけ持つ必要があります。switch

 $page = $_GET['page']; 
 $action = $_GET['act'];

  switch ($page) {  
    case 'blog':  
          do($action);  
      break;  
    case 'news':  
          do($action);
      break;  
    case 'users':  
          do($action);
      break;  
    default: echo 'Try again.';
      break;
    }

    function do($act) {
     switch($act) {
       case 'delete': confirmDelete();
       break;
       case 'update': updateConfirm();
       break;
       }
    }

あなたはアイデアを得る。

于 2012-12-13T20:50:48.917 に答える