2012-07-26 37 views
0

我正在構建一個相當簡單的crud網站。我有三個選擇/下拉菜單,全部基於Mike Tuupola's Chained Selects Project如果選擇/下拉更改了Mysql更新

這裏是我的代碼:

<? 
include('../config.php'); 
if (isset($_GET['id'])) { 
    $id = (int) $_GET['id']; 
    if (isset($_POST['submitted'])) { 
     foreach($_POST AS $key => $value) { $_POST[$key] = mysql_real_escape_string($value); } 
     $cselect1 = $_REQUEST['cselect1']; 
     $cselect2 = $_REQUEST['cselect2']; 
     $cselect3 = $_REQUEST['cselect3']; 

     $query="SELECT cat FROM cat WHERE id='$cselect1'"; 
     $result = mysql_query ($query); 
     while($catselect=mysql_fetch_array($result)){ 
     $catselect1 = $catselect['cat']; 
     } 
     $query="SELECT cat FROM cat WHERE id='$cselect2'"; 
     $result = mysql_query ($query); 
     while($catselect=mysql_fetch_array($result)){ 
     $catselect2 = $catselect['cat']; 
     } 
     $query="SELECT cat FROM cat WHERE id='$cselect3'"; 
     $result = mysql_query ($query); 
     while($catselect=mysql_fetch_array($result)){ 
     $catselect3 = $catselect['cat']; 
     } 
    $sql = "UPDATE `company` SET `name` = '{$_POST['name']}' , `phone` = '{$_POST['phone']}' , `cat1` = '$catselect1' , `cat2` = '$catselect2' , `cat3` = '$cselect3' , `zipcode` = '{$_POST['zipcode']}' , `city` = '{$_POST['city']}' , `address` = '{$_POST['address']}' , `address2` = '{$_POST['address2']}' , `website` = '{$_POST['website']}' , `product1` = '{$_POST['product1']}' , `product2` = '{$_POST['product2']}' , `product3` = '{$_POST['product3']}' , `product4` = '{$_POST['product4']}' , `product5` = '{$_POST['product5']}' , `product6` = '{$_POST['product6']}' , `product7` = '{$_POST['product7']}' , `subcat1` = '{$_POST['sselect1']}' , `subcat2` = '{$_POST['sselect2']}' , `subcat3` = '{$_POST['sselect3']}' WHERE `id` = '$id' "; 
    mysql_query($sql) or die(mysql_error()); 
    $sql = "UPDATE `company_secondary` SET `company_description` = '{$_POST['description']}' , `since` = '{$_POST['since']}' , `smoking` = '{$_POST['select3']}' , `delivery` = '{$_POST['select5']}' , `alcohol` = '{$_POST['select6']}' , `kids` = '{$_POST['select1']}' , `wheelchair` = '{$_POST['select2']}' , `twitter` = '{$_POST['twitter']}' , `facebook` = '{$_POST['facebook']}' , `youtube` = '{$_POST['youtube']}' , `premium` = '{$_POST['premium']}' , `creditcards` = '{$_POST['select4']}' , `outdoor` = '{$_POST['select7']}' , `featured` = '{$_POST['featured']}' , `shortdesc` = '{$_POST['shortdesc']}' WHERE company_id = '$id' "; 
    mysql_query($sql) or die(mysql_error()); 
    echo "Edited Row<br/>"; 
    echo "<a href='allbiz.php'>Back To Listing</a>"; 
    } 

    $row = mysql_fetch_array (mysql_query("SELECT * FROM `company` WHERE `id` = '$id' ")); 

?> 

,這裏是我的形式:

<form action='' method='POST'> 
    <p><b>Name:</b><br /><input type='text' name='name' value='<?= $row['name'] ?>' /> 
    <p><b>Phone:</b><br /><input type='text' name='phone' value='<?= stripslashes($row['phone']) ?>' /> 
    <?php 
     $cat1 = stripslashes($row['cat1']); 
     $cat2 = stripslashes($row['cat2']); 
     $cat3 = stripslashes($row['cat3']); 
     $subcat1 = stripslashes($row['subcat1']); 
     $subcat2 = stripslashes($row['subcat2']); 
     $subcat3 = stripslashes($row['subcat3']); 
    ?> 
    <p><b>Cat1:</b><br /> 
    <?php 
     $query="SELECT * FROM cat"; 
     $result = mysql_query ($query); 
     echo"<select name='cselect1' id='cat1'><option value='0'>Please Select A Category</option>"; 
     // printing the list box select command 
     while($catinfo=mysql_fetch_array($result)){//Array or records stored in $nt 
      echo "<option value=\"".htmlspecialchars($catinfo['number'])."\">".$catinfo['cat']."</option>"; 

     } 
     echo"</select>"; 
    ?> 
    <?php 
     $query="SELECT * FROM subcat"; 
     $result = mysql_query ($query); 
    echo"<select name='sselect1' id='subcat1'><option value=''>Sub Category</option>"; 
    echo $subcat1; 
    echo"'>$sucat1</option>"; 
     // printing the list box select command 
     while($catinfo=mysql_fetch_array($result)){//Array or records stored in $nt 
      echo "<option value='".htmlspecialchars($catinfo['subcat'])."' class='".$catinfo['catnumber']."'>".$catinfo['subcat']."</option>"; 
     } 

     echo"</select>"; 
    ?> 

    <p><b>Cat2:</b><br /> 
    <?php 
     $query="SELECT * FROM cat"; 
     $result = mysql_query ($query); 
    echo"<select name='cselect2' id='cat2'><option value='0'>Please Select A Category</option>"; 
     // printing the list box select command 
     while($catinfo=mysql_fetch_array($result)){//Array or records stored in $nt 
      echo "<option value=\"".htmlspecialchars($catinfo['number'])."\">".$catinfo['cat']."</option>"; 

     } 
    echo"</select>"; 
    ?> 
    <?php 
    $query="SELECT * FROM subcat"; 
    $result = mysql_query ($query); 
echo"<select name='sselect2' id='subcat2'><option value=''>Sub Category</option>"; 
echo $subcat1; 
echo"'>$sucat1</option>"; 
    // printing the list box select command 
    while($catinfo=mysql_fetch_array($result)){//Array or records stored in $nt 
     echo "<option value='".htmlspecialchars($catinfo['subcat'])."' class='".$catinfo['catnumber']."'>".$catinfo['subcat']."</option>"; 
    } 

    echo"</select>"; 
    ?> 
    <p><b>Cat3:</b><br /> 
    <?php 
    $query="SELECT * FROM cat"; 
    $result = mysql_query ($query); 
echo"<select name='cselect3' id='cat3'><option value='0'>Please Select A Category</option>"; 
    // printing the list box select command 
    while($catinfo=mysql_fetch_array($result)){//Array or records stored in $nt 
     echo "<option value=\"".htmlspecialchars($catinfo['number'])."\">".$catinfo['cat']."</option>"; 

    } 
    echo"</select>"; 
    ?> 
    <?php 
    $query="SELECT * FROM subcat"; 
    $result = mysql_query ($query); 
echo"<select name='sselect3' id='subcat3'><option value=''>Sub Category</option>"; 
    // printing the list box select command 
    while($catinfo=mysql_fetch_array($result)){//Array or records stored in $nt 
    echo "<option value='".htmlspecialchars($catinfo['subcat'])."' class='".$catinfo['catnumber']."'>".$catinfo['subcat']."</option>"; 
    } 

    echo"</select>"; 
    ?> 

我離開了形式代碼的其餘部分(但如果需要,我可以張貼)。現在,這是我的問題:在名稱和電話等文本輸入上,它們的值默認爲數據庫中的內容,這就是爲什麼它會迴應value='<?= $row['name'] ?>'。這意味着如果用戶不編輯這些,默認值將被髮送到mysql更新並保持不變。不幸的是,選擇/下拉列表的設置與Mike Tuupola的Chained選擇一樣,並且在用戶點擊它之前沒有值 - 這意味着 - >用戶進入編輯狀態,只想編輯業務名稱並提交,這意味着所有的選擇保存爲0.

我該如何得到它,所以如果我不將選擇/下拉選項更改爲不會保存爲0的值並且只是保持原樣是?

感謝您的幫助!

回答

0

兩個選項:

前處理POST數據,從數據庫讀取當前信息。對於任何設置爲0的POST值,將其更改爲當前存儲的值。

根據提交的值動態構建SQL更新查詢,檢查每個值是否都設置爲0。

$update_query = ""; 
foreach(Array('company_name', 'company_description', 'started') as $key) { 
    if(isset($_POST[$key]) && $_POST[$key] !== 0) { 
     if($update_query) { 
      $update_query .= ", "; 
     } 
     $update_query .= "`{$key}`='". mysql_real_escape_string($_POST[$key]) ."'"; 
    } 
} 
if($update_query) { 
    mysql_query("UPDATE `table` SET {$update_query} WHERE `id`='$id' LIMIT 1"); 
} 
+0

一個比另一個更好嗎? – Muhambi 2012-07-26 17:52:38

+0

我個人傾向於做第一個選擇,但那只是因爲它更適合我爲這些頁面設計代碼結構的方式。我會說第二種方法是更好的方法,因爲你不會碰到你不會更新的領域。 – 2012-07-26 21:52:02