Autor | Zpráva | ||
---|---|---|---|
Lorem Profil * |
#1 · Zasláno: 14. 10. 2011, 16:37:39
Dobrý den, prosil bych o pomoc.
Snažím se sestavit můj první foreach dotaz a to sice se zápisem do db. Mohli by jste mi prosím pomoci s tím, co dělám špatně? Při zápisu do pole array používám : $_SESSION['kosik'][$_REQUEST['id']] = array ('id' => $_REQUEST['id'], 'count' => $_REQUEST["kosik_ks"], 'size' => $_REQUEST["kosik_size"], 'price' => $cena["kosik_cena"], 'price_without' => $cena_bez["kosik_cena"], 'name' => $_REQUEST["to_name"],'content' => $_REQUEST["to_content"], 'color' => $_REQUEST["kosik_color"]); Při zápisu do db používám : $result_or = mysql_query('SELECT * FROM admin_web_products_sub'); while ($row_or = mysql_fetch_array($result_or)) { $pole = $_SESSION['kosik'][$row_or['id']]; } foreach ($pole as $key => $value) { $query = mysql_query('INSERT INTO admin_web_orders (door_name,door_description,door_size,door_color_css,door_price_without,door_price_with,door_ks) VALUES (\''.$value[$name].'\',\''.$value[$content].'\',\''.$value[$size].'\',\''.$value[$color].'\',\''.$value[$price_without].'\',\''.$value[$price].'\',\''.$value[$count].'\')'); echo "<li><a href='?id=$key'>$value</a></li>\n"; if($query) { echo '<h1>ANO!!!</h1>'; } else { echo '<h1>Ne e :(</h1>'; } } Problém je ten, že se mi tam zapíšou absolutní kraviny :( |
||
Jack Finger Profil |
#2 · Zasláno: 14. 10. 2011, 17:03:07 · Upravil/a: Jack Finger
Asi to celé vůbec nechápu, ale není problém v tom, že by místo:
while ($row_or = mysql_fetch_array($result_or)) { $pole = $_SESSION['kosik'][$row_or['id']]; } mělo být: while ($row_or = mysql_fetch_array($result_or)) { $pole[] = $_SESSION['kosik'][$row_or['id']]; } ? Ty přiřazuješ do proměnné $pole řetězec, kdežto ve foreach ji potom chceš jako pole. Ačkoliv je zvláštní, že to vůbec projde, protože foreach by měl házet chybu, že na vstupu není pole... |
||
Lorem Profil * |
#3 · Zasláno: 14. 10. 2011, 17:15:03
Výsledek je stejný :(
Už opravdu nevím, co dělám špatně. Dostala jsem takovýto domácí úkol a jsem z něj v pasti :( Nemohl by jsi mi prosím pomoct sestavit ten dotaz, aby se to do té databáze zapsalo? |
||
Joker Profil |
#4 · Zasláno: 14. 10. 2011, 17:18:16
Lorem:
Co se vlastně do toho $pole má uložit? |
||
Lorem Profil * |
#5 · Zasláno: 14. 10. 2011, 17:20:02
Do $pole ukládám právě toto :
array ('id' => $_REQUEST['id'], 'count' => $_REQUEST["kosik_ks"], 'size' => $_REQUEST["kosik_size"], 'price' => $cena["kosik_cena"], 'price_without' => $cena_bez["kosik_cena"], 'name' => $_REQUEST["to_name"],'content' => $_REQUEST["to_content"], 'color' => $_REQUEST["kosik_color"]); |
||
Lorem Profil * |
#6 · Zasláno: 14. 10. 2011, 17:20:36
Tedy s tím, že namísto $_REQUEST už jsou tam zapsána různá data
|
||
Rellik Profil |
#7 · Zasláno: 14. 10. 2011, 17:40:55
Já tam sice nemám tolik položek, ale po drobné úpravě by to mělo fungovat stejně.
Můj způsob zápisu položek do DB: $idecka=array(); $i=0; foreach ($_SESSION['kosik'] as $key => $value) { $idecka[$i]=array("ID" => $key,"pocet"=> $value["pocet"]); $i++; $zakazky ="insert into zakazky set zakaznik='".$id_z."', zbozi='".$key."', pocet='".$value['pocet']."', datum=now()"; $result_zakazky = mysql_query($zakazky); } session_destroy(); |
||
Lorem Profil * |
#8 · Zasláno: 14. 10. 2011, 17:46:15
Zkusím to ještě teď upravit a dám vědět ;) Děkuji
|
||
Lorem Profil * |
#9 · Zasláno: 14. 10. 2011, 18:01:29
Tak jsem to tedy upravila takto:
$idecka=array(); $i=0; foreach ($_SESSION['kosik'] as $key => $value) { $idecka[$i]=array("id" => $key,"count"=> $value["count"],"size"=> $value["size"],"price"=> $value["price"],"price_without"=> $value["price_without"],"name"=> $value["name"],"content"=> $value["content"],"color"=> $value["color"]); $i++; $zakazky ="insert into admin_web_orders set door_name='".$value['name']."', door_description='".$value['content']."', door_size='".$value['size']."', door_color_css='".$value['color']."', door_price_without='".$value['price_without']."', door_price_with='".$value['price']."', door_ks='".$value['count']."'"; $result_zakazky = mysql_query($zakazky); } if($zakazky) { echo '<h1>Done</h1>'; } else { echo '<h1>Error</h1>'; } Ale i přesto to do databáze zapisuje nějaká nesmyslná čísla a ještě ke všemu snad na 10 řádků. Přitom když si to nechám vypsat přímo na stránku, tak jsou v těch array uložené správné hodnoty :( :( |
||
Tori Profil |
#10 · Zasláno: 14. 10. 2011, 20:10:46 · Upravil/a: Tori
Lorem:
„do databáze zapisuje nějaká nesmyslná čísla“ Mezi řádky 7 a 8 si přidejte echo "<br>$zakazky"; Ověření, jestli se dotaz provedl: Změňte ř.8 na: $result_zakazky = mysql_query($zakazky) or die(mysql_error()); |
||
Lorem Profil * |
#11 · Zasláno: 14. 10. 2011, 20:23:21
Děkuji za pomoc, ale momentálně jsem totálně zmatená :D. Při použití echo "<br />".$zakazky; mi to vypsalo tohle. Přitom data, která se mají zapsat a to ještě ke všemu jen na jeden řádek jsem označila tučně. Čím to je? :D
insert into admin_web_orders set door_name='2', door_description='2', door_size='2', door_color_css='2', door_price_without='2', door_price_with='2', door_ks='2'5 1 insert into admin_web_orders set door_name='5', door_description='5', door_size='5', door_color_css='5', door_price_without='5', door_price_with='5', door_ks='5'1 110 insert into admin_web_orders set door_name='1', door_description='1', door_size='1', door_color_css='1', door_price_without='1', door_price_with='1', door_ks='1'1 100 insert into admin_web_orders set door_name='1', door_description='1', door_size='1', door_color_css='1', door_price_without='1', door_price_with='1', door_ks='1'1 Produkt02 insert into admin_web_orders set door_name='1', door_description='1', door_size='1', door_color_css='1', door_price_without='1', door_price_with='1', door_ks='1'P Popis insert into admin_web_orders set door_name='P', door_description='P', door_size='P', door_color_css='P', door_price_without='P', door_price_with='P', door_ks='P'P #00e7cf insert into admin_web_orders set door_name='P', door_description='P', door_size='P', door_color_css='P', door_price_without='P', door_price_with='P', door_ks='P'# |
||
Lorem Profil * |
#12 · Zasláno: 14. 10. 2011, 20:36:07
Přitom když napíšu echo $value."<br />"; Tak se mi vše vypíše správně :(
|
||
Tori Profil |
#13 · Zasláno: 14. 10. 2011, 20:53:28
Lorem:
„když napíšu echo $value."<br />"; Tak se mi vše vypíše správně :(“ Mělo by se správně vypsat "Array". Vypadá to, že už data v session jsou jiná než očekáváte, možná i jen pozůstatky z předchozích pokusů. Zkusila bych nejdřív vymazat session: $_SESSION = array(); a pak provést celou objednávku znova od začátku. Když před ten foreach přidáte var_dump($_SESSION);, mělo by se zobrazit pole, složené z polí, které vypadají jako v [#5]. Když ty sql dotazy budou zase divné a v session budou nesprávná data, tak hledejte všude mezi uložením do košíku a uložením košíku do DB, jak a kde se mění. |
||
Lorem Profil * |
#14 · Zasláno: 16. 10. 2011, 07:02:37
Když jsem si tedy nechala vypsat echo var_dump($_SESSION);
Napsalo mi to tohle: array(6) { ["id"]=> string(1) "4" ["kusu"]=> string(2) "50" ["rozmery"]=> string(24) "8000x8000 - Poznamka2 CS" ["cena_s"]=> string(4) "8000" ["cena_bez"]=> string(4) "8200" ["barva"]=> string(14) "#2554 (Modrá)" } Moc dobře tomu nerozumím :( |
||
Lorem Profil * |
#15 · Zasláno: 16. 10. 2011, 07:34:53
Tak ještě změna, když jsem košík začala rozlišovat podle ID, a nacpala tam 2 produkty, vypsalo mi to tohle
array(2) { [4]=> array(6) { ["id"]=> string(1) "4" ["kusu"]=> string(2) "50" ["rozmery"]=> string(24) "8000x8000 - Poznamka2 CS" ["cena_s"]=> string(4) "8000" ["cena_bez"]=> string(4) "8200" ["barva"]=> string(17) "#2550 (Tyrkys CS)" } [3]=> array(6) { ["id"]=> string(1) "3" ["kusu"]=> string(2) "60" ["rozmery"]=> string(35) "2000x5000 - Poznámka k rozměru CS" ["cena_s"]=> string(5) "25000" ["cena_bez"]=> string(5) "20000" ["barva"]=> string(11) "# (Černá)" } } Zapisuji je tam takto : $_SESSION['kosik'][$_REQUEST["data"]["id"]] = array('id' => $_REQUEST['id'], 'kusu' => $_REQUEST['kusu'], 'rozmery' => $_REQUEST['rozmery'], 'cena_s' => $_REQUEST['cena_s'], 'cena_bez' => $_REQUEST['cena_bez'], 'barva' => $_REQUEST['barva']); Přitom jako $_REQUEST["data"]["id"] zasílám ID produktu. |
||
Tori Profil |
#16 · Zasláno: 16. 10. 2011, 13:31:19
Lorem:
Podle [#11] i [#15] to vypadá, že foreach neprochází jednotlivé objednané produkty, ale pouze položky jediné objednávky (a proto jsou v SQL dotazech vždy stejné hodnoty pro všechny proměnné). To znamená, že někde se data špatně ukládají do session, pravděpodobně jen do $_SESSION['kosik'], místo $_SESSION['kosik']['id']. Zkuste to zkontrolovat. Je nějaký rozdíl mezi $_REQUEST['id'] a $_REQUEST['data']['id']? |
||
Lorem Profil * |
#17 · Zasláno: 16. 10. 2011, 14:21:53
Super! Opravdu se špatně zapisovalo $_REQUEST['data']['id'], takže jsem namísto toho použila jen $_REQUEST['id'].
Tori (a samozřejmě i všem ostatním): Strašně moc děkuji! :) |
||
Časová prodleva: 12 let
|
0