Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php HTML POST和fetch数组_Php_Mysql_Html_Checkbox - Fatal编程技术网

Php HTML POST和fetch数组

Php HTML POST和fetch数组,php,mysql,html,checkbox,Php,Mysql,Html,Checkbox,我这里有两个问题: 1。我对复选框的值有问题 2.我对mysql\u fetch\u数组($variable,ASSOC)有问题;方法-->我的数据库中的所有数据都是VARCHAR类型 1。所有在“Cb”结尾的变量表示该值来自表单的复选框。如果选中复选框,则表示该行(例如:用户名)将位于我的数据库的Select方法中(例如:Select Username FROM…) 我收到这个错误 1.未定义的索引:第7行C:\wamp\www\Projet Compte-usilimateur\manip_

我这里有两个问题:
1。我对复选框的值有问题
2.我对mysql\u fetch\u数组($variable,ASSOC)有问题;方法-->我的数据库中的所有数据都是VARCHAR类型

1。所有在“Cb”结尾的变量表示该值来自表单的复选框。如果选中复选框,则表示该行(例如:用户名)将位于我的数据库的Select方法中(例如:Select Username FROM…)

我收到这个错误 1.未定义的索引:第7行C:\wamp\www\Projet Compte-usilimateur\manip_-liste.php中的fonctionCb 2.未定义变量:第14行C:\wamp\www\Projet Compte-usilimateur\manip_-liste.php中的选项卡 …如果未选中复选框,则从所有复选框中选择等。。这是我的PHP代码

<?php   
$prep = "";

if(!$_POST['username'])
    echo 'Nom d\'utilisateur manquant';

if(($_POST["userCb"]) && ($_POST["suffixeCb"]) && ($_POST["fonctionCb"]) && ($_POST["passwordCb"])){
    $prep = " * ";
    $tab = "User    SUFFIXE     SITE    FONCTION    PASSWD";
}
else{   
        if($_POST["userCb"]){
            $prep += "username ,";
            $tab += "USER   ";
        }           
        if($_POST["suffixeCb"]){
            $prep += "suffixe ,";
            $tab += "SUFFIXE    ";
        }   
        if($_POST["passwordCb"]){
            $prep += "password ,";
            $tab += "PASSWD ";
        }
        if($_POST["siteCb"]){
            $prep += "siteWeb ,";
            $tab += "SITE   ";
        }
        if($_POST["fonctionCb"]){
            $prep += "fonction ";
            $tab += "Fx ";
        }
    }//ELSE

require("db_action.php");   //Require in the database connection.
$bd = db_open();
$data = db_select($prep,  $_POST["username"]); //Envoie des variables à afficher et du Username pour le SELECT

echo "'$tab'";
echo "'$data'";    ?>    

谢谢大家的回答,我指定我是一个想学习的初学者。

也许在顶部定义$tab和$prep会消除“未定义变量”-错误

也许在顶部定义$tab和$prep会消除“未定义变量”-错误

至于您的第二个问题,
希望参数1是resource,string given
表示您已经给了它一个字符串。在您的代码中,您只需将
$querycon
的值赋予它,即
$querycon=“从info_compte中选择'$prep',其中username='$username';
一个字符串

您应该为
mysql\u query
函数分配一个$variable,并将
mysql\u fetch\u array
方法中的$variable用作第一个参数

为了完整起见:


要回答第一个问题,如果条件失败,则$tab变量未设置为
,因此连接的尝试会引发错误。

至于第二个问题,
希望参数1是resource,string given
表示您已为其指定了字符串。在您的代码中,您只需将
$querycon
的值赋予它,即
$querycon=“从info_compte中选择'$prep',其中username='$username';
一个字符串

您应该为
mysql\u query
函数分配一个$variable,并将
mysql\u fetch\u array
方法中的$variable用作第一个参数

为了完整起见:


要回答第一个问题,如果
条件失败,$tab变量没有被设置为
,因此连接的尝试会引发错误。

对于第1部分,一个问题是$prep末尾可能有一个逗号,这取决于您最终选择的列。要解决这个问题,请尝试下面的代码(注意,我在列名周围添加了反勾号,这是一个很好的做法,但不是必需的)。
isset()
函数检查变量是否实际存在。目前,您正在尝试访问可能不存在的变量,因此会出现错误

<?php   
$prep = array();
$tab = '';

if(!isset($_POST['username']))
    echo 'Nom d\'utilisateur manquant';

if(isset($_POST["userCb"]) && isset($_POST["suffixeCb"]) && isset($_POST["fonctionCb"]) && isset($_POST["passwordCb"])){
    $prep[] = "*";
    $tab = "User    SUFFIXE     SITE    FONCTION    PASSWD";
}
else{   
        if(isset($_POST["userCb"])){
            $prep[] = "`username`";
            $tab .= "USER   ";
        }           
        if(isset($_POST["suffixeCb"])){
            $prep[] = "`suffixe`";
            $tab .= "SUFFIXE    ";
        }   
        if(isset($_POST["passwordCb"])){
            $prep[] = "`password`";
            $tab .= "PASSWD ";
        }
        if(isset($_POST["siteCb"])){
            $prep[] = "`siteWeb`";
            $tab .= "SITE   ";
        }
        if(isset($_POST["fonctionCb"])){
            $prep[] = "`fonction`";
            $tab .= "Fx ";
        }
    }//ELSE

