2016-05-28 11 views
-3

私は選択したエントリーに従って自分の行動を投稿したいと思います。しかし、私のコードは動作しません。どのようにできるのか?ありがとうございました。PHPポストアクション

<form action=<?php echo $filename; ?> method="post"> 
<br/> 
    <input type="submit" name="select" value="A" onclick="selecta()" /> 
    <br/> 
    <input type="submit" name="select" value="B" onclick="selectb()" /> 
    <br/> 
    <input type="submit" name="select" value="C" onclick="selectc()" /> 
    </form> 
    <?php 
     function selecta(){ 
      $filename = "a.php"; 
     } 
     function selectb(){ 
      $filename = "b.php"; 
     } 
     function selectc(){ 
      $filename = "c.php"; 
     } 
     ?> 
+0

クライアント側コードとサーバー側コードを混在させています。ブラウザには、 'selecta()'、 'selectb()'、 'selectc()'などの関数はありません。 JavaScriptコンソールはおそらく、関数が見つからないという正確なエラーをあなたに与えるでしょう。あなたが達成しようとしていることは本当に明確ではありませんが、クライアント側とサーバー側のどちらかで行う必要があります。 – David

+0

私の問題は、フォームアクションはファイル名の値を取らないということです。 – Leo

+0

はい、そのコードが実行されるときに '$ filename'は*値を持っていないからです。サーバー側のコードはサーバー上で実行されるため、*ページがブラウザに送信される前*。 – David

答えて

2

PHPを使用してHTMLを動的に変更することはできません。 JavaScriptを使用:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> 
<form action="#" method="post" id="myform"> 
<br/><input type="submit" name="select" value="A" onclick="selecta()"/> 
<br/><input type="submit" name="select" value="B" onclick="selectb()"/> 
<br/><input type="submit" name="select" value="C" onclick="selectc()"/> 
</form> 
<script> 
var action = 'a.php'; 
$(function(){ 
    $('#myform').submit(function(){ 
     $(this).attr('action', action); 
    }); 
}); 
function selecta() { 
    action = 'a.php'; 
} 
function selectb() { 
    action = 'b.php'; 
} 
function selectc() { 
    action = 'c.php'; 
} 
</script> 
0

あなたがPHP

<?php 

    $filename = ''; 


    $files = 
    [ 
     'A' => 'a', 
     'B' => 'b', 
     'C' => 'c', 
    ] 

    if(!empty($_POST['select'])) 
    { 
     if(isset($files[ $_POST['select'] ])) 
     { 
      $filename = $files[ $_POST['select'] ].'.php'; 
     } 
    } 

    ?> 

    <form action= "<?php echo $filename; ?>" method="post"> <br/> 

     <input type="submit" name="select" value="A"/> <br/> 
     <input type="submit" name="select" value="B"/> <br/> 
     <input type="submit" name="select" value="C" /> 

    </form> 
-1

ルートを使用しているので、::( 'anyString'、 'UserControllerでの@プロファイル')を取得私は、あなたがサーバー側でこのコードをしたいと仮定。

  • urlにanyStringと入力すると、UserController Profile メソッドが呼び出されます。
関連する問題