[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: select в php
m4a1fox
Всем доброго времени суток! Есть вот такой вопрос! Есть функция
<td><b>Категория:</b></td>
<
td><select name="ind">
<?php
$query = "SELECT id, title FROM number";
$id = mysql_query($query);
if(!$id) exit("Ошибка - ".mysql_error());
while($ind=mysql_fetch_array($id))
{
echo "<option value='$ind[id]'>$ind[title]</option><br />";
}
?>

</select></td>
выбирает значения и записывает в переменную! Работает здорово! Но мне стало интересно! И я пошел еще дальше для себя! Если я создам поле - скрытое в которое будет заноситься переменная id то как мне сделать так, что в этом select видимое значение было равно тому же значению что и id!



Спустя 3 минуты, 50 секунд (6.12.2010 - 20:33) inpost написал(а):
А зачем?

Спустя 3 минуты, 6 секунд (6.12.2010 - 20:36) inpost написал(а):
"<option value='$ind[id]'>$ind[id]</option><br />" ???

Спустя 3 минуты, 52 секунды (6.12.2010 - 20:40) m4a1fox написал(а):
Объясню! Панель редактирования допустим новости! Допустим я внес изменения, и у меня id это новости равен допустим 3, а в селекте(это выбор категории) на первом месте стоит например дома(id=2) а ниже в выпадающем списке есть то id который 3! И тогда эта новость будет уже в другой категории! Поэтому и хочу, что бы по умолчанию на первое место ставился бы id с тем номеров, который находится в скрытом поле! Я просто не знаю, есть ли такая функция у select или нет!

Спустя 1 минута, 25 секунд (6.12.2010 - 20:42) m4a1fox написал(а):
inpost
Но ведь по умолчанию, в селест на месте выбора будет та позиция id у которой выше!

Спустя 23 минуты, 4 секунды (6.12.2010 - 21:05) sergeiss написал(а):
Цитата (m4a1fox @ 6.12.2010 - 21:42)
Но ведь по умолчанию, в селест на месте выбора будет та позиция...

Я не знаю, что ты имеешь ввиду под словами "по умолчанию", но показываться будет та опция, у которой будет прописано selected="selected". Вне зависимости от ее места в списке.

Спустя 16 минут, 53 секунды (6.12.2010 - 21:21) inpost написал(а):
sergeiss
Так он это хотел? Как сложно порой людей понять =)))

Спустя 7 минут, 31 секунда (6.12.2010 - 21:29) m4a1fox написал(а):
Спасибо! Разобрался!

Спустя 51 секунда (6.12.2010 - 21:30) m4a1fox написал(а):
Как ни крути, хоть тут Попова и не очень жалуют, но у него есть что посмотреть и может быть найти ответ!))))

Спустя 1 минута (6.12.2010 - 21:31) m4a1fox написал(а):
Собственно запрос такой получился
<?php
$query = mysql_query ("SELECT id, title FROM number");
$ind = mysql_fetch_array ($query);
echo "<select name='id_number'>";

do {
if ($row['id_number'] == $ind['id'])
{
echo "<option value='$ind[id]' selected>$ind[title]</option>";
}
else
{
echo "<option value='$ind[id]'>$ind[title]</option>";
}
}

while ($ind = mysql_fetch_array($query));
echo "</select>";

?>
кто что поправит?

Спустя 3 минуты, 42 секунды (6.12.2010 - 21:35) inpost написал(а):
Ещё раз у тебя увижу do-while, mysql_fetch_ARRAY - перестану тебе помогать вообще! Сколько можно указывать на одно и то же самое?

Спустя 37 секунд (6.12.2010 - 21:35) sergeiss написал(а):
Цитата (m4a1fox @ 6.12.2010 - 22:31)
кто что поправит?

Ну замени ты это дебильный цикл на нормальный!!!!!!!!!!!!!!!!!!& #33;!!! Глаза от него болят уже... Вот тут почитай про выборку нормальную: http://phpforum.ru/index.php?showtopic=21916

И вот это
Цитата (m4a1fox @ 6.12.2010 - 22:31)
if ($row['id_number'] == $ind['id'])
{
  echo "<option value='$ind[id]' selected>$ind[title]</option>";
}
else
{
  echo "<option value='$ind[id]'>$ind[title]</option>";
}

лучше переписать; в случае изменений проще будет их делать (заодно обрати внимание на все изменения, которые я сделал)
echo "<option value='".$ind['id']."'";

if ($row['id_number'] == $ind['id']) echo ' selected ';

echo '>'.$ind['title'].'</option>';

Спустя 4 минуты, 20 секунд (6.12.2010 - 21:39) inpost написал(а):
m4a1fox
<select name="id_number">
<?php
$query = mysql_query ("SELECT `id`, `title` FROM `number`");
$ind = mysql_fetch_assoc ($query);
while ($ind = mysql_fetch_array($query))
echo '<option value="'.$ind['id'].'"'.($row['id_number'] == $ind['id']) ? ' selected' : '').'>'.$ind['title'].'</option>';
?>
</select>

Спустя 38 секунд (6.12.2010 - 21:40) m4a1fox написал(а):
inpost
Так! ARRAY - нельзя! Это понял! Значит accos?

Спустя 3 минуты, 42 секунды (6.12.2010 - 21:44) sergeiss написал(а):
inpost - ты сейчас получишь вопрос от ТС о том, что там делает знак вопроса внутри строки smile.gif Да и эту хрень хотя бы в круглые скобки заключил для наглядности, что ли...
Я специально расписал в 3 строки, да еще с пустыми строками между ними. Для той самой наглядности.

