Спустя 28 минут, 32 секунды (20.04.2010 - 07:54) phz написал(а):
Если я правильно понял.... Делаем запрос, сортируем... и выбираем. Делаем список....
http://htmlbook.ru/html/select.html
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 строка? Я сделал так:
И у меня выводятся 31 строка в списке и в каждой строке значение 2(то есть то значение которое записано в БД)
$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 написал(а):
Вот код:
Выводится конечно 31 строка со значением 2, то есть тем значением которое записано в базе, а если убрать цикл for идёт одна строка со значением. А нужно 31 строка со значением от 1 до 31 и чтобы по умолчанию стояло значение из БД.
//Начало формы
<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 и чтобы по умолчанию стояло значение из БД. |
Ничего удивительного


Выкини цикл 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 части (и обрати внимание, как я изменил кавычки, чтоб удобнее было писать и нагляднее). Насчет условия уж сам подумай

echo '<option value="'. $row['day'] .'" ';
if( какое-то условие того, что определенная строка выбрана )
echo ' selected ';
echo '>'. $row['day'] .'</option>';
Спустя 5 минут, 43 секунды (21.04.2010 - 10:54) Vulkan написал(а):
Так:
?
Если так, то как сделать тридцать одну строку? 31 раз писать строчку?)
if( $row['day']=='$day' )
echo ' selected ';
echo '>'. $row['day'] .'</option>';
}
echo '</select>';

$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'
Это зачем?