Autor | Zpráva | ||
---|---|---|---|
Spyro_x Profil * |
#1 · Zasláno: 2. 10. 2008, 11:28:01
Nazdar, potřeboval bych trochu poradit.
Z formuláře(checkboxy) mi přijdou dvě proměnné, potřebuju je spárovat, aby se zapsaly do db společně do jednoho řádku. $ar1 = array(1,5,8,20); $ar2 = array(3,4,1,2); Zkoušel sem to spárovat přes foreach ($my_array as $ar1 => $ar2) Výsledek by měl být takový, že se mi do db vytvoří toto: ar1 | ar2 ----------- 1 | 3 5 | 4 8 | 1 20 | 2 Díky za nápady. Projížděl sem všechny operace s poli na php.net, ale ne a ne na to přijít. |
||
BetaCam Profil |
#2 · Zasláno: 2. 10. 2008, 11:31:11
Spyro_x
array_combine($ar1, $ar2); |
||
Spyro_x Profil * |
#3 · Zasláno: 3. 10. 2008, 09:53:04
To bohužel můj problém nevyřešilo. Array stejně nereaguje.
Potřeboval bych $ar1 a $ar2 rozdělit tak, abych mohl dát to db tento příkaz: ar1 | ar2 ----------- 1 | 0 5 | 0 8 | 0 20 | 0 UPDATE tabulka SET ar2=$ar2 WHERE ar1=$ar1; Možná dělám chybu někde ve zpracování arraye. Přijdou mi hodnoty z checboxů, potom s nimi udělám toto: $prislo = implode(",",$_POST['ar1']); $ar1 = array($prislo); Děkuju za radu, už si nevím rady. |
||
srigi Profil |
#4 · Zasláno: 3. 10. 2008, 10:08:19 · Upravil/a: srigi
Pole do tabulky nemozes ulozit jedinym prikazom, tak ako si naznacil. Do SQL databazy musis posielat jednotlive prvky. Cize nejako takto:
$i = 0; foreach ($ar1 as $row) { mysql_query("INSERT INTO nazov_tabulky (id, ar1, ar2) VALUES (null, $row, " . $ar2[$i] . ")"; $i++; } |
||
Sicario Profil * |
#5 · Zasláno: 3. 10. 2008, 10:37:59
Do tabulky muzes vlozit vice zaznamu v jednom prikazu:
INSERT INTO table (..., ...) VALUES (..., ...), (..., ...), (..., ...), (..., ...) (Vyzkouseno v psql, mysql, v sqlite tusim nelze) Pri update neco takoveho logicky nejde, musis pouzit cyklus for. |
||
Spyro_x Profil * |
#6 · Zasláno: 3. 10. 2008, 11:11:07
Diky za radu srigi. Příkaz funuguje, bohužel se zapíše vždy jen první řádek, zbytek nic.
$ar1 = array(1,5,8,20); $ar2 = array(3,4,1,2); $i = 0; foreach ($ar1 as $row) { mysql_query("INSERT INTO nazov_tabulky (id, ar1, ar2) VALUES (null, $row, " . $ar2[$i] . ")"; $i++; } Výsledek v DB id | ar1 | ar2 --------------- 0..|..1...|..3... Zbytek nic. |
||
srigi Profil |
#7 · Zasláno: 3. 10. 2008, 11:22:04
Vlozenie do DB je mozne zjednodusit podla Sicariovho prispevku:
$query = "INSERT INTO nazov_tabulky (id, ar1, ar2) VALUES (null, " . $ar1[0] . ", " . $ar2[0] . "), (null, " . $ar1[1] . ", " . $ar2[1] . "), (null, " . $ar1[2] . ", " . $ar2[2] . "), (null, " . $ar1[3] . ", " . $ar2[3] . "), (null, " . $ar1[4] . ", " . $ar2[4] . ")"; // debug // echo $query; mysql_query($query); Neviem ci som sa nepomylil, takze query mozes debugovat pomocou odkomentovania echo prikazu. |
||
Spyro_x Profil * |
#8 · Zasláno: 3. 10. 2008, 11:24:25
Počet členů v poli je ale proměnný, takhle to udělat nemůžu.
Nechápu, proč nefunguje $i = 0; foreach ($ar1 as $row) { mysql_query("INSERT INTO nazov_tabulky (id, ar1, ar2) VALUES (null, $row, " . $ar2[$i] . ")"; $i++; } |
||
srigi Profil |
#9 · Zasláno: 3. 10. 2008, 11:30:02
„Nechápu, proč nefunguje “
To by aj mna zaujimalo. Ako keby to zaiterovalo iba 1x. Skus na konci vypisat $i, ci ma pozadovanu hodnotu. |
||
kajaman Profil |
#10 · Zasláno: 3. 10. 2008, 11:35:48 · Upravil/a: kajaman
for($i = 0; $i <= count($ar1); $i++){ mysql_query("INSERT INTO tabulka(id, ar1, ar2) VALUES ($i, $ar1[$i], $ar2[$i])"); } |
||
srigi Profil |
#11 · Zasláno: 3. 10. 2008, 11:46:54
kajaman
Neviem, ale asi bude treba ten QUERY zretazit, lebo takto definovane premenne poli sa tusim nedokazu vyexpandovat z retazca (s uvodzovkami). A asi aj stlpec id by mal dostavat inu hodnotu (null) ako $i, ak je to AUTOINCREMENT. Ale fungovat by to malo. |
||
kajaman Profil |
#12 · Zasláno: 3. 10. 2008, 11:55:13
„ak je to AUTOINCREMENT“
ano, ale pokud je auto_increment tak se v dotazu vůbec nemusí objevovat „asi bude treba ten QUERY zretazit“ to je možná pravda, u toho si nejstem nikdy jistej, takže vždy vyzkouším tak, a pak tak :-) |
||
Spyro_x Profil * |
#13 · Zasláno: 3. 10. 2008, 12:54:40
Kdepak, ani to nepomohlo, teď se v db vytvořilo:
ar1 | ar2 ---------- ..0..|..0.. ..1..|..4.. Nepomohlo by možná definovat key v arrayi? |
||
kajaman Profil |
#14 · Zasláno: 3. 10. 2008, 16:23:35
No, tak to tedy nechápu, protože tehnle cyklus:
$ar1 = array(1,2,3,4); $ar2 = array(5,6,7,8); for($i = 0; $i < count($ar1); $i++){ echo "INSERT INTO tabulka(id, ar1, ar2) VALUES($i, $ar1[$i], $ar2[$i])<br />\n"; } mě vytvoří tento výstup: INSERT INTO tabulka(id, ar1, ar2) VALUES(0, 1, 5) INSERT INTO tabulka(id, ar1, ar2) VALUES(1, 2, 6) INSERT INTO tabulka(id, ar1, ar2) VALUES(2, 3, 7) INSERT INTO tabulka(id, ar1, ar2) VALUES(3, 4, 8) takže myslím, že by to fungovat mělo. |
||
srigi Profil |
#15 · Zasláno: 3. 10. 2008, 17:39:09 · Upravil/a: srigi
Mozno bude nejaka chyba na strane MySQL. ASi by bolo vhodne zistovat result mysql_query(), mozno tam nieco bude: (pouzijem mierne upravveny Kajamanov kod)
$ar1 = array(1,2,3,4); $ar2 = array(5,6,7,8); for($i = 0; $i < count($ar1); $i++){ $result = mysql_query("INSERT INTO tabulka(ar1, ar2) VALUES ($ar1[$i], $ar2[$i])"); if (!$result) { die(mysql_error()); } } |
||
Časová prodleva: 16 let
|
0