2013-01-16 88 views
2

我想編輯動態生成的形式(意思是:我不知道有多少行將會產生)。此內容是while循環內產生,並且產生具有HTML創建的input-type=submit按鈕,生成儘可能多的相同名稱的按鈕,因爲有在循環迭代。如何確定在我的PHP表單中點擊了哪個動態生成的提交按鈕?

生成的按鈕,我想知道哪些提交按鈕被點擊,爲了向用戶提供已點擊了其中相同的形式。忽略連接數據庫和密碼的名稱;連通性很好。

隨時提出任何新的方法來實現所需的功能。

的代碼如下:

echo "you have reached your travel details page. your recent travelling details are as follows".'</br>'; 
$dbc=mysqli_connect('localhost','xyz','xyz','abc') or die("connection to DB failed"); 
$query="SELECT * FROM travel_details WHERE emailid='{$_SESSION['username']}' ORDER BY dep_date DESC"; 
$result=mysqli_query($dbc,$query) or die("error in querying the DB"); 
?> 
<h1>Your travel details are:-</h1> 
<form name="showtraveldet" METHOD="POST" action="edittraveldet.php"> 
    <table border="1"> 
    <tr> 
    <th>Starting point</th><th>Ending point</th><th>No of passengers</th><th>Expected fare</th><th>Departure date</th> 
    <th>Departure time</th><th>Arrival Date</th><th>Arrival Time</th><th>Car Model</th><th>Car number</th> 
    <th>Who is driving</th><th>Driver's license number</th> 
    </tr> 
<?php 
while ($row=mysqli_fetch_array($result)) 
{ 
    $tid=$row['travel_id']; 
    echo "the value of tid is '{$tid}'"; 
    echo'<tr><td>'.$row['start_point'].'</td><td>'.$row['end_point'].'</td><td>'.$row['no_of_pass'].'</td><td>'. 
    $row['exp_fare'].'</td><td>'.$row['dep_date'].'</td><td>'.$row['dep_time'].'</td><td>'.$row['arr_date'].'</td><td>'.$row['arr_time'].' 
    </td><td>'.$row['car_model'].'</td><td>'.$row['car_no'].'</td><td>'.$row['who_is_driving'].'</td><td>'.$row['driver_license_no'].'</td> 
    <td><input type="submit" name="edit" value="Edit"></td></tr><input type="hidden" name="travelid" value="'.$row['travel_id'].' ;?>">'; 

} 

edittraveldet.php: -

$travelid=$_POST['travelid']; 
echo "the travel id in the variable is $travelid and got the value from '{$_POST['travelid']}'"; 
$dbc=mysqli_connect('localhost','xyz','xyz','abc') or die("connection to DB failed"); 
$query="SELECT * FROM travel_details WHERE travel_id='{$travelid}'"; 
$result=mysqli_query($dbc,$query) or die("error in querying the DB"); 
mysqli_close($dbc); 
$row=mysqli_fetch_array($result); 
?> 

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" onsubmit="return validatewheregoing()" name="wheregoing"> 
     <h1> Enter your travelling details so that other travellers can join you</h1> 
     <fieldset> 
      <legend> Travelling details </legend> 
      Start Point: <input type="text" name="start" value="<?php echo $row['start_point']; ?>"/><br /> 
      End point: <input type="text" name="end" value="<?php echo $row['end_point']; ?>"/><br /> 
      Passengers allowed: <input type="number" name="noofpass" value="<?php echo $row['no_of_pass']; ?>"/><br /> 
      Expected Fare per passengers in rupees:<input type="number" name="fare" value="<?php echo $row['exp_fare']; ?>"/><br /> 
      Departure Date:<input type="date" name="depdate" value="<?php echo $row['dep_date']; ?>"/><br/> 
      Departure time:<input type="time" name="deptime" value="<?php echo $row['dep_time'] ;?>"/><br/> 
      Arrival Date:<input type="date" name="arrdate" value="<?php echo $row['arr_date']; ?>"/><br/> 
      Arrival time at destination:<input type="time" name="arrtime" value="<?php echo $row['arr_time']; ?>"/><br/> 
      Car Model and name:<input type="text" name="cardet" value="<?php echo $row['car_det']; ?>"/><br/> <!--make this as a dropdown box for better database matching--> 
      Car Number:<input type="text" name="carno" /><br/><input type="checkbox" name="taxi" value="check this box if pooling a taxi"> 
      Is the car self driven or driven by driver?<input type="radio" name="drivedet" value="Selfdriven" checked=""/>Self Driven<input type="radio" name="drivedet" value="driverdriven" />Driver driven<br /> 
      Driver's License number<input type="text" name="licence_no"/></br> 
      <input type="checkbox" name="taxi" value="check this box if pooling a taxi"></br> 
      <input type="hidden" name="travelid" value="<?php echo $travelid ;?>" /> 
      <input type="submit" value="invite travellers" name="editwheregoing"/> 
     </fieldset> 
    </form> 

回答

0

名稱以標準方式的提交按鈕和一個3位數字追加到年底,「button_XXXX_ ###「其中###是數字,XXX是您的按鈕的原始名稱。

提交後,檢查所有以「button_XXXX」開頭的變量的請求參數,並用「_」字符分割實際名稱「button_XXXX _ ####」,而「###」後綴將顯示按下按鈕的編號。

這可能是更容易地創建的每一行,而不是一種形式,雖然。

1

如果只有你可以改變你的代碼,我建議你把表單標籤自己在while循環中,每個都具有指向同一個URL,但在提交不同的信息到目標頁面同樣的動作。這樣,您就不必擔心按鈕點擊

while($row=mysqli_fetch_array($result)) 
{ 
    //<form action="sameactionurl.php" name="form_1"> 
     //<input type="hidden" name="travelid" value="$row['travelid']" /> 
    //</form> 
} 

另一種解決辦法,如果你不想改變你的代碼是使用JavaScript來共同的隱藏字段設置爲當前ID的前值提交表格

相關問題