PHP Birden Açılır Kutu Formu MySQL (Bölüm 2) için, Gönder

2 Cevap php

Bu da tartışma bir devamıdır

http://stackoverflow.com/questions/944158/php-multiple-dropdown-box-form-submit-to-mysql

hangi sözlerle sona erdi: ". Eğer değişkenler var, yeni bir satır oluşturmak için önemsiz" Bu öğrenci için genel olarak doğru, ama görünüşe göre değil, şüphe yok ...:-D

Aşağıdaki formu göz önüne alındığında:

    <form action="form.php" method="POST">
    <select name="colors[]" multiple="yes" size="2">
    <option>Red</option>
    <option>Blue</option>
    </select>
    <input type="submit" value="Go!"> 
    </form>

nasıl yeni satırlar oluşturabilirim? Aşağıdaki komut dosyası

foreach($_POST['colors[]'] as $color) 
    {
        $id = mysqli_real_escape_string($link, $color);
        $sql = "INSERT INTO colors SET id = '$id'";
    }

hata yükseltir

 Warning: Invalid argument supplied for foreach() in form.php on line ...

oysa şu

    $colors = $_POST['colors[]']; 
    for ($i = 0; $i < count($colors); $i++) 
        {
            $color = $colors[$i];
            $sql = "INSERT INTO colors SET id = '$color'";
        }

Hiçbir hata yükseltir ama hiçbir satır oluşturulmasını yapar.

Ne triviality Burada eksik?

2 Cevap

Kullanın:

foreach($_POST['colors'] as $color) 

Belirtmek gerek yok [] burada, php bir dizi olduğunu bilir.

Lütfen foreach döngü içinde ben sorguyu yürüttükten olduğunu görmedim. Sen INSERT deyimi ile mysql_query yürütmek gerekiyor.

foreach($_POST['colors'] as $color) {
 $id = mysqli_real_escape_string($link, $color);
 $sql = "INSERT INTO colors SET id = '$id'";
  if (!mysql_query($sql)) {  // if the query encountered a problem.
     die('Invalid query: ' . mysql_error());
  } 
}