[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Список
Vulkan
Подскажите пожалуйста как реализовать подобный список (во вложении скрин) и чтобы каждая строка записывалась в БД. Что то ищу, не могу найти, просто я не знаю точного названия этого элемента.



Спустя 28 минут, 32 секунды (20.04.2010 - 07:54) phz написал(а):
Если я правильно понял.... Делаем запрос, сортируем... и выбираем. Делаем список....

echo '<select name="id">';

$sql = mysql_query("SELECT * FROM `табличка` ORDER BY `тут столбик который сортируем` DESC");
while ($row = mysql_fetch_assoc($sql))
{
echo "<option value=\"". $row['id'] ."\">". $row['id'] ."</option>";
}

echo '</select>';


http://htmlbook.ru/html/select.html

Спустя 19 минут, 4 секунды (20.04.2010 - 08:13) Vulkan написал(а):
Спасибо, всё получилось)
Вот готовый код

//Начало формы
<form action="user.php?id=<? echo "$id"; ?>" method="post">
<
select name="day">
<
option value="1">1</option>
<
option value="2">2</option>
</
select>
<
BR><input type="submit" value="Сохранить настройки">
</
form>
//Конец формы

//Начало обработчика

<?
if($day=='')
{
echo "Вы не заполнили необходимые поля";
}
else{
//Записываем значение списка
$day=$_POST['day'];
$sql="UPDATE login SET day='$day' WHERE username='$username'";
$sql = mysql_query($sql) or die(mysql_error());
//Конец записи
}
//Считываем
echo '<select name="id">';
$sql = mysql_query("SELECT * FROM `login` ORDER BY `day` DESC");
while ($row = mysql_fetch_assoc($sql))
{
echo "<option value=\"". $row['day'] ."\">". $row['day'] ."</option>";
}
echo '</select>';
//Конец считывания
//Конец обработчика

?>

