带有SQL请求的函数上的PHP表单

带有SQL请求的函数上的PHP表单,php,sql,forms,request,Php,Sql,Forms,Request,我的php上有这个函数: function getLastMatchs($nb) { try { $db = new PDO(DBHOST, DBUSER, DBPASS); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { die('connexion failed: '.$e->ge

我的php上有这个函数:

function getLastMatchs($nb) {
    try
    {
    $db = new PDO(DBHOST, DBUSER, DBPASS);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
    catch(PDOException $e)
    {
        die('connexion failed: '.$e->getMessage());
    }
    $i=0;
        $get5tmatchs = $db->query('SELECT wid, lid, date, cwid, clid FROM `match`');
        while ($nb<$i)
        {
            $data5matchs = $get5tmatchs->fetch();
            echo '<tr>
                    <td>'.$data5matchs['wid'].'</td>';
                    echo '<td>'.$data5matchs['lid'].'</td>';
                    echo '<td>'.$data5matchs['cwid'].'</td>';
                    echo '<td>'.$data5matchs['clid'].'</td>';
                    echo '<td>'.$data5matchs['date'].'</td>
                    <br>
                </tr>';
        $i++;
        }
}
函数getLastMatchs($nb){ 尝试 { $db=新的PDO(DBHOST、DBUSER、DBPASS); $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_异常); } 捕获(PDO$e) { die('connexion failed:'。$e->getMessage()); } $i=0; $get5tmatchs=$db->query('match`'中选择wid、lid、date、cwid、clid); while($nbfetch(); 回声' “.$data5matchs['wid']”; 回显'.$data5matchs['lid'].'; 回显'.$data5matchs['cwid'].'; 回显'.$data5matchs['clid'].'; 回显'.$data5matchs['date'].'
'; $i++; } } 我的表格是:

echo '<form action="index.php" method="post">
                <h3>My question......</h3>
                <p>
                    <input type="text" name="nbmatchs" />
                    <input type="submit" value="ok" />
                </p>
                </form>';
        echo getLastMatchs('nbmatchs');
echo'
我的问题。。。。。。

'; echo getLastMatchs('nbmatchs');
比赛时间我怎么办?伙计们要我的桌子? 当我现在这样做的时候,什么都没有发生。 谢谢你的帮助


PS:例如,我的磁带5,我可以看到我在功能中输入的标签的5倍。

你想要完成的(据我所知)是允许访问者输入一个数字,然后在显示一些“匹配”数据后提交。访问者输入的数字起到了限制作用

1.从何处获取POST变量?您在表单下方放置了一个输入值为字符串“nbmatchs”的函数。我猜您希望提交表单并获取“nbmatchs”值,然后将其应用于SQL查询以进行筛选。您这样做的方式不起作用。您的表单元素上的action属性设置为index.php.Th在这里,我们将提交表单数据。因此,我们需要有一种方法来获取提交的POST变量。我们这样做:

永远不要信任客户端提供给您的数据。我们知道它必须是一个数字,让我们检查一下:

上面我们检查了数据客户机给出的是否真的是一个数字。如果是,我们将把这个numer分配给变量$nbmatches。如果数据客户机给出的不是一个数字(例如,某个字符串)我们将数字1分配给变量。此时,我们可能会结束脚本执行,并让访问者知道他必须输入一个数字,但如果有任何可疑之处,我们只将1分配给变量。之后,我们可以将该变量提交给函数getLastMatchs,该函数将该变量作为结果限制器分配给SQL查询。Assum假设所有代码都位于一个文件“index.php”中,则您应该具有以下代码:

<?php

function getLastMatchs($nbmatches) {

    try{
        $db = new PDO(DBHOST, DBUSER, DBPASS);
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch(PDOException $e) {
        die('connexion failed: '.$e->getMessage());
    }

    try {
        $select = $db->prepare('SELECT wid, lid, date, cwid, clid FROM `match` LIMIT '.$nbmatches.';');  
        $select->execute();
        $results = $select->fetchAll(PDO::FETCH_ASSOC);
    } catch(PDOException $ex) {
        echo "<span style='color:red'>".$ex->getMessage()."</span></p>";  
    }

    echo '<table>';

    foreach($results as $result){
        $output = '<tr>';
        $output .= '<td>'.$result['wid'].'</td>';
        $output .= '<td>'.$result['lid'].'</td>';
        $output .= '<td>'.$result['cwid'].'</td>';
        $output .= '<td>'.$result['clid'].'</td>';
        $output .= '<td>'.$result['date'].'</td>';
        $output = '</tr>';

        echo $output;
    }

    echo '</table>';

}

if(isset($_POST['nbmatchs'])){
    $nbmatches = is_numeric(trim($_POST['nbmatchs'])) ? $_POST['nbmatchs'] : 1;
    getLastMatchs($nbmatches);
}

?>

<form action="index.php" method="post">
    <h3>My question......</h3>
    <p>
        <input type="text" name="nbmatchs" />
        <input type="submit" value="ok" />
    </p>
</form>

我的问题。。。。。。


让我知道这是否按您所希望的方式工作。

我如何为show nb做这些人想要我的表?这意味着什么?我遇到了这个错误:调用未定义的函数isNumeric()对不起,我错了。我把PHP的函数名写错了。它应该是
isNumeric
,而不是
isNumeric
。我对上面的代码进行了修复。如果你找到了问题的解决方案,请点击相应的按钮接受帖子作为答案。我有一个:未定义变量:data5matchs inOK我的mistake.修复了它。在foreach循环中,我将当前周期的变量保留为
$data5matchs
。相反,它应该是foreach括号中声明的
$result
。现在应该可以工作了。如果您对此有任何问题,请告诉我。
$nbmatches = is_numeric(trim($_POST['nbmatchs'])) ? $_POST['nbmatchs'] : 1;
<?php

function getLastMatchs($nbmatches) {

    try{
        $db = new PDO(DBHOST, DBUSER, DBPASS);
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch(PDOException $e) {
        die('connexion failed: '.$e->getMessage());
    }

    try {
        $select = $db->prepare('SELECT wid, lid, date, cwid, clid FROM `match` LIMIT '.$nbmatches.';');  
        $select->execute();
        $results = $select->fetchAll(PDO::FETCH_ASSOC);
    } catch(PDOException $ex) {
        echo "<span style='color:red'>".$ex->getMessage()."</span></p>";  
    }

    echo '<table>';

    foreach($results as $result){
        $output = '<tr>';
        $output .= '<td>'.$result['wid'].'</td>';
        $output .= '<td>'.$result['lid'].'</td>';
        $output .= '<td>'.$result['cwid'].'</td>';
        $output .= '<td>'.$result['clid'].'</td>';
        $output .= '<td>'.$result['date'].'</td>';
        $output = '</tr>';

        echo $output;
    }

    echo '</table>';

}

if(isset($_POST['nbmatchs'])){
    $nbmatches = is_numeric(trim($_POST['nbmatchs'])) ? $_POST['nbmatchs'] : 1;
    getLastMatchs($nbmatches);
}

?>

<form action="index.php" method="post">
    <h3>My question......</h3>
    <p>
        <input type="text" name="nbmatchs" />
        <input type="submit" value="ok" />
    </p>
</form>