小编dcc*_*ics的帖子

MySQL选择3个随机行,其中三行的总和小于值

我试图从表中选择三个随机行,其中它们的组合item_price列小于所需的量.

想象一下你有<input>一美元金额.输入美元金额时,数据库会返回三个随机项,其中组合价格小于或等于您输入的金额.

如果我输入300美元,你可以购买这三件商品,150美元,100美元和50美元.我在创建一个将返回符合此条件的三个项目的查询时遇到困难.

SELECT t1.item_id, t1.item_price
FROM items t1
INNER JOIN items t2 ON ( t1.item_id = t2.item_id )
GROUP BY t1.item_id, t1.item_name, t1.item_price
HAVING SUM( t2.item_price ) <=300
ORDER BY RAND( )
LIMIT 3 
Run Code Online (Sandbox Code Playgroud)

我认为这样可行,但我认为这只是一个巧合.它似乎只返回价格低于300美元,而不是总价不到300美元的任何三件商品.

我也试过这个查询:

SELECT t1.item_id, t1.item_price
FROM   items t1
JOIN   items t2 ON t2.item_id <= t1.item_id
WHERE  t2.item_price <= 500
GROUP  BY t1.item_id
HAVING SUM(t2.item_price) <= 500
ORDER  BY RAND()
LIMIT 3
Run Code Online (Sandbox Code Playgroud)

再次,似乎首先工作,但后来它开始返回2000美元的项目.

如果在PHP中有更好的(甚至牺牲性能)方式,我不介意.我只是觉得查询不会那么困难.

一如既往,感谢任何人的帮助.

php mysql

8
推荐指数
1
解决办法
1216
查看次数

Twitter Bootstrap 3 Typeahead/Tagsinput完成两次

编辑:添加工作JSFiddle

我正在使用Twitter Bootstrap TagsInput和Bootstrap Typeahead.我的源代码是一个json文件,但这是无关紧要的,我已经用静态源检查了.

在此输入图像描述

typeahead和tagsinput正在工作,但是当我按下enter,tab或单击标签时,它会创建一个完整的副本.

在此输入图像描述

每当我按Enter键或完成预先输入时,就会发生这种极端'默认'.如果我通过用逗号分隔来打破预先输入,或者将焦点从窗口移开,则不会发生.

这是输入:

<input id="itemCategory" type="text" autocomplete="off" class="tagsInput form-control" name="itemCategory">
Run Code Online (Sandbox Code Playgroud)

以下是脚本:

    <script>                        
        $('.tagsInput').tagsinput({
            confirmKeys: [13, 44],
            maxTags: 1,
          typeahead: {                  
            source: function(query) {
              return $.get('listcategories.php');
            }
          }
        });
    </script>
Run Code Online (Sandbox Code Playgroud)

我确信这是不可重复的东西,运气不好,所以我希望有人会有一些他们知道可能导致类似事情发生的机构知识.

这是dev中额外文本的图像.工具: 在此输入图像描述

我真的很感激任何建议或意见.谢谢.

工作代码

感谢@Girish,以下是"解决"这个问题的原因.我认为这是一个时间错误,在更新版本的jQuery或Typeahead中引入.这段代码只是手动删除额外的元素,虽然希望有一些东西可以防止它被放在那里,从而消除了额外的代码.现在它对我有用.

        $('.tagsInput').tagsinput({
            confirmKeys: [13, 44],
            maxTags: 1,
          typeahead: {                  
            source: function(query) {
              return $.get('tags.php');
            }
          }
        });
        $('.tagsInput').on('itemAdded', function(event) {
            setTimeout(function(){
                $(">input[type=text]",".bootstrap-tagsinput").val("");
            }, 1);
        });
Run Code Online (Sandbox Code Playgroud)

jquery typeahead twitter-bootstrap bootstrap-tags-input

7
推荐指数
1
解决办法
5113
查看次数

使用Dropup替换Bootstrap Dropdown(两个几乎相同的实现上的不同活动)

我正在github页面上进行一个项目.dropdown,.dropup如果div overflow-y: scroll会导致下拉菜单被截止/溢出,我会替换一个bootstrap .您可以在此jsfiddle中看到该功能正常工作.请注意,如果单击顶行右侧的省略号图标,它将下拉,如果单击底行上的图标,它将会下拉.

现在,我的实际实现(github页面),代码完全相同(下图),但是它想要在打开时替换所有.dropdown.dropup,包括截断的最顶行,如下图所示. 在此输入图像描述 我已经苦苦挣扎了一个星期而且无法弄明白.我尝试了一些不同的东西,我认为它已修复它但最终只是一个黑客,并没有在移动设备上工作,或者取代了一些但不是全部等等.

这是我正在使用的Javascript/jQuery,可以在jsfiddle和我的github源码中看到.

$(document).on("shown.bs.dropdown", ".dropdown", function () {
  // calculate the required sizes, spaces
  var $ul = $(this).children(".dropdown-menu");
  var $button = $(this).children(".song-menu");
  var ulOffset = $ul.offset();
  // how much space would be left on the top if the dropdown opened that direction
  var spaceUp = (ulOffset.top - $button.height() - $ul.height()) - $('#playlist').scrollTop();
  // how much space is left at the bottom …
Run Code Online (Sandbox Code Playgroud)

html javascript css jquery twitter-bootstrap-3

6
推荐指数
1
解决办法
461
查看次数

Crypt为两个不同(相似)密码返回相同的哈希值

我有一个使用crypt()的问题,如果用户有密码(本例中为password1),并且将其更改为password2,则哈希返回相同的结果.您可以在此处测试:OLD LINK 键入password1作为当前密码,password2作为新密码并确认密码,您将看到结果.如果输入完全不相似的密码,则没有问题.我知道还有其他方法可以使用哈希密码等.我比任何事都更好奇.我的代码如下:

<?php

$oldpassword="password1";

echo "<form method=\"post\">
<p>Enter Current Password: <input type=\"password\" name=\"currentpassword\" /></p>
<p>Enter New Password: <input type=\"password\" name=\"password\" /></p>
<p>Confirm New Password: <input type=\"password\" name=\"confirmpassword\" /></p>
<p><input type=\"submit\" value=\"Change Password\"></p>
</form>";

$user_id = $_SESSION['user_id'];
$pass=$_POST['password'];
$salt = 'xxxxx';
$currentpassword = crypt($_POST['currentpassword'], $salt);
$oldpassword = crypt($oldpassword, $salt);
if(isset($_POST['password'])) {
    if ($currentpassword !== $oldpassword) {
        echo "The password you entered for current password does not match our records.";
    }
    else {
        if ($_POST['password'] && $_POST['confirmpassword']) {
            if ($_POST['password'] …
Run Code Online (Sandbox Code Playgroud)

php hash crypt salt

5
推荐指数
1
解决办法
1517
查看次数

将PHPExcel文件解析为HTML

我有一个上传页面供用户上传excel文件,这是任务请求类型的一部分.我试图这样做,所以当提交任务时,你可以点击一个链接,然后显示他们上传的excel文件的html表.PHP-excel-reader可以很好地工作,但它不支持xlsx文件.我正在看PHPExcel,但不太明白我如何获取这些输出并从中创建一个html表.我也担心我不能在PHP中支持ZipArchive.

有谁知道他们已经将PHPExcel示例转换为html表的示例?

编辑:

以下代码运行良好.它在脚本运行时创建一个新文件.我无法弄清楚如何正确地重命名文件.目前,它正在将包含以下代码的实际phpexcel.php文件重命名为phpexcel.htm.我想取名$inputFileName并重命名exceluploads/Book7.htm为例如.我不确定它是否像改变那样简单$objWriter->save(path/name.htm);但是没有用,我收到了:

Warning: fopen(/exceluploads/Book7.htm) [function.fopen]: failed to open stream: No such file or directory in /var/www/Classes/PHPExcel/Writer/HTML.php on line 164

Fatal error: Uncaught exception 'Exception' with message 'Could not open file /exceluploads/Book7.htm for writing.'
Run Code Online (Sandbox Code Playgroud)

码:

    <?php

    /** Error reporting */
    error_reporting(E_ALL);

    /** Include PHPExcel */
    require_once dirname(__FILE__) . '/Classes/PHPExcel.php';


    // Create new PHPExcel object
    echo date('H:i:s') , " Create new PHPExcel object" , PHP_EOL;
    $objPHPExcel = new PHPExcel();

    $inputFileName = 'exceluploads/Book7.xlsx';
    $objPHPExcel = …
Run Code Online (Sandbox Code Playgroud)

php phpexcel

1
推荐指数
1
解决办法
2万
查看次数

根据PHP变量设置表单下拉列表

我有一个带有四个选项的下拉表单项.

<p>Priority: 
  <select required name=\"priority\">
    <option default value=\"1\">1 - 10 days</option>
    <option value=\"2\">2 - 5 days</option>
    <option value=\"3\">3 - 48 hours</option>
    <option value=\"4\">4 - 24 hours</option>
  </select>
</p>
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/2nmxN/

这些值已经使用1,2,3,4存储在SQL数据库中.我正在处理的页面是各种编辑页面,因此我希望在下拉列表中选择数据库中设置的任何值,这样用户就不必在提交时重新选择该值.我怎样才能找到它并根据设置选择正确的选项?使用像这样的文本字段,我没有问题:

echo "<p>Cost: <input required type=\"text\" name=\"cost\" value=\"".$cost."\">";
Run Code Online (Sandbox Code Playgroud)

我是否必须为每个值(if ($priority == 1) {...})等做四种不同的if语句?

html php mysql forms

1
推荐指数
1
解决办法
468
查看次数

从多个值中选择MySQL SELECT,仅返回完全匹配项

我有一个查询,该查询采用从先前查询中获得的标签ID,并从post_tag_map表中选择帖子ID。

例如,$ tagIds可以是"3,4,23,54"

'SELECT post_id FROM post_tag_map WHERE tag_id IN (' . $tagIds . ') ORDER BY `post_id`;'
Run Code Online (Sandbox Code Playgroud)

该查询可以很好地实现其目的,但是它返回具有其中任何一个tag_id的post_id。

我正在尝试仅获取包含所有这些tag_id的post_id。

例如,如果我搜索“新闻,政治,竞选”,则只想返回已被所有这三个标签标记的帖子,而不是任何包含这三个标签之一的帖子。

如何更改查询?

编辑:根据要求,我的表结构是3表。一个(post)具有post_id和post信息,一个(tag)具有tag_id和tag_name,以及post_tag_map,仅将两个ID映射在一起。

php mysql

1
推荐指数
1
解决办法
875
查看次数