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