Вставка одной недели (семь дней) и некоторых других данных в базу данных с использованием цикла for и PDO - PullRequest
0 голосов
/ 21 марта 2012

Это мои данные:

Day            From:     To:

Sunday         12PM      8PM

Monday         12PM      9PM

Tuesday        12PM      6PM

Wednesday      12PM      6PM

Thursday       12PM      6PM

Friday         12PM      5PM

Saturday       12PM      5PM

Как мне использовать цикл for для вставки вышеуказанных данных (из $ _POST) в мою базу данных MySQL с помощью PDO PHP? Мои поля ввода называются SundayTimeFrom, SundayTimeTo, MondayTimeFrom, MondayTimeTo и т. Д.

Псевдокод, который я набросал очень быстро:

$sql = 'Insert INTO tableName (day, from, to) Values (:day, :from, :to)';
for(i = Sunday; I < Saturday; i++) //what do I do here?
{
    $stmt = $this->_db->prepare($sql);
    $stmt->bindParam(":day", $i, PDO::PARAM_STR);
    $stmt->bindParam(":from", $_POST[$i + 'TimeFrom'], PDO::PARAM_STR);
    $stmt->bindParam(":to", $_POST[$i + 'TimeTo'], PDO::PARAM_STR);
}

Ответы [ 3 ]

1 голос
/ 21 марта 2012

Вы можете выполнить цикл 7 раз и использовать дату ('l', время () + 24 часа в секундах), чтобы получить дни в письмах.

Посмотрите на дату ('l') здесь http://php.net/date

Но лучше всего было бы изменить ваш $ _POST, чтобы получить что-то вроде $_POST['days'][0][from] = '10PM'; и $_POST['days'][0][to] = '8PM';

Вы можете сделать это, написав: <input type="text" name="days[][from]" value="10PM" /> если я правильно помню

или просто <input type="text" name="days[Monday][from]" value="10PM" /> и <input type="text" name="days[Monday][to]" value="8PM" /> и выполнение foreach($_POST['days'] as $value)

Как видите, у вас есть много решений:)

0 голосов
/ 21 марта 2012

Скажите, что ваш массив

$schedule = array (sunday => array (from=>"12PM", to=> "8PM"),
                   monday => array (from=>"1PM", to=> "9PM"),
                    tuesday => array (from=>"2PM", to=> "10PM"),
                    wednesday => array (from=>"3PM", to=> "11PM"),
  );

, используйте _REQUEST ["schedule"] и сохраните в некотором массиве, скажем, $ schedule.

теперь используйте foreach для сохранения массива в базе данных.

  foreach ($schedule as $day=>$temp1) {
    foreach ($temp1 as $key=>$time) {
      if($key == "from")
        $from = $time;
      else if($key == "to")
        $to = $time;
    }
    $sth = $this->db->prepare("Insert INTO tableName (day, from, to) Values (:day, :from, :to)");
    $sth->execute(array(':day'=> $day, ':from'=> $from, ':to'=> $to));
  }
0 голосов
/ 21 марта 2012

Если вместо SundayTimeFrom и SundayTimeTo поля будут иметь имена schedule[sunday][from] и schedule[sunday][to], вы можете использовать цикл foreach, например

$stmt = $this->_db->prepare($sql);
$stmt->bindParam(":day", $day);
$stmt->bindParam(":from", $from);
$stmt->bindParam(":to", $to);

foreach( $_POST['schedule'] as $day=>$span ) {
  someDataValidationHere($day, $span);
  $from = $span['from'];
  $to = $span['to'];
  $stmt->execute();
}

(не проверено)

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