Как я могу получить и сохранить несколько переменных $ _POST в a для каждого цикла? - PullRequest
1 голос
/ 17 октября 2011

Поэтому в настоящее время я использую стороннее программное обеспечение для получения результатов различных опросов. Это приложение отправляет результаты на страницу через переменную $ _POST.

Так, например ..

$demoEMP = $_POST['demoEMP'];

Это просто сохраняет ответ от конкретного вопроса в переменную.

Я хочу сохранить Вопросы 1-20 в переменных POST и вставить их в базу данных. Чего я не хочу, так это писать 20+ команд вставки или 20+ $ var = $ _POST ['var']

Так что я думал, что цикл for сделает свое дело ... Это то, что я имею до сих пор ... основываясь на различных методах и учебных пособиях. = /

for ($i = 0; $i < 55; $i++) {
$answer = "Q{$i}";
echo $_POST[$answer];
}

Я даже на правильном пути? Спасибо за вашу помощь!

UPDATE :: Решение Kas 'сработало отлично.

Я использовал что-то вроде этого ...

foreach ($_POST as $i => $v)
{
if (preg_match("/^Q\d+$/",$i)) {

// Here we insert value $v to database
$query_2 = mysql_query("INSERT INTO SGresult VALUES ('', '', '$pID', '$SGQID','$v')") or die('Error: '.mysql_error ());

} }

Однако сейчас я пытаюсь найти способ добавить идентификатор к вопросу и автоматически увеличивать этот идентификатор ... при каждой вставке. Я думал, что мог бы сделать что-то вроде $ SGQID ++, но это, похоже, не работает .. у кого-нибудь есть мысли?

Еще раз спасибо!

ладно, после еще нескольких попыток кажется, что размещение ++ было отключено, и оно должно быть после запроса ... правильный код выглядит следующим образом.

$SGQID= 1;

foreach ($_POST as $i => $v)
{

if (preg_match("/^Q\d+$/",$i)) {

// Here we insert value $v to database
$query_2 = mysql_query("INSERT INTO SGresult VALUES ('', '', '$pID', '$SGQID','$v')") or die('Error: '.mysql_error ());
$SGQID++; //added value to increment Question ID in DB

}
}

Ответы [ 2 ]

1 голос
/ 17 октября 2011
foreach ($_POST as $i => $v) {
  if (preg_match("/^Q\d+$/",$i)) {
    // Here we insert value $v to database
  }
}
0 голосов
/ 17 октября 2011

Вы можете перебрать сам массив $ _POST:

foreach ($_POST as $key => $value) {
    // Filter on value of $key
    // In this case only keep variables that start with a Q
    if (! substr($key, 0, 1) == 'Q') {
        continue;
    }

    // Do something with value
    echo $_POST[$key];     
}

Если вы хотите присвоить значения переменным PHP с тем же именем, что и ключ массива $ _POST, который вы можете использовать переменные переменные :

$$key = $value

Значение $ _POST ['demoEMP'] будет затем присвоено $ demoEMP.

...