0

たとえば、朝食のシリアル、朝食のトースト、昼食のサラダ、昼食のメインなど、多くのコースを含むデータベースがあります。

これを使用して、入力したデータを結果を含む変数に入れます。次に例を示します。

breakfast_toast = Wholemeal;Brown;50/50;
and
breakfast_hotdrinks = Tea;Coffee;Milk;

これは、その情報を収集するために使用するスクリプトです。

 if(!empty($_POST['toast_selection'])) {
    foreach($_POST['toast_selection'] as $toast) {
    $toast = trim($toast);
    if(!empty($toast)) {
      $toastchoices .= "$toast;";
    }
   }
 }

これはまったく問題なく動作しますが、収集するエントリがたくさんあり、データベースにさらに追加する場合は自動的に収集したいと考えています。

私は方法を考えようとしましたが、私はそれを理解することができません.これは私が試したことです:

すべての入力は、$course_menuname と同じように呼び出されます (例: breakfast_cereal[])。

$query = "SELECT * FROM course";
$result = mysql_query($query);
while($row = mysql_fetch_array($result))
{

$course_menuname = $row['course_menuname']; #E.G breakfast_cereal, breakfast_toast, lunch_main
$course_item = $row['course_jsname']; #E.G cereal, toast, jacketpotato
$postResults = $_POST[''.$course_menuname .''];

  if(!empty($postResults)) {
    echo $postResults."<br />";
      foreach($postResults as $course_item) {
        $course_item = trim($course_item);
        if(!empty($course_item)) {
          $course_item1 .= "$course_item;";   
        }
      }
  }
echo $course_item1."<br />";
}

これは、最終結果が探すべきものです

 if(!empty($_POST['toast'])) {
   foreach($_POST['toast'] as $toast) {
    $toast = trim($toast);
    if(!empty($toast)) {
      $toastchoices .= "$toast;";
    }
   }
 }
 if(!empty($_POST['toastextra_selection'])) {
   #Gather Toast EXTRAs Choices
   foreach($_POST['toastextra_selection'] as $toastextra) {
    $toastextra = trim($toastextra);
    if(!empty($toastextra)) {
      $toastextrachoices .= "$toastextra;";
   }
  }
 }
 if(!empty($_POST['toastextra_selection'])) {
   #Gather Cold Drinks Choices
   foreach($_POST['colddrinks_selection'] as $colddrinks) {
    $colddrinks = trim($colddrinks);
    if(!empty($colddrinks)) {
      $colddrinkschoices .= "$colddrinks;";
    }
   }
 }
 if(!empty($_POST['hotdrinks_selection'])) {
   #Gather Hot Drinks Choices
   foreach($_POST['hotdrinks_selection'] as $hotdrinks) {
    $hotdrinks = trim($hotdrinks);
    if(!empty($hotdrinks)) {
      $hotdrinkschoices .= "$hotdrinks;";
    }
   }
  }
4

1 に答える 1

0

まず第一に、mysql_* 関数はもう使用しないでください。これらの関数は非推奨としてマークされています。あるいは、PDO または mysqli_* 関数を使用できます。

グループの変更が必要だと思います。簡単な例から始めましょう。

try {
    $data = array();
    $pdo = new PDO(...);
    foreach ($pdo->query("SELECT * FROM course") as $row) {
        if (!isset($data[$row['course_menuname'])) {
            $data[$row['course_menuname']] = array();
        }

        if (!empty($row['course_item'] && in_array($row['course_item'], $_POST[$row['course_menuname'])) {
            $data[$row['course_menuname'][] = $row['course_item'];
        }
    }
} catch (PDOException $e) {
    // error handling
}

// Output all choices by menuname
foreach ($data as $key => $value) {
    echo "Choices for " . $key . "\n";
    echo implode(";", $value) . "\n";
}
于 2013-10-29T17:30:59.343 に答える