0

こんにちは私はPHPの初心者で、フォームジェネレーターを作成しようとしています。生成されたフォームに問題があります。たとえば、[段落]ボタンをクリックすると、テキストフィールドと別のボタンを含むフォームが生成されます。

生成されたコードにテキストを入力し、ボタンを押して関数を実行する場合は、テキストを印刷するだけです。

これは私のコードです:

<form action="" method="post">
   <button type="submit" name ="Paragraph">Paragraph Text</button>
   <button type="submit" name ="MultipleChoice">Multiple Choice</button>
   <button type="submit" name ="Name">Name</button>
   <button type="submit" name ="Adress">Address</button>
   <button type="submit" name ="Number">Number</button>
   <button type="submit" name ="CheckBoxes">Checkboxes</button>
   <button type="submit" name ="DropDown">Drop Down</button>
   <button type="submit" name ="Phone">Phone</button>
   <button type="submit" name ="Email">Email</button>
</form>

<?php 
   require_once 'addform.php';
   $buttons = array('Paragraph', 'MultipleChoice', 'Name', 
              'Adress', 'Number', 'CheckBoxes', 'DropDown', 'Phone', 'Email');
   foreach ($buttons as $button){
     if(isset($_POST[$button])){
        $title;
        $input;
        if($button == 'Paragraph'){
           ?>
           <form action="" methods="post">
             Paragraph title: <input type="text" name="title"/>
             <input type="submit" value="Create" name="create"/>
           </form>
           <?php
           if(isset($_POST['title'])){
             $title = $_POST['title'];
             echo $title;
           }
        }
     }
     break;
}
?>

私はここで何が間違っているのですか?

4

3 に答える 3

1

これを試してみてください、それは機能します、あなたはあなたの段落形式methodsの代わりに使用methodしました...そしてまたあなたはそれの中で間違った変数名を使用submit$_POST['']たはずですisset($_POST['create'])

 <form action="" method="post">
   <button type="submit" name ="Paragraph">Paragraph Text</button>
   <button type="submit" name ="MultipleChoice">Multiple Choice</button>
   <button type="submit" name ="Name">Name</button>
   <button type="submit" name ="Adress">Address</button>
   <button type="submit" name ="Number">Number</button>
   <button type="submit" name ="CheckBoxes">Checkboxes</button>
   <button type="submit" name ="DropDown">Drop Down</button>
   <button type="submit" name ="Phone">Phone</button>
   <button type="submit" name ="Email">Email</button>
</form>

<?php 

   $buttons = array('Paragraph', 'MultipleChoice', 'Name', 
              'Adress', 'Number', 'CheckBoxes', 'DropDown', 'Phone', 'Email');
   foreach ($buttons as $button){
     if(isset($_POST[$button])){
        $title;
        $input;
        if($button == 'Paragraph'){
           ?>
           <form action="" method="post">
             Paragraph title: <input type="text" name="title"/>
             <input type="submit" value="Create" name="create"/>
           </form>
           <?php

        }
     }
     break;
}
     if(isset($_POST['create'])){

             $title = $_POST['title'];
             echo $title;
           }

?>
于 2012-12-12T18:43:16.843 に答える
0

ここにhiddent入力を追加しました。これにより、段落条件を入力してコードを実行できます。

また、ここに別のタイプミスがありました:methodS = "post" but method="post"。今は動作します!

<form action="" method="post">
   <button type="submit" name ="Paragraph">Paragraph Text</button>
   <button type="submit" name ="MultipleChoice">Multiple Choice</button>
   <button type="submit" name ="Name">Name</button>
   <button type="submit" name ="Adress">Address</button>
   <button type="submit" name ="Number">Number</button>
   <button type="submit" name ="CheckBoxes">Checkboxes</button>
   <button type="submit" name ="DropDown">Drop Down</button>
   <button type="submit" name ="Phone">Phone</button>
   <button type="submit" name ="Email">Email</button>
</form>

<?php 
   require_once 'addform.php';
   $buttons = array('Paragraph', 'MultipleChoice', 'Name', 
          'Adress', 'Number', 'CheckBoxes', 'DropDown', 'Phone', 'Email');
foreach ($buttons as $button){
 if(isset($_POST[$button])){
    $title;
    $input;
    if($button == 'Paragraph'){
       ?>
       <form action="" methods="post">
         Paragraph title: <input type="text" name="title"/>
         <input type="hidden" value="set" name="Paragraph"/>
         <input type="submit" value="Create" name="create"/>
       </form>
       <?php
       if(isset($_POST['title'])){
         $title = $_POST['title'];
         echo $title;
       }
    }
 }
 break;
}
于 2012-12-12T18:14:53.617 に答える
0

タイトルをエコーし​​たい場合は、作成ボタンがクリックされたときにキャプチャする必要があります。

作成ボタンの名前は「create」なので、これを$ buttons配列に追加してから、「create」のハンドラーを記述します。例:

$buttons = array('create', 'Paragraph', 'MultipleChoice', 'Name', 
          'Adress', 'Number', 'CheckBoxes', 'DropDown', 'Phone', 'Email');
foreach ($buttons as $button){
 if(isset($_POST[$button])){
    $title;
    $input;
    if($button == 'Paragraph'){
       ?>
       <form action="" methods="post">
         Paragraph title: <input type="text" name="title"/>
         <input type="submit" value="Create" name="create"/>
       </form>
       <?php
    }elseif($button=='create' && isset($_POST['title'])){
       $title = $_POST['title'];
       echo $title;
    }
 }
 break;

}

于 2012-12-12T18:25:06.827 に答える