HTML POST и выборочный массив - PullRequest
1 голос
/ 24 февраля 2011

У меня есть две проблемы:
1. У меня проблема со значением флажка
2. У меня проблема с mysql_fetch_array ($переменная, ASSOC);method -> все данные из моей базы данных имеют тип VARCHAR

1. Все переменные с, в конце 'Cb', означали, что это значение из флажка FORM,Если флажок установлен, это означает, что строка (например: Имя пользователя) будет в методе Выбрать для моей базы данных (например: ВЫБРАТЬ Имя пользователя ОТ ...)

Я получаю эту ошибку 1. Неопределенный индекс:fonctionCb в C: \ wamp \ www \ Projet Compte Utilisateur \ diver_liste.php в строке 7 2. Неопределенная переменная: tab в C: \ wamp \ www \ Projet Compte Utilisateur \ diver_liste.php в строке 14 ... и т. д. из всехфлажок если они не проверены .. вот мой код 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'";    ?>    

2. Вторая ошибка, а также я получил эту ошибку из метода fetch_array Ошибка: Внимание: mysql_fetch_array () ожидает, что параметр 1 будет ресурсом, строка указана в C: \ wamp \ www \ Projet Compte Utilisateur \ db_action.php в строке 68

Вот код из моего метода

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

Спасибо всем за ответ, и я уточняю, что я новичок на практике, который хочет учиться ..

Ответы [ 3 ]

2 голосов
/ 24 февраля 2011

В части 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'";    ?> 

Для вашей ошибки в части 2 вы должны присвоить возврат mysql_query в переменную и передать его в mysql_fetch_array. Вы не просто передаете ему строку запроса. Попробуйте это:

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:

Обратите внимание, что помимо большого дополнения для части 1, я удалил одинарные кавычки вокруг $ prep в вашем операторе SQL в части 2.

Читайте isset(), но вы также можете рассмотреть возможность использования array_key_exists(). Я не уверен в сравнительном сравнении производительности этих двух.

2 голосов
/ 24 февраля 2011

Возможно, определение $ tab вместе с $ prep вверху избавит от ошибки «Undefined Variable»

0 голосов
/ 24 февраля 2011

Что касается вашего второго вопроса, expects parameter 1 to be resource, string given утверждает, что вы дали ему строку. В вашем коде вы просто дали ему значения $querycon, что является $querycon = "SELECT '$prep' FROM info_compte WHERE username = '$username'"; строкой.

Вы должны присвоить переменную $ функции mysql_query и использовать ее в методе mysql_fetch_array в качестве первого параметра.

Ради полноты:

Чтобы ответить на ваш первый вопрос, ваша переменная $ tab не установлена, так как условное условие if не выполняется, поэтому ваши попытки объединения приводят к ошибкам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...