Autor | Zpráva | ||
---|---|---|---|
gix Profil * |
#1 · Zasláno: 6. 7. 2013, 17:35:02
Dobrý den,
pomocí jQuery jsem si udělal formulář ve kterém si uživatel "nakliká" libovolný počet textových polí: <input type="text" name=text_pole1> <input type="text" name=text_pole2> <input type="text" name=text_pole3> ... chtěl bych se zeptat jakým způsobem vložit pomocí php tyto řádky do databáze? Nechtěl bych to uložit jako kupu informací v poli - "text1,text2,text3", ale každý řádek jako samostatný v databázi - tz. výsledek: ID TEXT_POLE 1 text1 2 text2 3 text3 ... Kdybych měl pevný počet polí, tak je to jednoduché, ale s neurčitým si zatím neumím poradit. Díky za radu |
||
Alphard Profil |
#2 · Zasláno: 6. 7. 2013, 17:40:21
<input type="text" name="text_pole[]"> foreach ($_POST['text_pole'] as $item) |
||
gix Profil * |
#3 · Zasláno: 6. 7. 2013, 17:54:29
Jo takhle :-) Díky a ještě se zeptám... Když bude situaci o trosku složitější..
<div id="radek1"> <input type="text" name=jmeno1> <input type="text" name=telefon1> <input type="text" name=email1> </div> <div id="radek2"> <input type="text" name=jmeno2> <input type="text" name=telefon2> <input type="text" name=email2> </div> <div id="radek3"> <input type="text" name=jmeno3> <input type="text" name=telefon3> <input type="text" name=email3> </div> ... Jak tohle vložit do databáze v následujícím tvaru? ID JMENO TELEFON EMAIL 1 jmeno1 telefon1 email1 2 jmeno2 telefon2 email2 3 jmeno3 telefon3 email3 ... |
||
Alphard Profil |
#4 · Zasláno: 6. 7. 2013, 18:20:58
Já bych to konstruoval takhle
<input type="text" name="users[line_0][jmeno]"> Alternativně <input type="text" name="users[jmeno][]"> |
||
gix Profil * |
#5 · Zasláno: 6. 7. 2013, 18:43:22 · Upravil/a: gix
Tak teď jsem se do toho právě zamotal :-)
když budu mít HTML v takovémto tvaru: <form method="post" action="test.php"> <div id="radek1"> Jméno 1: <input type="text" name="users[line_1][jmeno]"> Telefon 1:<input type="text" name="users[line_1][telefon]"> Email 1:<input type="text" name="users[line_1][email]"> </div> <div id="radek2"> Jméno 2: <input type="text" name="users[line_2][jmeno]"> Telefon 2:<input type="text" name="users[line_2][telefon]"> Email 2:<input type="text" name="users[line_2][email]"> </div> <div id="radek3"> Jméno 3: <input type="text" name="users[line_3][jmeno]"> Telefon 3:<input type="text" name="users[line_3][telefon]"> Email 3:<input type="text" name="users[line_3][email]"> </div> <input type="submit" value="Vložit do databáze"> </form> Jak bude vypadat foreach ? Děkuji moc za odpověd. Zkoušel jsem něco jako: <?php // funguje tak jak ma var_dump($_POST['users']); // nefunguje $array = $_POST['users']; foreach ($array as list($a, $b, $c)) { echo "Jméno: $a; Telefon: $b; Email: $c\n"; } ?> Ale nefunguje - zobrazí chybu - Parse error: syntax error, unexpected 'list' (T_LIST) in C:\wamp\www\System2\test.php on line 28 Podařilo se mi vypsat hodnoty, ale pořád ne a ne je roztřídit: foreach ($array as $v1) { foreach ($v1 as $v2) { echo "Hodnota:$v2<br>"; } } |
||
Someone Profil |
$temp = array(); foreach($_POST['users'] as $user) { $temp[] = "'" . $user['jmeno'] . "','" . $user['telefon'] . "', '" . $user['email'] . "'"; } $db->query("INSERT INTO table(jmeno,telefon,email) VALUES(" . implode("),(",$temp) . ")"); Nezapomeň na patřičné escapování. |
||
... Profil * |
#7 · Zasláno: 7. 7. 2013, 11:57:07
Díky za odpověd.
Nahlásilo mi to chybu na tomto řádku: $db->query("INSERT INTO users(jmeno,telefon,email) VALUES(" . implode("),(",$temp) . ")"); Konkrétně Notice: Undefined variable: db in C:\wamp\www\System2\test4.php on line 31 Fatal error: Call to a member function query() on a non-object in C:\wamp\www\System2\test4.php on line 31 Chápu, že je asi něco s (" . implode("),(",$temp) . ") ale nemůžu přijít na řešení.
Děkuji za odpověd. |
||
juriad Profil |
...:
Zkus si přeložit hlášku: Nedefinovaná proměnná $db. Máš plusový bod za to, že jsi alespoň napsal znění chyby. Je to způsobené tím, že Someone uvedl neúplný příklad kódu, který ukládá hodnoty do databáze. Jeho kód by nejspíš fungoval, pokud bys měl objekt $db, který reprezentuje připojení k databázi. Koukám, že má špatně syntaxi dotazu, tedy by nefungoval Ukládat nějak do databáze umíš? $temp = array(); foreach($_POST['users'] as $user) { $temp[] = "('" . $user['jmeno'] . "','" . $user['telefon'] . "', '" . $user['email'] . "')"; } $sql = "INSERT INTO table(jmeno,telefon,email) VALUES " . implode(', ', $temp); echo $sql; # podívej se, jaký dotaz se bude provádět # tady ten dotaz $sql proveď A máš mínusový bod za to, že měníš přezdívky. |
||
gix Profil * |
#9 · Zasláno: 7. 7. 2013, 12:29:06
Díky za pomoc. Už vše funguje jak má :-)
|
||
Časová prodleva: 11 let
|
0