2015-09-09 2 views
1

Публикация здесь впервые (так что будьте осторожны, так как я отношусь к новичку PHP).Динамически сгенерированные кнопки «Отправить» в PHP

Я создаю интрасеть для нашей компании, и одна из вещей, которую мне нужно сделать, - создать форму, в которой перечислены все выдающиеся заказы на продажу (вытащил из нашей базы данных учета), и предоставляет кнопку «отправить» рядом с каждой из них создать соответствующий рабочий заказ.

Вот код:

  <div class="report_column"> 

     <div class="report_header"> 
      <div class="report_column_title" style="width:150px;margin-left:5px">ship date</div> 
      <div class="report_column_title" style="width:200px">customer</div> 
      <div class="report_column_title" style="width:140px;text-align:right">item</div>   
      <div class="report_column_title" style="width:120px;text-align:right">quantity</div> 
     </div> 

    <?php 

     // Open connection 
     include 'includes/dbconnect.php'; 

     // Perform query 
     $result = mysqli_query($con,"SELECT * FROM tSalOrdr ORDER BY dtShipDate ASC"); 

     // Retrieve results 
     while($row = mysqli_fetch_array($result)) { 

      $order = $row['lId']; 

      if ($row['bCleared'] == 0) { 

       $shipdate = substr($row['dtShipDate'], 0,10); 
       $customer = $row['sName']; 
       $po = $row['sComment']; 

       echo '<div class="report_item" style="width:750px";>'; 

       echo '<form class="form" action="index.php?page=form&item=create_work_order" method="POST">'; 

        echo '<div class="report_item_date" style="width:120px">'.$shipdate.'</div>'; 
        echo '<div class="report_item_name" style="width:530px">'.$customer; 
echo '<input type="hidden" name="po" value="'.$po.'" />';      
echo '<input type="submit" class="submit" style="height: 25px;width:100px;margin:0px;padding:0px;margin:0px" value="work order"/>'; 
        echo '</div>'; 

        $result2 = mysqli_query($con,"SELECT * FROM tSOLine WHERE lSOId=$order ORDER BY sDesc ASC"); 
        while($row = mysqli_fetch_array($result2)) { 

         if ($row['dRemaining'] <> 0) { 

          echo '<div class="report_item_details">'; 
           echo '<div class="report_item_item">'.$row['sDesc'].'</div>'; 
           echo '<div class="report_item_quantity">'.$row['dRemaining'].'</div>'; 
          echo '</div>'; 
         } 
        } 

       echo '</form>'; 

       echo '</div>';    

      } 
     } 

     // Close connection 
     mysqli_close($con); 

    ?> 

    </div> 

Что происходит, когда я делаю это, что кнопка первого «представить» будет, по какой-то причине, отправить меня обратно в «index.php». Другие кнопки загрузят правильную страницу, однако они не отправляют требуемое значение.

Есть ли что-то, что я делаю неправильно или это что-то, что нуждается в другой методологии, чем то, что я сейчас использую? Мои исследования по этому вопросу, похоже, указывают на то, что, возможно, я должен использовать javascript или массив, чтобы справиться с этим, но, никогда не сталкиваясь ни с одним из них, я не уверен, как действовать дальше. Любые указатели будут оценены.

Спасибо.

@maniteja: index.php выглядит следующим образом:

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 

<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <meta name="language" content="en" /> 
    <title></title> 
    <link href="css/main.css" rel="stylesheet" type="text/css" /> 
    <link href="css/forms.css" rel="stylesheet" type="text/css" /> 
    <link rel="icon" type="image/ico" href="favicon.ico" /> 
    <script type="text/javascript" src="scripts/jquery-2.1.0.min.js" ></script> 
    <script type="text/javascript" src="scripts/tabcontent.js" ></script> 
</head> 

<body> 

    <!-- BEGIN MAIN CONTENT --> 
    <div id="wrapper"> 

    <!-- BEGIN HEADER --> 
    <div id="header"> 
     <img src="images/logo.jpg"> 
    </div> 
    <!-- END HEADER --> 

    <!-- BEGIN MAIN MENU --> 
    <div id="leftcolumn"> 
     <?php include 'includes/menu.php'; ?> 
    </div> 
    <!-- END MAIN MENU --> 

    <!-- BEGIN CONTENT FRAME --> 
    <div id="rightcolumn"> 
     <div id="content_area"> 
      <?php 
       if (isset($_GET['page'])) 
       {$page = $_GET['page']; 
       include('pages/' . $page . '.php');} 
       else {include('pages/home.php');} 
      ?> 
     </div> 
    </div> 
    <!-- END MAIN CONTENT --> 

</body> 

</html> 

Я сделал семнадцать других форм с ним, так что я не думаю, что это проблема. Я надеюсь, что это только опечатка или логическая ошибка с моей стороны.

+0

Привет @xaosnaos, какой контент у вашего index.php есть, если возможно, есть ли логика перенаправления на странице index.php? – maniteja

ответ

0

и можно использовать

<button type='submit' class='' name='' onclick=''>Submit</button> 
+0

Я пробовал это, и он дает мне данные, которые мне нужно получить от POST. Тем не менее, первая кнопка submit все еще возвращает меня к index.php. Ну, на полпути, я думаю :-) Спасибо. – xaosnaos

-1

Насколько я понимаю, вы делаете ваши формы идут в index.php:

echo '<form class="form" action="index.php?page=form&item=create_work_order" method="POST">'; 

Можете ли вы объяснить, что ваше ожидаемое поведение, когда кнопка нажата?

+0

Как работает эта страница. Загружается Index.php. «Page = form» загружает определенную подстраницу в область содержимого. «Item = create_work_order» загружает контент в раздел «форма» содержимого. Как я уже упоминал выше, я делал это несколько раз и, прямо сейчас, благодаря предложению Рохана, он работает правильно, за исключением первой кнопки, которая игнорирует переменные и просто загружает index.php сама по себе. – xaosnaos

0

Попробуйте сделать onclick. См. Мой пример ниже.

input type="button" name="submit" onclick='location.href="index.php?id=$id"'