如何重新创建此 forloop 以多次工作


How to recreate this forloop to work many times?

我有一个数据库,其中包含许多课程,例如breakfast_cereal,breakfast_toast,lunch_salad,lunch_main等

我使用它来将他们输入的数据放入包含结果的变量中,例如:

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;";
    }
   }
  }

首先,你不应该再使用 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";
}