Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Как из файла вывести построчно значения в input?
Kuzma92  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Пользователь
Сообщений: 81
Пользователь №: 46556
На форуме: 1 год, 14 дней
Карма:




Здравствуйте уважаемые специалисты. Подскажите, пожалуйста, как из txt файла вывести построчно значения в input type=radio ?

Файл txt имеет содержимое в таком порядке:
Red
Green
Blue
и т.д.

У меня есть такой рабочий код, где все значения в настоящий момент указаны прямо в нем:

$wlt=array("","");
if(@$us_list[8]=="Unknown") $wlt[0]='checked';
elseif(@$us_list[8]=="Red") $wlt[1]='checked'; // - это
elseif(@$us_list[8]=="Green") $wlt[2]='checked'; // - это
else $wlt[0]='checked';
echo"
<input name=wlt_n type=radio value=Red
$wlt[1]> <label>Красный</label> // - это
<input name=wlt_n type=radio value=Green
$wlt[2]> <label>Зеленый</label> // - это
<input name=wlt_n type=radio value=Unknown
$wlt[0]> <label>Неизвестен</label>";


Сам txt файл я редактирую через админку. И вот есть задача вывести все значения автоматически (только кроме значения - Unknown) чтобы управлять этим из админки, а не добавлять каждый раз новые значения вручную в коде. Подскажите, пожалуйста, как это сделать правильно.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
brevis  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 690
Пользователь №: 39616
На форуме: 10 лет, 10 месяцев, 7 дней
Карма: 71




$labels = [
"Red" => "Красный",
"Green" => "Зеленый",
"Blue" => "Синий",
//...
];

$checkedValue = "Green";

foreach(file("data.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) as $value) {
if ($value !== "Unknown") {
$checked = $value === $checkedValue ? " checked=\"checked\"" : "";
$label = $labels[$value] ?? $value;
echo "<input name=\"wlt_n\" type=\"radio\" value=\"$value\"$checked> <label>$label</label>\n";
}
}

https://glot.io/snippets/guviogcn43


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
FatCat  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



חשב את עצמו
******

Профиль
Журнал
Группа: Администратор
Почтальон группы
Сообщений: 6963
Пользователь №: 1
На форуме: 19 лет, 1 месяц, 13 дней
Карма: 145




brevis
Надо еще, если я правильно понял, внутри сделать цикл по $labels, чтобы по каждой позиции выводилась возможность выбора из 3 цветов. А тот, который в файле, сделать выбранным.


--------------------
Бесплатному сыру в дырки не заглядывают...
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
FatCat  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



חשב את עצמו
******

Профиль
Журнал
Группа: Администратор
Почтальон группы
Сообщений: 6963
Пользователь №: 1
На форуме: 19 лет, 1 месяц, 13 дней
Карма: 145




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


--------------------
Бесплатному сыру в дырки не заглядывают...
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kuzma92  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Пользователь
Сообщений: 81
Пользователь №: 46556
На форуме: 1 год, 14 дней
Карма:




brevis
FatCat
я вас приветствую!
Не, не совсем то, мне не нужно подменять значения) Прошу меня простить, вероятно, я вас немного запутал, задав вопрос не совсем некорректно.

$us_list[8] - это строка из файла с данными пользователя. При регистрации по умолчанию эта строка имеет значение "0". Поэтому я в коде и прописываю следующее:

// это:
if(@$us_list[8]=="Unknown") $wlt[0]='checked';
// это:
else $wlt[0]='checked';
// и это:
<input name=wlt_n type=radio value=Unknown $wlt[0]> <label>Неизвестен</label>";

Эти строки должны оставаться.

А вот файл file.txt - это уже совсем другой файл, который содержит разные значения (строка=значение), которые добавляются или удаляются через админку.

Так вот чтобы в коде не прописывать вручную:

// это:
elseif(@$us_list[8]=="Red") $wlt[1]='checked'; // - это
elseif(@$us_list[8]=="Green") $wlt[2]='checked'; // - это
// и это:

<input name=wlt_n type=radio value=Red $wlt[1]> <label>Красный</label> // - это
<input name=wlt_n type=radio value=Green $wlt[2]> <label>Зеленый</label> // - это


а заменив все это одной строкой, т.е. вывести автоматически все имеющиеся значения из файла file.txt, где каждая строка из этого файла будет выводиться через <input type=radio.

Это сообщение отредактировал Kuzma92 - 3.04.2024 - 15:16
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
brevis  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 690
Пользователь №: 39616
На форуме: 10 лет, 10 месяцев, 7 дней
Карма: 71




Kuzma92, что-то понятнее не стало smile.gif


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kuzma92  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Пользователь
Сообщений: 81
Пользователь №: 46556
На форуме: 1 год, 14 дней
Карма:




brevis
FatCat
вот посмотрите, пожалуйста, я сейчас делаю так:

file=file('../admin/db/file.txt');
foreach($file as $wlt) {
$chw=array("","");
if(@$us_list[8]==$wlt)$chw='checked';
else $chw[0]='checked';
echo"<input name=wlt type=radio value=".$wlt." ".$chw."><label>".$wlt."</label>";
}
echo"<input name=wlt type=radio value=Unknown $chw[0]><label>Unknown</label>";
?>

таким образом выводятся все значения из файла file.txt, и в конце Unknown. Как бы выводится все верно, так как нужно.

Но при выводе checked устанавливается у Unknown, а у всех остальных значений вместо checked устанавливается array. При том, что в файле пользователя в строке $us_list[8] прописано другое (неважно - Green, Gray, Blue) значение, и такое значение (такая строка) имеется в файле file.txt. Что я делаю неверно?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
brevis  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 690
Пользователь №: 39616
На форуме: 10 лет, 10 месяцев, 7 дней
Карма: 71




Цитата (Kuzma92 @ 3.04.2024 - 22:03)
Что я делаю неверно?

Ну как минимум делать из $chw массив не нужно.
Замени для начала везде $chw[0] на $chw. А строчку $chw=array("",""); можно убрать вообще.

UPD.
А вообще логика должна быть примерно такой:
$us_list[8] = 'Green'; // для примера

$file=file('file.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$wltMatched = false;
foreach($file as $wlt) {
$chw = '';
if (@$us_list[8] == $wlt) {
$wltMatched = true;
$chw = 'checked';
}
echo "<input name=wlt type=radio value=".$wlt." ".$chw."><label>".$wlt."</label>\n";
}
echo "<input name=wlt type=radio value=Unknown " . ($wltMatched ? '' : 'checked') . "><label>Unknown</label>";


https://glot.io/snippets/guwvwjtwr1


--------------------
PMПисьмо на e-mail пользователю
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kuzma92  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Пользователь
**

Профиль
Группа: Пользователь
Сообщений: 81
Пользователь №: 46556
На форуме: 1 год, 14 дней
Карма:




brevis
я увидел все свои ошибки. Полностью разобрал ваш код построчно и понял как это нужно делать правильно. Огромное вам спасибо за (не то чтобы за помощь), а для меня это больше за урок. Крепко жму вам руку!
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса