开发者

HTML POST and fetch array

I have two problems here:

1. I have a problem with the value of the checkbox

2. I have a problem with the mysql_fetch_array($variable, ASSOC); method --> all the data from my database are VARCHAR type

1. All the variable with, at the end 'Cb', signified that this value is from a checkbox of a FORM. If a checkbox is checked, it means that the row (ex: Username) will be in the Select method for my Database (ex: SELECT Username FROM...)

I receive this Error 1. Undefined index: fonctionCb in C:\wamp\www\Projet Compte Utilisateur\manip_liste.php on line 7 2. Undefined variable: tab in C:\wamp\www\Projet Compte Utilisateur\manip_liste.php on line 14 ...etc from all the checkbox if they are not checked .. here is my PHP code

<?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"]){
         开发者_Go百科   $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'";    ?>    

2. The second ERROR and also I got this error from the fetch_array method Error: Warning: mysql_fetch_array() expects parameter 1 to be resource, string given in C:\wamp\www\Projet Compte Utilisateur\db_action.php on line 68

Here is the code from my method

function db_select($prep, $username){

        $querycon = "SELECT '$prep' FROM info_compte WHERE username = '$username'";
        if(!mysql_query($querycon)){
            echo "Il n\'y a aucun '$username' dans la base de données";
            $response = "";
        }
        else{
                while ($row = mysql_fetch_array(mysql_query($querycon), MYSQL_ASSOC))
                    printf("%s  %s  %s  %s  %s", $row["username"], $row["suffixe"], $row["password"], $row["siteWeb"], $row["fonction"]);  //The PRINTF dont work 
            }

        return $response;   
}//db_select

Thank you all to answer and i specify that i'm a beginner in practice who wants to learn ..


For part 1, one problem is that you may have a trailing comma on the end of $prep depending on what columns you end up selecting. To solve this try the below code (note I've added backticks around your column names, it's good practice but not required). The isset() function checks if a variable actually exists. Currently you are trying to access variables that may not exist, hence the errors.

<?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'";    ?> 

For your part 2 error, you have to assign the return of the mysql_query into a variable and pass that to mysql_fetch_array. You don't just pass it the query string. Try this:

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

UPDATE:

Note as well as the large addition for part 1, I've removed the single quotes around $prep in you SQL statement in part 2.

Read up on isset() but also, you can consider using array_key_exists(). I'm not sure on the relative performance comparison of the two.


Perhaps defining $tab along with $prep at the top will get rid of the "Undefined Variable"-error


As for your second question the expects parameter 1 to be resource, string given states that you have given it a string. In your code you have simply given it the values of $querycon which is $querycon = "SELECT '$prep' FROM info_compte WHERE username = '$username'"; a string.

You should assign a $variable to the mysql_query function and use that in the mysql_fetch_array method as the first param.

For the sake of completeness:

To answer your first question, your $tab variable is not being set as that if conditional is failing, therefore your attempts at concatenating are throwing errors.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