Спустя 1 час, 26 минут, 22 секунды (20.04.2010 - 09:39) Vulkan написал(а):
Только вот как сделать так чтобы выводилось в редактировании 31 строка? Я сделал так:
$sql = mysql_query("SELECT * FROM `login` ORDER BY `day` DESC");
while ($row = mysql_fetch_assoc($sql))
for($i = 1; $i <= 31; $i++) {

И у меня выводятся 31 строка в списке и в каждой строке значение 2(то есть то значение которое записано в БД)

Спустя 2 часа, 42 минуты, 1 секунда (20.04.2010 - 12:21) Vulkan написал(а):
Если сделать 31 строку
echo "<option value=\"". $row['day'] ."\">". $row['day'] ."</option>";

Тоже не идёт

Спустя 9 минут, 35 секунд (20.04.2010 - 12:31) sergeiss написал(а):
А зачем у тебя и цикл while, и цикл for?

Спустя 7 минут, 29 секунд (20.04.2010 - 12:38) Vulkan написал(а):
Ну для извлечения из БД

Спустя 2 минуты, 50 секунд (20.04.2010 - 12:41) sergeiss написал(а):
Вот у тебя извлечение из БД:
Цитата (Vulkan @ 20.04.2010 - 10:39)
while ($row = mysql_fetch_assoc($sql))

А цикл for для чего?

Спустя 2 минуты, 7 секунд (20.04.2010 - 12:43) ApuktaChehov написал(а):
Видимо, что бы ограничить кол-во выводимых записей.

Спустя 48 минут, 44 секунды (20.04.2010 - 13:32) Vulkan написал(а):
Только я даже не представляю как выводить в select данные из БД

Спустя 34 минуты, 46 секунд (20.04.2010 - 14:07) sergeiss написал(а):
Цитата (Vulkan @ 20.04.2010 - 14:32)
Только я даже не представляю как выводить в select данные из БД

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

Спустя 1 час, 29 минут, 43 секунды (20.04.2010 - 15:36) Vulkan написал(а):
Вот код:

//Начало формы
<form action="user.php?id=<? echo "$id"; ?>" method="post">
<
select name="day">
<
option value="1">1</option>
<
option value="2">2</option>
</
select>
<
BR><input type="submit" value="Сохранить настройки">
</
form>
//Конец формы

//Начало обработчика

<?
if($day=='')
{
echo "Вы не заполнили необходимые поля";
}
else{
//Записываем значение списка
$day=$_POST['day'];
$sql="UPDATE login SET day='$day' WHERE username='$username'";
$sql = mysql_query($sql) or die(mysql_error());
//Конец записи
}
//Считываем
echo '<select name="id">';
$sql = mysql_query("SELECT * FROM `login` ORDER BY `day` DESC");
while ($row = mysql_fetch_assoc($sql))
for($i = 1; $i <= 31; $i++) {
echo "<option value=\"". $row['day'] ."\">". $row['day'] ."</option>";
}
echo '</select>';
//Конец считывания
//Конец обработчика

?>

Выводится конечно 31 строка со значением 2, то есть тем значением которое записано в базе, а если убрать цикл for идёт одна строка со значением. А нужно 31 строка со значением от 1 до 31 и чтобы по умолчанию стояло значение из БД.

Спустя 44 минуты, 5 секунд (20.04.2010 - 16:20) sergeiss написал(а):
(неверный код!)
$sql = mysql_query("SELECT * FROM `login` ORDER BY `day` DESC");
while ($row = mysql_fetch_assoc($sql))
for($i = 1; $i <= 31; $i++) {
echo "<option value=\"". $row['day'] ."\">". $row['day'] ."</option>";
}
echo '</select>';
Цитата (Vulkan @ 20.04.2010 - 16:36)
Выводится конечно 31 строка со значением 2, то есть тем значением которое записано в базе, а если убрать цикл for идёт одна строка со значением. А нужно 31 строка со значением от 1 до 31 и чтобы по умолчанию стояло значение из БД.


Ничего удивительного smile.gif Что запросил, то и получил. Ты же берёшь только одну (первую) строку из БД, и выводишь её 31 раз smile.gif

Выкини цикл for, забудь о нем! Он тут не нужен.

Короче говоря. Прочитай вот эту тему, изучи ее "от А до Я", потом подумай, и задавай вопросы, если будут.

Спустя 40 минут, 18 секунд (20.04.2010 - 17:01) Vulkan написал(а):
прочитал, два раза, ну что то там нет чего-то подобного:
вот конечный код:
<form action="testim.php?id=<? echo "$id"; ?>" method="post">
<
select name="day">
<
option value="1">1</option>
<
option value="2">2</option>
</
select>
<
BR><input type="submit" value="Сохранить настройки">
</
form>
<?
include 'sql.php';
if($day=='')
{
echo "Вы не заполнили необходимые поля";
}
else{
$day=$_POST['day'];
$sql="UPDATE login SET day='$day' WHERE id='1'";
$sql = mysql_query($sql) or die(mysql_error());
}
echo '<select name="id">';
$sql = mysql_query("SELECT * FROM login WHERE id='1'");
while ($row = mysql_fetch_assoc($sql)){
echo "<option value=\"". $row['day'] ."\">". $row['day'] ."</option>";
}
echo '</select>';
?>

Спустя 16 часов, 33 минуты, 55 секунд (21.04.2010 - 09:35) Vulkan написал(а):
Неужели ни у кого нет вариантов?

Спустя 1 час, 6 минут, 1 секунда (21.04.2010 - 10:41) sergeiss написал(а):
Так проблема на данный момент какая? Выводится список, и осталось только показать выбранный ранее вариант?

Спустя 1 минута, 58 секунд (21.04.2010 - 10:43) Vulkan написал(а):
Нужно в списке сделать 31 строку (от 1 до 31) и чтобы по умолчанию стоял вариант который находится в БД (например 7)

Спустя 5 минут, 49 секунд (21.04.2010 - 10:48) sergeiss написал(а):
Цитата (Vulkan @ 20.04.2010 - 18:01)
echo "<option value=\"". $row['day'] ."\">". $row['day'] ."</option>";


Вот это надо разбить на 3 части (и обрати внимание, как я изменил кавычки, чтоб удобнее было писать и нагляднее). Насчет условия уж сам подумай smile.gif

echo '<option value="'. $row['day'] .'" ';
if( какое-то условие того, что определенная строка выбрана )
echo ' selected ';
echo '>'. $row['day'] .'</option>';

Спустя 5 минут, 43 секунды (21.04.2010 - 10:54) Vulkan написал(а):
Так:
if( $row['day']=='$day' )
echo ' selected ';
echo '>'. $row['day'] .'</option>';
}
echo '</select>';
biggrin.gif ?
$day=$_POST['day'];

Если так, то как сделать тридцать одну строку? 31 раз писать строчку?)

Спустя 16 минут, 41 секунда (21.04.2010 - 11:11) sergeiss написал(а):
То, что я указал - это в цикле должно находиться!!!!!!!!!! <......> (далее следует длинное матерное ругательство на тему того, что надо думать и своей головой тоже).

Спустя 5 минут, 38 секунд (21.04.2010 - 11:16) Vulkan написал(а):
Хорошо, как доделаю, здесь выложу код, спасибо за помощь)

Спустя 11 минут, 28 секунд (21.04.2010 - 11:28) andrey написал(а):
WHERE id='1'

Это зачем?
Быстрый ответ:

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