Задать вопрос
@SARCASM74

Отправка формы и разделение на массив данные из формы?

Добрый день, помогите решить данную задачу.

Есть форма с текстовым полем и кнопкой отправить.

Нужно получая строку строго в таком формате:

Вася - 500; Петя - 450; Олег - 300; Александр - 250; Евгений - 100;
Разделить на массив где одно значение будет Имя (Логин на сайте) а второе кол-во монет.
И массово выдать именно этим Логинам монеты.

$str = 'Вася - 500; Петя - 450; Олег - 300; Александр - 250; Евгений - 100;';
$s = explode(';', $str);
foreach ($s as $value) {
$value = str_replace(' ', '', $value);
$z =  explode('-',$value);
print_r($z);
}


Остановился пока не этом((

Как теперь массово выдать монеты этим пользователям через mysqli ?

Буду очень рад вашей помощи.
  • Вопрос задан
  • 62 просмотра
Подписаться 1 Простой 6 комментариев
Решения вопроса 1
Примерное решение твоей задачи + следующие шаги для самостоятельного решения

1. Нужно указать название таблицы, где хранятся пользователи и их балансы.
2. Нужно заменить название столбца с именем пользователей.
3. Нужно заменить название столбца с балансом пользователей.
4. Желательно, собрать групповой SQL запрос, чтобы разом обновить несколько данных в MySQL.
5. Желательно, использовать PDO (подготовленные SQL запросы)
6. Желательно, делать проверку на существование пользователя. Если его нет, то создавать нового и начислять баланс.

// Получаем строку
	$str = 'Вася - 500; Петя - 450; Олег - 300; Александр - 250; Евгений - 100;';

	// Удаляем все пробелы из строки
	$str = str_replace(' ', '', $str);

	// Разделяем пользователей
	$users = explode(';', $str);

	// Проходимся по всем пользователям
	foreach ($users as $userIndex => $user){
		// Разделяем данные пользователя
		$userData = explode('-', $user);
		
		$userName = $userData[0]; // имя
		$userAmount = $userData[1]; // сумма

		// Собираем одиночный SQL запрос
		$sql = 'UPDATE users SET balance = balance + ' . $userAmount . ' WHERE user_name = ' . $userName;

		// Выполняем запрос к базе данных
		$mysqli->query( $sql );
	}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
explode(), foreach массива, trim() значений, опять explode(), получаете ваши значения.

UPD:
Как теперь массово выдать монеты этим пользователям через mysqli ?
Ну так откуда нам знать? Что за таблица, что и как там храните? Вообще понятие "массово" вставить разнородные данные может подходить только к инсерту, апдейт в вашем случае делается единично каждой записи по условию совпадения поля. Внутри вашего форича после получения данных и делайте апдейт.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы