2011-10-14 19 views
0

- 更好地描述場景 -如何在下拉菜單中將傳遞值用作默認值?

我有一個包含2個表,技術員和work_orders的MySQL數據庫。技術人員表中列有techID,tech_surname,tech_firstname和tech_userlogin。 work_orders表具有columnjobID(PK),wtechID,wtech_surname,wtech_firstname和wtech_userlogin等等。

我有一個包含重複區域列表提交的工單的頁面,工單的日期是一個鏈接,它將URL中的jobID傳遞給包含更新表單的頁面。表格中填入了work_orders表中的數據,特別是jobID(客戶名稱,地址,維修裝備,問題等)。在表單上是從技術人員表填充的下拉列表。此下拉列表列出了技術人員的tech_userlogin。我已將隱藏字段添加到表單頁面wtech_userlogin和wtechID。 當我查看頁面的源代碼時,它顯示了work_orders表中的值,但我不知道如何將其應用到查詢中以實現所需的結果。

當表單發佈時,它會更新work_orders表。所有這些都在起作用。 我希望完成的是,如果已經選擇了技術人員,那麼將特定工作訂單的wtech_userlogin(來自work_orders表)作爲下拉菜單的默認值。如果以前沒有從下拉菜單中進行選擇,我希望下拉菜單的默認值爲「 - 選擇技術人員 - 」。我已經嘗試了一些東西,但目前爲止沒有任何效果。

這裏是下拉代碼:

<select name="tech_userlogin" id="tech_userlogin"> 
       <?php 
     $sql="SELECT techID, tech_userlogin FROM technicians"; 
$result=mysql_query($sql); 

$options=""; 

while ($row=mysql_fetch_array($result)) { 

    $techID=$row["techID"]; 
    $tech_userlogin=$row["tech_userlogin"]; 
    $options.="<option value=\"$tech_userlogin\">$tech_userlogin</option>"; 
} 

if(empty($tech_userlogin)) { 
die ('You must select a Technician'); 
} 

?> 
       <option value='<?php echo $options; ?>' selected='selected'>""<?php echo $options; ?> 
      </select> 

誰能幫我解決這個問題?任何援助將不勝感激。我對PHP和MySQL非常感興趣。我正在參加網頁設計課程,我們使用Dreamweaver。我想脫離Dreamweaver並學習如何在沒有嚮導的情況下做到這一點。我已經能夠發佈我的表單,並且我所有的插入,更新和刪除功能都可以從我能夠從互聯網上拼湊出來的東西中工作,但是這真的讓我難住了。

乾杯。

+0

你爲什麼要利用一些元素和屬性而不是其他元素?這真的很煩人。 – animuson

+0

我已經採納了您的建議,但發現您的送貨有點苛刻。 – Spud

回答

1

像這樣的東西是你想要什麼:

<select name="tech_userlogin" id="tech_userlogin"> 
<?php 
    $sql="SELECT techID, tech_userlogin FROM technicians"; 
    $result=mysql_query($sql); 

    while ($row=mysql_fetch_array($result)) 
    { 
     $techID = $row['techID']; 
     $tech_userlogin=$row['tech_userlogin']; 

     // Here - check if the tech id in the query matches the logged in tech's id 
     $selected = ($techID == $_SESSION['techID']) ? 'selected="selected"' : ''; 

     echo '<option value="' . $tech_userlogin . '" ' . $selected . '>' . $tech_userlogin . '</option>' . "\n"; 
    } 

?> 
</select> 
+0

謝謝你的迴應。我想要做的是傳遞先前選擇的tech_userlogin的值。例如,一項技術已被分配到工作中,但工作的細節需要改變。因此,當更新頁面填充時,會使用之前選定的值填充下拉列表(tech_userlogin已被選中)。如果沒有技術人員被分配,那麼我希望下拉列表中的默認值爲空白或---選擇技術---或某種類似的東西。 – Spud

+0

您可以將'$ techID == $ _SESSION ['techID']'更改爲'$ tech_userlogin == $ _GET ['tech_userlogin']' – AlienWebguy

+0

嗨。它仍然不起作用。當更新表單發佈時,它會更新work_orders表。下拉菜單中的值作爲wtech_userlogin存儲在work_orders中。 techID是表單上的隱藏字段,並將work_orders表更新爲wtechID。我試圖在下拉字段中顯示的值是來自work_orders表的wtech_userlogin。我是否需要在查詢中包含work_orders表?如果是這樣,我該怎麼做。感謝您的幫助。乾杯。 – Spud

0

好了,你的代碼有很多問題。讓我們從我沒有看到你指定選擇的地方開始。您應該通過帖子將其發送給腳本。然後,將選項標記串聯在一個字符串中,然後將該字符串作爲值添加到另一個選項。最後,您的變量$ tech_userlogin是數據庫表技術人員最後一行的tech_userlogin列的值。

編輯1:請參閱評論。

讓我們試着去解決它:

<?php 
    // first thing: check if a post was sent 
    if($_POST) 
    { 
     if(!empty($_POST['technician'])) 
     { 
      @session_start(); 
      $_SESSION['tech'] = $tech; 
     } 
    } 

    if(!empty($_SESSION['tech'])) 
    { 
     $tech = $_SESSION['tech']; 
    } 
    echo '<form action="" method="post"> 


    $sql = "SELECT `techID`,`tech_userlogin` FROM `technicians`"; 
    $sql = mysql_query($sql); 

    if(!mysql_num_rows($sql)) 
    { 
     echo 'There is no technician in the database'; // or use die for radical thinking 
    } 

    $options = ''; 
    $technicians = array(); 
    echo '<select name="tech_userlogin" id="tech_userlogin">'; 
      if(empty($tech)) 
      { 
       echo '<option value="">-- Select technician --</option>'; 
      } 
    while($row = mysql_fetch_array($sql)) 
    { 
     $technicians[] = $row; 
     $options .= '<OPTION VALUE="'.$tech_userlogin.'" '.((!empty($tech) && $tech == $tech_userlogin)) ? 'selected="selected"' : '').'>'.$tech_userlogin.'</option>'; 
    } 

    echo $options; 
    echo '</select>'; 
    echo '<input type="submit" value="Please submit you selection" />'; 
    echo '</form>'; 

?> 

我希望它能幫助:)。

+0

謝謝你回到我身邊。我想也許我不清楚自己想做什麼。 tech_userlogin來自技術人員表。當從下拉列表中選擇tech_userlogin時,該值會發布到work_orders表中,並以wtech_userlogin的形式與特定作業的其他詳細信息一起存儲。因此,如果在分配技術後編輯工作訂單,我希望將下拉列表的默認值填入tech_userlogin,該tech_userlogin與該特定作業的work_orders表中的wtech_userlogin相匹配。讓我知道如果這是明確的。乾杯 – Spud

+0

好吧,現在我明白了......它需要更多的代碼。另一個選擇,或在sql語句中的一個連接。你可以請進一步解釋一下work_orders表是怎麼樣的,我的意思是,你可以這樣做:$ query ='SELECT * FROM'works_order'其中'wtech_userlogin' =''。$ tech_userlogin。''';但是,您發現該表中可能有多名技術員。請提供更多細節。 – khael

+0

嗨,work_orders表中有一個字段wtech_login,它的值來自技術人員表字段tech_userlogin。因此,從下拉列表中選擇tech_userlogin時,該值將被髮布並存儲在work_orders表中。我同意查詢,但不知道如何加入表格。 techID以wtechID和tech_userlogin作爲wtech_userlogin存儲在work_orders(針對特定作業)中。你是這個意思嗎? – Spud

相關問題