Здравствуйте! Есть таблица user_item, в ней есть колонки user_id, item_type и wh. Мне необходимо, чтобы для пользователя с id, равным, к примеру, 445 вычислялись все item_type'ы при условии, что wh равен нулю и затем выдавался результат в виде select'а (<select>...</select>), а в этом select'е для выбора отображались только item_type'ы, равные, к примеру, 67 и 82, если они были найдены по-условию. То есть, если при выполнении условий имеется item_type, равный 82, но нет item_type'а, равного 67, а при этом существует ещё сколько угодно item_type'ов, удовлетворяющих условию, но не равных 67 или 82, то выводиться в select будет только число 82, а если найдены и 67, и 82, то выводиться будут оба числа, то есть возможны любые комбинации. Если же не найдено ни одного из заданных чисел, то будет выводиться фраза "Нет результатов". Я написал вот такой код: Код (Text): <select name="item" id="item"> <? mssql_connect("127.0.0.1","sa","pass"); mssql_select_db("users"); $result=mssql_query("select * from user_item where user_id=445 and wh=0"); $res=mssql_fetch_assoc($result); ///if ($res['item_type'] == 67) {$first = 1;} else {$first = 0;}; if ($res['item_type'] == 82) {$second = 1;} else {$second = 0;}; if ($first == 1)...?/// echo '<option value='.$itog.'</option>'; ?> </select> Часть кода, выделенная знаками "///", - это тот момент, в котором я не могу разобраться, а именно в реализации условия для выполнения скрипта, помогите пожалуйста с кодом...
PHP: <select name="item" id="item"> <?php mssql_connect("127.0.0.1","sa","pass"); mssql_select_db("users"); $result = mssql_query('SELECT * FROM user_item WHERE user_id="445" AND wh="0" AND (item_type="67" OR item_type="82")'); if (mssql_num_rows($result) < 1) { print '<option value="-1">нет рузультатов</option>'; } else { while ($row = mssql_fetch_assoc($result)) { print '<option value="' . $row['item_type'] . '">' . $row['item_type'] . '</option>'; } } ?> </select> оно?
Вот ещё одна проблема возникла, он выводит в селектор то, что нужно, только пятикратно... то есть вместо нужных, к примеру 3-ёх строчек, он выводит эти 3 строчки 5 раз подряд в одном селекторе... в чём может быть проблема?
Код (Text): SELECT DISTINCT(item_type) FROM user_item WHERE user_id="445" AND wh="0" AND (item_type="67" OR item_type="82")
Код (Text): <select name="item" id="item"> <?php mssql_connect("127.0.0.1","sa","pass"); mssql_select_db("users"); $result = mssql_query('SELECT * FROM user_item WHERE user_id="445" AND wh="0" AND item_type IN (67, 82)'); $rows=mssql_num_rows($result); if ($rows<1) { print '<option value="-1">нет результатов</option>'; } else { while ($row = mssql_fetch_assoc($result)) { if ($row['item_type']==67) {$name=first;}; if ($row['item_type']==82) {$name=second;}; print '<option value="' . $row['item_type'] . '">' . $name . '</option>'; } } ?> </select> У меня в таблице item'ов с type'ом 67 два, поэтому должно отображаться всего 3 строки в селекторе, а отображаются они пятикратно...
1. Выведи mssql_num_rows 2. Выведи все результаты запроса целиком: while($row=mssql_fetch_assoc($result)) print_r($row); Ибо если он из одной таблицы по одному простому запросу выдергивает одни и те же строки несколько раз, то ето есть большой глюк
В смысле так (выделено знаками "///")? Код (Text): <select name="item" id="item"> <?php mssql_connect("127.0.0.1","sa","pass"); mssql_select_db("users"); $result = mssql_query('SELECT * FROM user_item WHERE user_id="445" AND wh="0" AND item_type IN (67, 82)'); ///$rows=mssql_num_rows($result);/// if ($rows<1) { print '<option value="-1">нет результатов</option>'; } else { while ($row = mssql_fetch_assoc($result)) ///print_r($row);/// { if ($row['item_type']==67) {$name=first;}; if ($row['item_type']==82) {$name=second;}; print '<option value="' . $row['item_type'] . '">' . $name . '</option>'; } } ?> </select> Если так, то весь селектор пустой...
Йад в студию!!! Ва-первых, вывести - это print, echo, var_dump, или чтото подобное Ва-вторых, все что находится между тэгами <select> и </select> и не является <option> браузер и не покажет, либо закомменти селект либо смотри HTML страницы. Результаты сюда плз
Сделал так: Код (Text): <select name="item" id="item"> <?php mssql_connect("127.0.0.1","sa","pass"); mssql_select_db("users"); $result = mssql_query('SELECT * FROM user_item WHERE user_id="445" AND wh="0" AND item_type IN (67, 82)'); $rows=mssql_num_rows($result); if ($rows<1) { print '<option value="-1">нет результатов</option>'; } else { while ($row = mssql_fetch_assoc($result)) { if ($row['item_type']==67) {$name=first;}; if ($row['item_type']==82) {$name=second;}; print '<option value="' . $row['item_type'] . '">' . $name . ' - '.$rows.' - '.print_r($row).'</option>'; } } ?> </select> Теперь в селекторе 4 одинаковые строки с содержанием "- 2 - 1"...
Эээ.. я вобчета думал что ты выполниш примерно такой код: Код (Text): <?php mssql_connect("127.0.0.1","sa","pass"); mssql_select_db("users"); $result = mssql_query('SELECT * FROM user_item WHERE user_id="445" AND wh="0" AND item_type IN (67, 82)'); print(mssql_num_rows($result)); while($row=mssql_fetch_assoc($result)) print_r($row); ?> безо всяких там селекторов..
3Array ( [item_id] => 66444 [user_id] => 445 [item_type] => 885 [wh] => 0 ) Array ( [item_id] => 66446 [user_id] => 445 [item_type] => 885 [wh] => 0 ) Array ( [item_id] => 82856 [user_id] => 445 [item_type] => 4687 [wh] => 0 )
Ну как видишь, запрос честно вывел тебе три результата. Сталбыть проблема не в mssql и скорей всего не в php. Может ты в яваскрипте чтото с этим селектом делаеш? А посмотри-ка HTML-код своего изначального примера и посчитай сколько OPTION он там сделал...