2011-06-06 146 views
0

我有一个可以转储到MySQL表中的php表单。我使用php创建了一个从Product表中填充的数组。将MySQL表列数组插入到新的MySQL表中

查询表以获取数组的值 - 正常工作。

<?php 
function getProducts ($id) 
{ 
    $sql =("SELECT * FROM products where products.CAT_ID = $id AND DISABLED ='NO'"); 
    $result = mysql_query($sql); 
    if ($result > 0) 
    { 
    $products = array(); 
    $x=0; 
    while($row = mysql_fetch_array($result)) 
    { 
     $products[$x]= $row; 
     $x += 1; 
    } 
    return $products; 
    } 
    else return false; 
} 
function newProd(){ 
global $products; 
} 
?> 

然后我使用上面的数组在javascript手风琴中创建标签。在标签旁边 - 是选择框。 (删除不必要的页面元素..)下面的HTML/PHP表单显示上面的数组。

<?php include('includes/query.php');?> 

库存

<body onload="toggleField()"> 

     <div id="container" class="container_16"> 
     <form name="form1" id="form1" action="insert.php" method="post" enctype="multipart/form-data" style="height: inherit"> 
      <div id="Info" class="grid_16"> 
       <fieldset> 
        <label id="Label1"> 
         <span class="Labels">Store Information</span> <br> 
        </label> 
        <div> 
        <label for="name"> 
         <span class="Labels"> Name :</span> </label> 
      <input id="name" name="name" type="text"> 
        </div> 
      </fieldset> 
      </div> 
      <hr id="SpacePadding"> 
      <hr class="SpacePadding"> 
      <div class="clear"></div> 
       <!-- Start of the Accordion Container--> 
       <!-- Start array, make sure Category Array isn't false --> 
       <?php if($categoryArray !=false):?> 
        <!-- create the variables for modulus --> 
        <!-- Start the foreach loop for the category Array --> 
        <?php $cataCounter = 0; ?> 
        <?php $closeSection = false; ?> 
        <?php foreach($categoryArray as $row):?> 
         <?php if($cataCounter % 2 == 0): ?> 
          <div class="push_1 grid_8"> 
          <?php $closeSection = false; ?> 
         <?php else: ?> 
          <div class="grid_8"> 
          <?php $closeSection = true; ?> 
         <?php endif; ?><!-- insert modulus--> 
           <div class="AccordionTitle"><?php echo $row['CATEGORY_NAME'];?></div> 
           <div class="AccordionContent"> 
            <table> 
             <?php foreach(getProducts($row['CAT_ID']) as $row):?> 
             <tr> 
              <th class="boldLabels"><?php echo $row['PRODUCT_NAME'];?> 
              <span class="label"></span></th> 
              <th><span class="Labels">Count:</span></th> 
              <td> 
               <select name="selCount[]" onChange="toggleField(this.value);" class="Listbox"> 
                <option value="Select">Select One</option> 
                <option value="0">0</option> 
                <option value="1">1</option> 
                <option value="2">2</option> 
                <option value="3">3</option> 
                <option value="4">4</option> 
                <option value="5">5</option> 
                <option value="6">6</option> 
                <option value="7">7</option> 
                <option value="8">8</option> 
                <option value="9">9</option> 
                <option value="10">10</option> 
                <option value="Other">Other(Specify)</option> 
               </select> 
               <input type="text" name="otherCount[]" class ="Listbox" style="display: none;"> 
              </td> 
              <td><span class="Labels">Need:</span></td> 
              <td> 
               <select name="selNeed[]" onChange="toggleField2(this.value);" class="Listbox"> 
                <option value="Select">Select One</option> 
                <option value="0">0</option> 
                <option value="1">1</option> 
                <option value="2">2</option> 
                <option value="3">3</option> 
                <option value="4">4</option> 
                <option value="5">5</option> 
                <option value="6">6</option> 
                <option value="7">7</option> 
                <option value="8">8</option> 
                <option value="9">9</option> 
                <option value="10">10</option> 
                <option value="Other">Other(Specify)</option> 
               </select> 
               <input type="text" name="otherNeed[]" class ="Listbox" style="display: none;"> 
              </td> 
             </tr> 
             <?php endforeach;?> 
            </table> 
           </div> 
          </div> 
          <?php if($closeSection): ?> 
           <div class="clear"></div> 
          <?php endif; ?> 
         <?php $cataCounter += 1; ?> 
        <?php endforeach;?> 
      <?php endif;?> 

     <input name="Submit" type="submit" value="submit"> 
     </div> 
     </form> 
     <br> 
    </div> 
     <footer> 
     <div align="center"> 
      <ul> 
       <li><a href="#">Home</a></li> 
       <li><a href="#">Daily Inventory Counts</a></li> 
       <li><a href="#">Contact System Admin</a></li> 
      </ul> 
     </div> 
    </footer> 
