Autor Zpráva
maks
Profil
Ahoj,

mám propojovací tabulku obsahující 3 sloupce - ID (AutoIncrement), ID_produktu. Jde o to (ID_produktu je ID z jiné tabulky, to je asi jasné), že mám sadu checkboxů v HTML a podle těch, které jsou zaškrtnuté, potřebuji vložit neznámé množství řádků sem do DB.

<input type="checkbox" name="products[1]">
<input type="checkbox" name="products[2]">
<input type="checkbox" name="products[3]">
<input type="checkbox" name="products[4]">
...
<input type="checkbox" name="products[30]">


Po odeslání v dumpu mám např.:
["products"]=>  array(7) { [1]=>  string(2) "on" [2]=>  string(2) "on" [6]=>  string(2) "on" [7]=>  string(2) "on" [17]=>  string(2) "on" [21]=>  string(2) "on" [28]=>  string(2) "on" }


A tudíž by mělo do tabulky přibýt 7 řádků ve tvaru
5 | 1
5 | 2
5 | 6
5 | 7
5 | 17
5 | 21
5 | 28



Jde tenhle INSERT provést jedním dotazem?

Děkuji.
Taps
Profil
maks:
vložit řádky do databáze přes foreach
maks
Profil
Taps:
zkoušel jsem takto
mysql_query ("INSERT INTO table
			VALUES  " . foreach($_POST['products'] as $prod => $value) . "('', $id, " . $prod . ")");
// na konci dotazu bude asi chyba, to zatím nevadí, neladil jsem ten dotaz, jen přepsaal Tapsovu myšlenku
// potřeboval jsem toto: INSERT INTO table VALUES (1, 5, 1), (2, 5, 2), (3, 5, 6), (4, 5, 7), (5, 5, 17), (6, 5, 21), (7, 5, 28)


Ale skončí to Parse errorem - unexpected foreach.


Samozřejmě, možnost je udělat pro každý checked checkbox vlastní dotaz, ale to se mi nelíbí, možností může být až 50 (krát počet uživatelů, krát počet stránek, kde něco podobného bude... Nic moc).
Keeehi
Profil
$dotaz="INSERT INTO table  VALUES";
foreach($_POST['products'] as $prod => $value)
  $dotaz.= " ('',$id,$prod),");
$dotaz=substr($dotaz,0,-1).";";
mysql_query($dotaz);
maks
Profil
Keeehi:
děkuji, poskládat dotaz z více částí mě nenapadlo. Super.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: