Простая проблема с PHP While Loop - PullRequest
1 голос
/ 30 января 2011

У меня есть

mysqli_select_db($connect,"users");

$response = "Select * from revbut where onuser='$u'";
$rquery  =  mysqli_query($connect,$response);
$norows = mysqli_num_rows($rquery);






while($responseanswer=mysqli_fetch_array($rquery)){


if(json_encode($responseanswer['response']=='approve'))
{
include('response-2.php');  
}

else if(json_encode($responseanswer['response']=='reject'))
{
    include('response-3.php');
}
else
{
echo "Nothing in here. ";   
}
}

в базе данных есть два поля. Итак, один одобряет, а другой отвергает. Но php включает файл response-2.php дважды. почему так?

Ответы [ 3 ]

3 голосов
/ 30 января 2011

Потому что вы сравниваете $ responseanswer ['response'] с 'Approve' и с 'Reject', а затем json_encoding () с истиной или ложью.Кодировка json будет представлять собой строку, такую ​​как «true» или «false», и if («true») и if («false») в PHP оба имеют значение true.Фактически, единственными строками, которые будут if () в false, являются строки "0" и "".Здесь даже специально упоминается if ("false"): http://www.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting

Не совсем понятно, зачем вообще нужен json_encoding (), потому что вы не предоставили никаких примеров данных, но я уверенэто ошибка.

1 голос
/ 30 января 2011

Потому что вы запускаете цикл для каждой записи в вашем наборе результатов. Ваш цикл в основном говорит, что include-2.php каждый раз, когда поле 'response' равно "Approve". Если у вас есть 5 записей в таблице, где поле «response» имеет значение «Approve», ваш цикл будет включать response-2.php 5 раз.

Перед циклом while вы можете установить итерационную переменную:

$ i = 1;

В конце цикла повторяйте значение по одному:

$ я ++;

Затем проверьте значение $ i. Если оно равно чему-то большему, чем 1, не включайте снова. Например:

$i = 1;
while($responseanswer=mysqli_fetch_array($rquery)){


if(json_encode($responseanswer['response']=='approve'))
{
($i == 1 ? include('response-2.php') : "");  
}

else if(json_encode($responseanswer['response']=='reject'))
{
($i == 1 ? include('response-3.php') : "");  
}
else
{
echo "Nothing in here. ";   
}
$i++;
}
0 голосов
/ 30 января 2011

я думаю, что вы должны сделать это в своей базе данных, и вы должны сделать это:

иметь одну запись, которая имеет столбец ключа и имеет значение имени ключа, например

rejectOrAprove и значение, если его значение равно 1, а если отклонено, равно 0.

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