</body> 

交房时,我希望PRODUCT_NAME去一个新的表内与相关的选择选项。 (我拿出数据库连接信息了。)

<?php 
//Assign array 
$SelCount = $_POST['selCount']; 
$SelNeed = $_POST['selNeed']; 
$otherNeed = $_POST['otherNeed']; 
$otherCount = $_POST['otherCount']; 

$limit = count($SelCount); 

for($i=0;$i<$limit;$i++) { 
    $SelCount[$i] = mysql_real_escape_string($SelCount[$i]); 
    $SelNeed[$i] = mysql_real_escape_string($SelNeed[$i]); 
    $otherNeed[$i] = mysql_real_escape_string($otherNeed[$i]); 
    $otherCount[$i] = mysql_real_escape_string($otherCount[$i]);  

if (($SelCount[$i]) !="Select") { 
$sql = ("INSERT INTO inventory (STORE_ID, REQUESTOR, ITEM_COUNT, ITEM_NEED, NEED_COUNT, OTHER_COUNT) 
VALUES ('$_POST[store]', '$_POST[name]', '".$SelCount[$i]."', '".$SelNeed[$i]."', '".$otherNeed[$i]."', '".$otherCount[$i]."')"); 

    if(mysql_query($sql ,$db)) 
     echo "$i successfully inserted.<br/>"; 
     else 
     echo "$i encountered an error. <br/>"; 

    } 
} 

?> 
+1

你有一个SQL注入漏洞!,更改违规行像这样:'$ sql =(“SELECT * FROM products where products.CA T_ID ='$ id'和DISABLED ='NO'“);'注意额外的单个'''引号。他们至关重要! – Johan 2011-06-06 21:11:20

回答

1

这里是我会做:

if($products = getData(id)) { 
    foreach($products as $product) { 
     echo $product['database_field_name']; 
    } 
} 

看到他们:

function getProducts($id) 
{ 
    $sql = 'SELECT * FROM products where products.CAT_ID = ' . $id . ' AND DISABLED = "NO"'; 
    $result = mysql_query($sql); 
    if($result !== false) { 
     while($row = mysql_fetch_array($result)) { 
      $products[]= $row; 
     } 
    } else { 
     $products = false; 
    } 
} 

然后,你可以通过它打印出来所有用于调试目的,您可以使用此:

echo '<pre>' . print_r($products, true) . '</pre>'; 

此外,您必须在某处使用以下内容来清理$idhttp://php.net/manual/en/function.mysql-real-escape-string.php并且如果是整数,则可能使用intval()。在会议

存储数据:

session_start(); 
$_SESSION['name'] = $product['database_field_name']; 

然后是insert.php页面上,你可以通过读取数据:

echo $_SESSION['name']; 

你不需要它,然后再以后,你可以取消它:

unset($_SESSION['name']); 
+0

感谢您的回应瑞安.. 我已经能够打印出美元的产品,通过和回声...我遇到的问题是,我有一个PHP文件,查询MySQL表获得我$产品以php/html格式显示的数组。这是所有工作正常.. 我想不出如何让这个$产品数组插入到提交不同的MySQL表。 – 2011-06-07 14:16:27

+0

@Jessica Villanueva您必须使用$ _POST中的数据创建INSERT语句。 – NightHawk 2011-06-07 14:23:53

+0

@Ryan,这是我的代码。 – 2011-06-07 14:29:42