dtcuv8044 2012-03-04 03:38
浏览 88
已采纳

如何自动检查mysql数据库中的复选框

I have a problem to solve which im not sure if it can be solved in the way that i have in mind. It's about a form with checkboxes. The purpose of this form is to allow users to add or remove their favorite brands from the database by checking/unchecking the form checkboxes. The challege that i face now is that there may already be brands selected in the past from the user. And i would like the page when it loads to check in the database and automatically check the brands in the form which where found in the database. I checked to see if it was possible with jquery , but i got stuck. Here is my code:

/* == SQL CODE == */

CREATE TABLE IF NOT EXISTS `favoriteBrands` (
`pkFavoriteBrand` int(5) NOT NULL AUTO_INCREMENT,
`fkCompanyID` int(5) NOT NULL,
`Brands` varchar(30) NOT NULL,
PRIMARY KEY (`pkFavorietemerken`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=81 ;


INSERT INTO `favoriteBrands` (`pkFavoriteBrand`, `fkCompanyID`, `Brands`) VALUES
(80, 7, 'Replay'),
(79, 7, 'Pepe Jeans'),
(71, 12, 'Nike'),
(70, 12, 'Le Coq Sportif'),

 /* == SQL CODE == */

 /* == PHP CODE == */
 <?php

 $find_fav_brands = " SELECT Brands FROM favoriteBrands WHERE fkCompanyID=$company_id";

 $get_brand        = mysql_query($find_fav_brands) or die ("No brand found");

 while($row = mysql_fetch_assoc($get_brand )){

$show_brand = $row["Brands"];

    echo"<p>$show_brand</p>";     
 }?>

 <form name="form" method="post" action="ready.php" >                       

<ul>

<li><input type="checkbox" name="merk[]" value="Adidas"/>Adidas</li>
<li><input type="checkbox" name="merk[]" value="Airforce"/>Airforce</li>
<li><input type="checkbox" name="merk[]" value="Armani"/>Armani</li>
<li><input type="checkbox" name="merk[]" value="Asics"/>Asics</li>
 </ul>

</form>
/* == PHP CODE == */
  • 写回答

2条回答 默认 最新

  • ds342222222 2012-03-04 03:45
    关注
    <?php
    
    $find_fav_brands = " SELECT Brands FROM favoriteBrands WHERE fkCompanyID=$company_id";
    
    $get_brand        = mysql_query($find_fav_brands) or die ("No brand found");
    $brands = array();
    while($row = mysql_fetch_assoc($get_brand )){
        $brands[]=$row["Brands"];
        $show_brand = $row["Brands"];
        echo"<p>$show_brand</p>";     
    }
    ?>
    <form name="form" method="post" action="ready.php">     
    
    <ul>
    <li><input type="checkbox" name="merk[]" value="Adidas"<?php echo in_array("Adidas",$brands)?" checked="checked"":""; ?> />Adidas</li>
    <li><input type="checkbox" name="merk[]" value="Airforce"<?php echo in_array("Airforce",$brands)?" checked="checked"":""; ?> />Airforce</li>
    <li><input type="checkbox" name="merk[]" value="Armani"<?php echo in_array("Armani",$brands)?" checked="checked"":""; ?> />Armani</li>
    <li><input type="checkbox" name="merk[]" value="Asics"<?php echo in_array("Asics",$brands)?" checked="checked"":""; ?> />Asics</li>
    </ul>
    
    </form>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • dongnao1908 2012-03-04 03:48
    关注

    1, I strongly do not suggest you to use 'string' as checkbox value. Try using IDs. It's much safer and easier to maintain your code.

    2, Since you are using <li> as your input container, run a loop to do so with PHP makes it much easier, like while or for/foreach.

    3, Your database only restored 'checked' values, but not unchecked. It is impossible to generate a complete list from it with all checkbox options. So, here are 2 solutions:

    3.1 Either save all options in your table structure, for example: brand1=0, brand2=1, brand3=1 etc. So you can foreach all your results and print 'checked=checked' when brandX != 1;

    3.2 Or, make an array of all possible options, and loop them, and put checked value if the data exists.

    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 爬虫爬取安居客新房信息
  • ¥15 php5.3内存泄露
  • ¥15 DigSilent如何复制复合模型到自己案例?
  • ¥15 求日版华为b610s-77a 官方公版固件,有偿
  • ¥15 关于#java#的问题,请各位专家解答!(相关搜索:java程序)
  • ¥15 linux tsi721的驱动编译后 insmod 提示 报错
  • ¥20 multisim测数据
  • ¥15 求无向连通网的所有不同构的最小生成树
  • ¥15 模拟器的framebuffer问题
  • ¥15 opencv检测轮廓问题