Спустя 2 минуты, 27 секунд (6.12.2010 - 21:46) inpost написал(а):
m4a1fox
array можно, и я сильно злюсь сейчас, когда по проекту он как бы глючит, в моей ситуации, над которой я работаю сейчас, удобнее было бы через array, но в твоей ситуации, я 10 раз отредактировал, тернартный оператор взял в скобки, чтобы было понятнее, читай предыдущий мой пост, у тебя должно выглядеть что-то вроде такого.

sergeiss
Собственно я уже взял в круглые скобки, чтобы было понятнее ТС =)

m4a1fox
Обрати внимание на вид в скобках. До вопроса стоит условие if(), потом вопрос, и 2 параметра, слева и справа двухиточий. Слева то, если условие удовлетворяет, справа - не удовлетворяет! То есть, если if=true, то пишется ' selected'.

Спустя 48 секунд (6.12.2010 - 21:47) inpost написал(а):
И ещё, больше спросит - больше научится =)

Спустя 2 минуты, 10 секунд (6.12.2010 - 21:49) m4a1fox написал(а):
sergeiss
Я может чего не понимаю, но такой запрос реально сложен для меня!

Спустя 5 минут, 36 секунд (6.12.2010 - 21:55) inpost написал(а):
m4a1fox
Ты про что именно? Мой код смотрел?

Спустя 47 секунд (6.12.2010 - 21:56) m4a1fox написал(а):
И он у меня не работает! Я знаю что он правильный, знаю что вы опытные и уверенны что я косячу, но он не хочет у меня работать!

Спустя 58 секунд (6.12.2010 - 21:57) m4a1fox написал(а):
Да, смотрел! Если его применять, то там скобка не закрыта! Где ее закрыть в этом запросе я не знаю,так как просто не знаю)

Спустя 1 минута, 54 секунды (6.12.2010 - 21:58) inpost написал(а):
m4a1fox
<select name="id_number">
<?php
$query = mysql_query ("SELECT `id`, `title` FROM `number`");
while ($ind = mysql_fetch_array($query))
echo '<option value="'.$ind['id'].'"'.($row['id_number'] == $ind['id'] ? ' selected' : '').'>'.$ind['title'].'</option>';
?>
</select>


А теперь смотри, они идентичны:
 echo ($row['id_number'] == $ind['id'] ? ' selected' : '');
if($row['id_number'] == $ind['id'])
{
echo ' selected';
}
else
{
echo '';
}

Спустя 2 минуты, 45 секунд (6.12.2010 - 22:01) m4a1fox написал(а):
inpost
Да! Так работает! Но выводит 2 строки, а у меня их 3! Одна - пропала!

Спустя 1 минута, 56 секунд (6.12.2010 - 22:03) inpost написал(а):
Я лишнее написал, вроде уже убирали... вот:
<select name="id_number">
<?php
$query = mysql_query ("SELECT `id`, `title` FROM `number`");
while ($ind = mysql_fetch_array($query))
echo '<option value="'.$ind['id'].'"'.($row['id_number'] == $ind['id'] ? ' selected' : '').'>'.$ind['title'].'</option>';
?>
</select>


Попытайся понять, что тут каждое значит, и зачем такие кавычки, а не другие! Если так и будешь повторять за Поповым, сам ничего не научишься.

Спустя 1 минута, 8 секунд (6.12.2010 - 22:04) inpost написал(а):
У тебя есть в начале скрипта что-то вроде:
if (isset($_GET)) или if(isset($_POST)) и т.д.? Покажи одну такую строчку.

Спустя 2 минуты, 41 секунда (6.12.2010 - 22:07) m4a1fox написал(а):
inpost
Да, так работает! Спасибо! Буду разбираться! Еще раз большое спасибо!
P.S. Вам минус ставить или плюс?

Спустя 40 секунд (6.12.2010 - 22:08) m4a1fox написал(а):
inpost
ЕстьPOST а что?

Спустя 54 минуты, 51 секунда (6.12.2010 - 23:02) inpost написал(а):
Попробуй его написать тернартным оператором! Раз научишься, потом будешь всегда делать так.
$text = (ТУТ ОПЕРАТОР, по тому примеру);

Спустя 1 час, 5 минут, 46 секунд (7.12.2010 - 00:08) ИНСИ написал(а):
интересно smile.gif недавно самому было это интересно. Если кому интересно, то вот мои наблюдения smile.gif http://phpforum.su/index.php?act=ST&f=127&...t=0#entry784020

Спустя 1 минута, 56 секунд (7.12.2010 - 00:10) inpost написал(а):
welbox2
Он воспринимает как 2 отдельных действия, мне так кажется, поэтому необходимы фигурные скобки (хотя надо проверять):
do
{
// тут вывод.
}


А так не будет работать:
do
//тут вывод.

Спустя 9 минут, 1 секунда (7.12.2010 - 00:19) ИНСИ написал(а):
inpost если ты по моему примеру, то:

Список выводится нормально. Даже значение selected выходит где-надо, но не становится первым в списке.

Спустя 12 минут, 56 секунд (7.12.2010 - 00:32) inpost написал(а):
welbox2
А зачем ему быть первым? Тут уже лучше в массив и сортировку перед выводом.

Спустя 38 секунд (7.12.2010 - 00:33) ИНСИ написал(а):
inpost ну имею в виду "сортировку перед выводом." неверно высказался.

Спустя 10 часов, 58 минут, 8 секунд (7.12.2010 - 11:31) sergeiss написал(а):
inpost - А тут и думать нечего. Кнопки Скобки для цикла нужны обязательно, как часть синтаксиса.


PS. Какие-то "кнопки" написал вместо "скобки"...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.