// This line glues the pieces of the $prep array back together
$prep = implode(',', $prep);

require("db_action.php");   //Require in the database connection.
$bd = db_open();
$data = db_select($prep,  $_POST["username"]); //Envoie des variables à afficher et du Username pour le SELECT

echo "'$tab'";
echo "'$data'";    ?> 
更新:

请注意,除了第1部分的大量添加之外,我还删除了第2部分中YouSQL语句中$prep左右的单引号


在<代码> ISStET()/<代码>上阅读,但也可以考虑使用<代码> ARAYYXKEYION()/<代码>。我不确定两者的相对性能比较。

对于第1部分,一个问题是$prep结尾可能有一个逗号,这取决于您最终选择的列。要解决这个问题,请尝试下面的代码(注意,我在列名周围添加了反勾号,这是一个很好的做法,但不是必需的)。
isset()
函数检查变量是否实际存在。目前,您正在尝试访问可能不存在的变量,因此会出现错误

<?php   
$prep = array();
$tab = '';

if(!isset($_POST['username']))
    echo 'Nom d\'utilisateur manquant';

if(isset($_POST["userCb"]) && isset($_POST["suffixeCb"]) && isset($_POST["fonctionCb"]) && isset($_POST["passwordCb"])){
    $prep[] = "*";
    $tab = "User    SUFFIXE     SITE    FONCTION    PASSWD";
}
else{   
        if(isset($_POST["userCb"])){
            $prep[] = "`username`";
            $tab .= "USER   ";
        }           
        if(isset($_POST["suffixeCb"])){
            $prep[] = "`suffixe`";
            $tab .= "SUFFIXE    ";
        }   
        if(isset($_POST["passwordCb"])){
            $prep[] = "`password`";
            $tab .= "PASSWD ";
        }
        if(isset($_POST["siteCb"])){
            $prep[] = "`siteWeb`";
            $tab .= "SITE   ";
        }
        if(isset($_POST["fonctionCb"])){
            $prep[] = "`fonction`";
            $tab .= "Fx ";
        }
    }//ELSE

// This line glues the pieces of the $prep array back together
$prep = implode(',', $prep);

require("db_action.php");   //Require in the database connection.
$bd = db_open();
$data = db_select($prep,  $_POST["username"]); //Envoie des variables à afficher et du Username pour le SELECT

echo "'$tab'";
echo "'$data'";    ?> 
更新:

请注意,除了第1部分的大量添加之外,我还删除了第2部分中YouSQL语句中$prep左右的单引号


在<代码> ISStET()/<代码>上阅读,但也可以考虑使用<代码> ARAYYXKEYION()/<代码>。我不确定两者的相对性能比较。

对不起,这不是我的建议intention@ThorDozer:您应该使用
=
而不是
+=
连接字符串。另外,尝试使用
isset()
中的内容检查是否设置了值。我假设您的
$tab
变量没有被设置为如果条件失败,那么您连接的尝试就会抛出错误。@Russel Dias:您对isset()的意思是什么;方法我应该把它放在哪里?@ThorDozer:任何你正在测试的变量的存在性。第一个问题已经回答了。第二个仍然存在对不起,那不是我的intention@ThorDozer:您应该使用
=
而不是
+=
连接字符串。另外,尝试使用
isset()
中的内容检查是否设置了值。我假设您的
$tab
变量没有被设置为如果条件失败,那么您连接的尝试就会抛出错误。@Russel Dias:您对isset()的意思是什么;方法我应该把它放在哪里?@ThorDozer:任何你正在测试的变量的存在性。第一个问题已经回答了。第二个仍然显示为一-->但是..如果查看“printf”。。当我执行它时…除了$tab@ThorDozer:无需调用
mysql\u query
两次。只需在第一个
if
语句之前为其分配一个变量即可。另外,你能在while循环中对
$row
进行
变量转储吗?@Russel Diaz:对不起:就像我说的,我是乞丐,而且。。我是法国人,所以我不理解你最后评论的全部内容。关于var_转储。。我需要做什么?@ThorDozer:
var\u dump
是转储变量数据的好方法。我只想看看
$row
是否返回任何内容。因为你的代码在我看来没问题。。。艾尔
function db_select($prep, $username){
        $username = mysql_real_escape_string($username);
        $querycon = "SELECT $prep FROM info_compte WHERE username = '$username'";
        $response = mysql_query($querycon);
        if(!$response){
            echo "Il n\'y a aucun '$username' dans la base de données";
            $response = "";
        }
        else{
                while ($row = mysql_fetch_array($response, MYSQL_ASSOC))
                    foreach($row as $item)
                    {
                        echo $item.' ';
                    }
                }

        return $response;   
}//db_select