2016-04-15 4 views
0

私は数日間この作業をしてきましたが、何が間違っているのか分かりません。それは '文法エラー予期しないファイルの終わりを返すように私はどこかの中括弧を逃したと思うが、私はどこに見えないのですか?どんな助けもありがとう。私は2つのファイルがあり、私はPHPで乗算表を作ろうとしています。私は数日間このテーブルを作業していました

ページ1:

<!DOCTYPE html> 
<html> 
    <head> 
     <title>Make a Multiplication Table!</title> 
    </head> 
    <body> 
     <form action="./timestable.php" method="POST"/> 
      <input type="number" value="1" name="a"/> 
      <input type="number" value="1" name="b"/> 
      <input type="submit"/> 
     </form> 
    </body> 
</html> 

<?php 

$n = $_POST; // TODO what should $n really be? Replace the 10 with the user-supplied value from the form 

// if we don't have a number, redirect back to the form page 
if (isSet($n)) { 
    header("Location: ./mult_form.php"); 
    exit; 
} 

?> 

ページ2:10件の事のようにあなたが/のは、本題に聞かせて変更する必要があります可能性は別に

<!DOCTYPE html> 
<html> 
    <head> 
     <title>Your Table is Ready</title> 
    </head> 
    <body> 
     <table> 
      <?php 
      $a = $_POST['a']; 
      $b = $_POST['b']; 
      for ($i = 0; $i <($a)+1; $i++): 
      { 
       $output.='<tr>'; 

        for($j=1;$j<($b)+1;$j++) 

         { 

          $output.= '<td>'.($i*$j).'</td>'; 

         } 


      $output.='<tr>'; 

      } 

     $output.='</table>'; 




      ?> 

    </body> 
</html> 
+1

'($ I = 0; $ iのための<($ a)は+1を、私は++ $):' - > '($ i = 0 $私は++; $私は($ a)は+1を<)のための' –

+0

<フォームアクション=「./ timestable.php」方法= 『POST』 /> ./それは問題を説明するように、あなたの質問のタイトルを改善し、エンド – svanderwoude

+0

で/をamdの削除。 –

答えて

1

$output変数を出力することはありません。使用:

echo $output; 

$output.='</table>';の直後です。


EDIT:コメントで説明したようには、コードを修正しました。

完全に修正ページ1です:

<?php 

if (!isset($_POST['n'])) { 
    header("Location: mult_form.php"); 
    exit; 
} 

?> 
<!DOCTYPE html> 
<html> 
    <head> 
     <title>Make a Multiplication Table!</title> 
    </head> 
    <body> 
     <form action="timestable.php" method="POST"/> 
      <input type="number" value="1" name="a"/> 
      <input type="number" value="1" name="b"/> 
      <input type="hidden" value="<?php echo $_POST['n'];?>" name="n"/> 
      <input type="submit"/> 
     </form> 
    </body> 
</html> 

(注)header()でヘッダフィールドを設定したい場合は、明確な出力バッファを持っている必要があること。これは、まだ1文字が出力されていないことを意味します。そうしないと、HTTPヘッダーが自動的に閉じられ、HTTP本体が開始されます。これは、header()が遅れて実際に無視されることを意味します。 PHPがHTML文字の後ろにある場合、リダイレクトはありません。だからこそ私はコードの最初に置いています。

あなたはmult_form.phpどのポストnフィールドを実装する必要があります。

2ページ目はこれです:最初の.=連結は、実際の文字列に未定義の値を文字列に文字列を連結しないように$outputは、空の文字列として初期化されていること

<!DOCTYPE html> 
<html> 
    <head> 
     <title>Your Table is Ready</title> 
    </head> 
    <body> 
     <table> 
      <?php 
      $a = intval($_POST['a']); 
      $b = intval($_POST['b']); 
      $n = intval($_POST['n']); 
      $output = ''; 
      for ($i = 1; $i <= $a; $i++) 
      { 
       $output .= '<tr>'; 
       for ($j = 1; $j <= $b; $j++) 
       { 
        $output .= "<td>{$i * $j * $n}</td>"; 
       } 
       $output .= '</tr>'; 
      } 
      echo $output; 
      ?> 
     </table> 
    </body> 
</html> 

注意、かもしれないが台無しここで起こっている全体の連結ドラマ:)

これはそれを行う必要があります。

これは多分あなたの新鮮なコードで別の質問を投稿し、より具体的に動作しない場合。この質問は、今すぐ完全に答えられると考えられるべきです。

楽しい一日を!

+0

ええ?まだ動作しませんか?私が見ていない他のエラーはありますか? – orangutat

+0

見てみましょう。最初のfor()文の後には偽の ':'があります。 'intval($ _ POST ['a'])'を使ってポスト変数の読み込みを安全にすることもできます。最初の 'for()'は1ではなく0から始まります。乗算テーブルは1から始まるので、間違っているはずです。第2の ''は終了タグ( ' ')でなければなりません。また、乗数 '$ n'が必要なように見えます。最初のページで '!isset($ n)'をテストしてください(すべて小文字で、 '!'ではありません)。また、リダイレクトの先頭の '。/'も削除してください。 'timestable.php'に' $ n'が必要な場合は、それを渡す必要があります。 – pid

+0

これをフォームに追加するには、 ''と入力します。次に、 'timestable.php'でそれを読んでください:' $ n = intval($ _ POST ['n']); '。最後に、 '$ i * $ j * $ n'ですべてのセルに乗じる。それは先進的なステップではありません。最初のページに '$ n'を入力する必要があります。あなたはなぜそれをフォームに入れていないのか分かりませんが、それはあなたの選択です。 – pid

関連する問題