Если я правильно понимаю, ваш интерфейс выглядит так:
<form action="action.php" method=POST>
<input type="text" name="name1">
<input type="text" name="investment1">
<BR />
<input type="text" name="name2">
<input type="text" name="investment2">
<BR />
...
</form>
И вам нужен простой способ прочитать все поля. Если да, то предлагаю следующее:
$i = 1;
while (isset($_POST['name'.$i]) AND isset($_POST['investment'.$i]))
{
${'user'.$i} = $_POST['name'.$i] . ', ' . $_POST['investment'.$i];
$i = $i + 1;
}
В результате вы получите набор переменных с именами $user1, $user2, $user3..., которые затем можно использовать в стандартном операторе INSERT.
Однако ваша база данных, вероятно, нуждается в серьезной переработке.
ОБНОВЛЕНИЕ: дизайн не нормализован, и вы пытаетесь сохранить два разных типа данных в одном поле.
Трудно привести вам хороший пример лучшего дизайна базы данных, потому что я точно не знаю, что вы пытаетесь сделать. Если бы мне пришлось рискнуть предположить, это, вероятно, выглядело бы примерно так:
CREATE TABLE investments {
investment_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
investor VARCHAR,
amount FLOAT
};
Обычно вы делаете один INSERT для каждой строки на вашей странице:
INSERT INTO investments (investor, amount)
VALUES ('Peter', 200.00);
Если вы как-то сгруппируете свои инвестиции, скажем, по страницам или продуктам, то дизайн будет выглядеть примерно так:
CREATE TABLE pages {
page_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
};
CREATE TABLE investments {
investment_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
page_id INT REFERENCES pages(page_id),
investor VARCHAR,
amount FLOAT
};
Это означает, что вы создаете новую страницу для каждого набора инвестиций. Еще лучше было бы что-то вроде этого:
CREATE TABLE pages {
page_id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR
};
CREATE TABLE investors {
investor_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR
};
CREATE TABLE investments {
page_id INT REFERENCES pages(page_id),
investor_id INT REFERENCES investor(investor_id),
amount FLOAT,
PRIMARY KEY (page_id, investor_id)
};
Конечно, эти изменения делают ваши запросы более сложными, но они также делают вашу базу данных более гибкой и эффективной. Вам не обязательно делать это правильно с первого раза, но попробуйте найти другие хорошие базы данных и посмотрите, как они выглядят.
Вот несколько ссылок, которые могут помочь:
person
Gustav Bertram
schedule
09.11.2011