2012-12-02 46 views
0

我在php中有一些表格。每行包含一個帶有ID的數據集。 任務是根據ID跳過數據庫中的字段。該ID是未知的。表單中的多個按鈕

我打算用提交按鈕跳過數據集。另外每個數據集都有一個按鈕。表單將發送到PHP_SELF,並在一個函數中我做數據庫的更新。

現在的挑戰是,找出哪個按鈕被按下。這是不可能運行低谷的情況下塊,因爲ID爲1和99999

之間 有人可以幫助我。我可以重命名buton的類型,名稱,id。該id已經在行集中。

非常感謝! Frank

<form id="form1" name="form1" method="POST" action="<?php echo $editFormAction; ?>"> 
<fieldset><legend>Ihnen zugewiesene Services</legend> 
<table width="100%" border="1"> 
    <tr> 
    <th>Schalter</th> 
    <th width="100%">Servicename</th> 
    <th width="50">Status</th> 
    </tr> 
    <?php do { ?> 
    <tr> 
     <?php if ($row_Recordset1['sendToVoicebox'] == 0) { ?> 
     <td><input type="submit" name="<?php $row_Recordset1['service_id']; ?>" id="btnOn" value="Voicebox ein" /></td> 
     <?php } else { ?> 
     <td><input type="submit" name="<?php $row_Recordset1['service_id']; ?>" id="btnOn" value="Voicebox aus" /></td> 
     <?php } ?>   

     <td><?php echo $row_Recordset1['service_id']; ?></td> 

     <?php if ($row_Recordset1['sendToVoicebox'] == 0) { ?> 
     <td><img src="images/VoiceboxOff.png" width="64" height="64" alt="pause" /></td> 
     <?php } else { ?> 
     <td><img src="images/VoiceboxOn.png" width="64" height="64" alt="pause" /></td> 
     <?php } ?>   
    </tr> 
    <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?> 
</table> 
</fieldset> 
<input type="hidden" name="MM_update" value="form1" /> 
<input name="service_id" type="hidden" value="<?php echo $row_Recordset1['service_id']; ?>" /> 

<?php if ($row_Recordset1['sendToVoicebox'] == 0) { ?> 
    <input name="update" type="hidden" value="1" /> 
<?php } else { ?> 
    <input name="update" type="hidden" value="0" /> 
<?php } ?>   

</form> 

如何在我的函數中捕獲id?

if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) { 
    $updateSQL = sprintf("UPDATE acdbasis SET userfield_2=%s WHERE service_id=%s", 
         GetSQLValueString($_POST['update'], "text"), 
         GetSQLValueString($_REQUEST['submit'], "int")); 

回答

0

可使用數組

<?php if ($row_Recordset1['sendToVoicebox'] == 0) { ?> 
<td><input type="submit" name="button[<?php echo $row_Recordset1['service_id']; ?>]" id="btnOn" value="Voicebox ein" /></td> 
<?php } else { ?> 
<td><input type="submit" name="button[<?php echo $row_Recordset1['service_id']; ?>]" id="btnOn" value="Voicebox aus" /></td> 
<?php } ?> 

<?php 
if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) { 
$service_id = array_keys($_POST["button"]); 
$service_id = $service_id[0]; //older php versions don't allow direct function...)[key] 
$updateSQL = sprintf("UPDATE acdbasis SET userfield_2=%s WHERE service_id=%s", 
        GetSQLValueString($_POST['update'], "text"), 
        GetSQLValueString($service_id, "int")); 

雖然不是很優雅的解決方案,我仍然認爲這是不是通過$ _ POST迭代和檢查,如果關鍵是要好一些。

+0

我使用php版本5.3.15。不幸的是,我看到在MySQL日誌總是id 0,我不明白爲什麼? – Frank

+0

啊,一個回聲缺失。正確的行是:name =「button [<?php echo $ row_Recordset1 ['service_id'];?>。你可以另外告訴我,我可以如何向該變量添加第二個元素$ service_id [1],因爲我的隱藏值也不起作用 – Frank

+0

隱藏的元素和fieldset後面的所有內容都沒有迭代,所以它會從上一次do循環迭代獲得$ row_Recordset1 您將從上面的帖子中的代碼中獲得$ service_id,不知道爲什麼你需要另一個隱藏的字段 –

0

如何使用PHP $_GET陣列功能:

<?php if ($row_Recordset1['sendToVoicebox'] == 0) { ?> 
    <td><input type="submit" name="service_id[<?php echo $row_Recordset1['service_id']; ?>]" id="btnOn" value="Voicebox ein" /></td> 
    <?php } else { ?> 
    <td><input type="submit" name="service_id[<?php echo $row_Recordset1['service_id']; ?>]" id="btnOn" value="Voicebox aus" /></td> 
    <?php } ?> 

表單POST頁:

$serviceId = $_POST['service_id'][0]; // Do the work with the service id 

或者,您可以使用該按鈕的value屬性來傳達你想要什麼?另外,您可以使用<button />標記向客戶顯示與提交給後端的值不同的值:

<button type="submit" name="service_submit_id" value="<?php echo $row_Recordset1['service_id'];?>">Text Here</button> 
+0

我認爲老的IE發送按鈕內容而不是val UE。 –

+0

此外,您的答案是錯誤的,因爲您的HTML代碼將發送'service_id [xx_number] = Voicebox ...'生成以下結構:$ _POST = array('service_id'=> array(xx_number =>'Voicebox ...'))''。 所以你的PHP會拋出未定義的索引通知。 –