PHPで一括更新する方法について教えてください

このQ&Aのポイント
  • PHP+MYSQLでショッピングカートの在庫数を一括修正する方法について教えてください。
  • 現在、商品の一覧表をwhile文を使用して表示していますが、一覧表の下に「一括更新」ボタンを配置し、内容を一気に修正してPOSTする方法を知りたいです。
  • PHP初心者なので、どのような方法が適切なのか分からない状況です。ご教授いただけると幸いです。
回答を見る
  • ベストアンサー

while文で取得したデータ一覧の一括修正の仕方についてお教え下さい。

お世話になります。 PHPの勉強中です。質問内容等に頓珍漢なものがあったらおゆるし下さい。 PHP+MYSQLで、ショッピングカートを試作しています。 在庫数を調整する際に1つ1つの商品の在庫数を個別の商品の修正画面か ら修正するよりも商品の一覧表で修正したいと考え、while文を使って商品 の一覧の入力フォームをWhile分で作成しました。 ------------------------------------------------------------------ while($row = mysql_fetch_array($result)){ echo "<form action = \"server_management_remove.php\" method = \"post\">"; echo"<div id='category_name_content'>"; echo"<p>"; echo$row["item_id"]; echo"</p>"; echo"</div>"; //-----価格1の設定----- $array_sale_price1 = array($row["stock1_price"],$row["stock2_price"],$row["stock3_price"]); $sale_price1_max = max($array_sale_price1); $sale_price1_true1 = $sale_price1_max * $row["profit1"]; $sale_price1_true = ceil($sale_price1_true1); echo"<div class='sale_price1_case1'>"; echo "<input type = \"text\" name = \"sale_price1\" value =\""; echo "$sale_price1_true"; echo "\" style='width:25px'>"; echo"</div>"; echo"<div class='sale_price1_case1'>"; echo "<input type = \"text\" name = \"profit1\" value =\""; echo $row["profit1"]; echo "\" style='width:25px'>"; echo"</div>"; echo"<div class='stock_contents_delete'>"; echo "<input type = \"hidden\" name = \"item_id\" value =\""; echo $row["item_id"]; echo "\">"; echo "<input type=\"submit\" value=\"更新\">"; echo "</form>"; echo"</div>"; echo"<div class='space'>"; echo"</div>"; } ?> ------------------------------------------------------------------ 上記のソース(文字数の関係で一部省略しています。)ですと、更新ボタ ンがそれぞれの商品ごとに設置されていて、1つづつ更新する分にはいい のですが、できれば、表の下にでも『一括更新』といったようなボタンを 設置して、一覧表に一気に入力して、最後に『一括更新』ボタンを押すと 修正した内容が一気にPOSTされるようにしたいと思っています。 そのような場合、修正した内容をすべてMySQLに格納するにはどうすれば よいでしょうか? PHPの勉強中ということもあり、どうすればいいのかの検討がついてい ません。ご迷惑かけますがよろしくご教授のほどお願いします。

  • PHP
  • 回答数3
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • mpx
  • ベストアンサー率71% (149/209)
回答No.3

print_r($_POST); の結果が Array ( [server_name] => Array ( [0] => hogehoge.com [1] => agehoge.com 中略 ) [sale_price1] => Array ( [0] => 1980 [1] => 380 中略 ) 中略 ) のようになっているとします。 if(isset($_POST['server_name'])){ foreach($_POST['server_name'] as $item_id=>$server_name) { $sql="update hametome_item set"; $sql.=" server_name='".$_POST['server_name'][$item_id]."',"; $sql.=" sale_price1='".$_POST['sale_price1'][$item_id]."'"; 中略 $sql.=" where item_id = ".$item_id; mysql_query($sql); } echo "レコードの修正が完了しました。"; }

hametome
質問者

お礼

お世話になってます。 お教えいただいた内容を参考に修正を行ってみたところ、意図する動作を させる事が出来ました。 配列を扱ったのは初めてだったのですが、ものすごく勉強になりました。 私の質問に何度もお付き合いいただき、ありがとうございました。

その他の回答 (2)

  • mpx
  • ベストアンサー率71% (149/209)
回答No.2

>> どの辺がいけないのか分かりません。 少なくとも3箇所はおかしなところが有ります 1.foreach文の中にexitが有るため1回しか実行されない 2.mysql_query($sql);が有るのに$sqlの文法が間違っている 3.foreachの中で1レコードずつ処理しなければならないのに  $sqlに全レコード文を1文で書こうとしている 多分他にも多くの間違いが有ると思います。 まず、 server_management_remove.phpの先頭で print_r($_POST); で所望のデータが送信されているか確認しましょう mysql_query($sql);の$sqlを確認して正しくSQL文が必要な数分 正しく生成されているか確認しましょう

hametome
質問者

補足

お世話になります。 print_r($_POST); で確認してみたところ、希望のデータが送られてきているようです。 if($server_name<>""){ $sql="update hametome_item set foreach($_POST[server_name] as $item_id=>$server_name) { server_name=$_POST[server_name][$item_id]; } foreach($_POST[sale_price1] as $item_id=>$sale_price1) { sale_price1=$_POST[sale_price1][$item_id]; } 中略 where item_id = $item_id"; mysql_query($sql); echo "レコードの修正が完了しました。"; といったように修正してみたのですが、何分配列というものを初めて扱 うためか混乱気味でどうしたらいいのか分かりません。 何度も質問をするような形になってしまい申し訳ないのですが、具体的 にどうすればよいのかご教授いただけましたら幸いです。

  • mpx
  • ベストアンサー率71% (149/209)
回答No.1

ソースで記述すると長くなるので、概要だけですが 1.whileループをformタグの内側で回す 2.inputタグのnameは全て配列で記述する   例 sale_price1[$row["item_id"]]     profit1[$row["item_id"]] server_management_remove.phpでは、 $_POST['sale_price1'][item_idの値] と$_POST['profit1'][item_idの値]に全てのデータが入っているので、 foreach($_POST['sale_price1'] as $item_id=>$sale_price1){ $profit1=$_POST['profit1'][$item_id]; // ここで、$item_id をもとに$sale_price1と$profit1を書換える } 注)上記は動作を説明するためのものです。$_POSTデータは検証した後処理しないとセキュリティ上の問題が発生します

hametome
質問者

補足

早速のアドバイスを頂き、まことにありがとうございます。 ご教授いただいた内容に伴い修正を行ってみたのですが、どうもうまく いきません。大変お手数かとは存じますが、追加で質問をさせていただ きたく思います。 if($server_name<>""){ $sql="update hametome_item set foreach($_POST[sale_price1] as $item_id=>$sale_price1) { $server_name=$_POST[server_name][$item_id]; $sale_price1=$_POST[sale_price1][$item_id]; $sale_price2=$_POST[sale_price2][$item_id]; $sale_price3=$_POST[sale_price3][$item_id]; $quantity=$_POST[quantity][$item_id]; $real_stock=$_POST[real_stock][$item_id]; $buy_price=$_POST[buy_price][$item_id]; $buy_stock=$_POST[buy_stock][$item_id]; $minimum_sell=$_POST[minimum_sell][$item_id]; $minimum_buy=$_POST[minimum_buy][$item_id]; $stock1_price=$_POST[stock1_price][$item_id]; $stock1_quantity=$_POST[stock1_quantity][$item_id]; $stock2_price=$_POST[stock2_price][$item_id]; $stock2_quantity=$_POST[stock2_quantity][$item_id]; $stock3_price=$_POST[stock3_price][$item_id]; $stock3_quantity=$_POST[stock3_quantity][$item_id]; $profit1=$_POST[profit1][$item_id]; $profit2=$_POST[profit2][$item_id]; $profit3=$_POST[profit3][$item_id]; $sell_char1=$_POST[sell_char1][$item_id]; $sell_char2=$_POST[sell_char2][$item_id]; $sell_char3=$_POST[sell_char3][$item_id]; $buy_char1=$_POST[buy_char1][$item_id]; $category_id=$_POST[category_id][$item_id]; where item_id = $item_id"; mysql_query($sql); echo "レコードの修正が完了しました。"; exit; } といったようなソースを書いてみたのですが、配列というものを初めて 扱ったもので、どの辺がいけないのか分かりません。 低レベルな質問で大変申し訳ないのですがご教授いただけましたら幸い です

関連するQ&A

  • 計算結果をPOSTするには?

    お世話になります。 $array_sale_price1=array($row["stock1_price"],$row["stock2_price"],$row["stock3_price"]); $sale_price1_max=max($array_sale_price1); $sale_price1_true1=$sale_price1_max * $row["profit1"]; $sale_price1_true=ceil($sale_price1_true1); $sale_price1_true1_not_stock_name=$row["buy_price"] * $row["profit1"]; $sale_price1_true_not_stock_name=ceil($sale_price1_true1_not_stock_name); if (empty($row["stock1_name"]) and empty($row["stock2_name"]) and empty($row["stock3_name"])) { echo"<div class='sale_price1_case2'>"; echo "<input type = \"hidden\" name = \"sale_price1[$row[item_id]]\" value = \""; echo "$sale_price1_true_not_stock_name"; echo "\">"; echo"<p>"; echo "$sale_price1_true_not_stock_name"; echo"</p>"; echo"</div>"; } else { echo"<div class='sale_price1_case2'>"; echo "<input type = \"hidden\" name = \"sale_price1[$row[item_id]]\" value = \""; echo "$sale_price1_true"; echo "\">"; echo"<p>"; echo "$sale_price1_true"; echo"</p>"; echo"</div>"; } $stock1_price_null=0; if (empty($row["stock1_name"])) { echo"<div class='stock_contents_case1'>"; echo "<input type = \"hidden\" name = \"stock1_price[$row[item_id]]\" value =\""; echo $row["stock1_price_null"]; echo "\">"; echo"<p>"; echo "---"; echo"</p>"; echo"</div>"; } else { echo"<div class='stock_contents_case1'>"; echo "<input type = \"text\" name = \"stock1_price[$row[item_id]]\" value =\""; echo $row["stock1_price"]; echo "\" style='width:25px'>"; echo"</div>"; } 中略 //利幅1の設定 echo"<div class='sale_price1_case1'>"; echo "<input type = \"text\" name = \"profit1[$row[item_id]]\" value =\""; echo $row["profit1"]; echo "\" style='width:25px'>"; echo"</div>"; 中略 While文でデータを取得し、配列でデータを渡すことでデータを一括して更新するフォームを作っています。上記のソースような形で、sale_price1を他のデータ(stock1_price stock2_price stock3_price profit1)から計算して求めるフォームを作っているのですが、ボタンを一度押しただけではstock1_price stock2_price stock3_price profit1は更新されますが、計算結果が入るべきデータ(sale_price1)が更新されず、もう1回ボタンを押すと計算結果のデータがMySQLに格納されます。 よくよく考えて見れば、1回目にボタンを押した段階では計算結果(sale_price1)は修正前のstock1_price stock2_price stock3_price profit1で計算された計算結果(sale_price1)がポストされているので修正後の計算結果(sale_price1)がMySQLに格納されないという事が判明したのですが、修正後の値(フォームに新規に入力した値)から計算された値をPOSTするには、どうしたらよいのでしょうか? 色々な事を試してみたのですが、どうもうまくいきません。ご教授いただけましたら幸いです。よろしくお願いします。

    • 締切済み
    • PHP
  • 一つのテキストボックスに入力した値を配列に渡すには?

    お世話になります。 While文でデータの一覧を取得し、あるデータ項目を一斉に任意の同じ数 値に変更するボタンを作ろうと思っています。 ------------------------------------------------------------------ echo "<form action = \"server_management_remove_all.php\" method = \"post\">"; //変数 $all_profit1='4'; $all_profit2='3'; $all_profit3='2'; while($row = mysql_fetch_array($result)){ 中略 echo "<input type = \"hidden\" name = \"profit1[$row[item_id]]\" value =\""; echo "$all_profit1"; echo "\">"; echo "<input type = \"hidden\" name = \"profit2[$row[item_id]]\" value =\""; echo "$all_profit2"; echo "\">"; echo "<input type = \"hidden\" name = \"profit3[$row[item_id]]\" value =\""; echo "$all_profit3"; echo "\">"; } echo "<input type=\"submit\" value=\"一斉更新\">"; echo "</form>"; ?> ------------------------------------------------------------------ 上記のようにあらかじめ決められた変数を用いて、それぞれのデータを 一斉に更新する事は出来るのですが、この変数をテキストボックスに入 力した任意の値にしようとするとどうもうまくいきません。 多少分かりにくいかもされませんが、やりたいこととしては 商品A 商品B 商品C と商品があったとして、それぞれのprofit1~profit3を商品A 商品B 商品C全て同じ数値にしたい場合、 profit1~profit3を1つのテキストボックス(profit1~profit3各1 つのテキストフィールド)に入力した値を商品A 商品B 商品C全て のprofit1~profit3に入力されるようにしたいという意味です。 テキストボックス(profit1~profit3の)に入力した値が変数 $all_profit1~$all_profit3に入ればいいのではないかと思うのです が、いろいろ試してみたところ、どうもうまくいきません。 どうかご教授のほどよろしくお願いします。

    • ベストアンサー
    • PHP
  • データベースから出力したデータを横並びに

    while($row = mysql_fetch_array($res)){ echo '<div class="aa">'; echo ''.$row['name'].'<br>'; echo'在庫数:'.$row[''].'個<br>'; echo '値段:'.$row[''].'円/個<br>'; echo '<img src='.$row[''].'><br></div>'; } このようにしたら縦に並んでしまうんですが、どのようにしたら横並びになるんでしょうか??

    • ベストアンサー
    • PHP
  • (MySQLで修正スクリプトがうまくいかず困っています。

    最近MySQLをはじめました、まだ初心者の者です。 MySQLデータベースで、修正用のスクリプトがうまく起動いたしません。自分なりに色々書籍やネット検索致しましたがどこが間違っているのか見出せません。 お手数ですが、どうか指南お願い致します。 リンクから呼び出すスクリプトと削除スクリプトの二点です。 -------------------(始)ここから明細スクリプト(始)--------------- <?php extract($_GET); mysql_connect('localhost','root','xxxx'); mysql_select_db('xxxx'); $sql = "select * from xxxx where id = '{$id}'"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "検索データが見つかりませんでした。"; exit; } else { while($row = mysql_fetch_array($result)){ echo "<h2> " , $row["title"] , "</h2>"; echo "<p><font size=\"-2\">#", $row["id"] ," ●",$row["tourokubi"] ,"</font></p>\n"; echo "<p><div class=\"hon\">", nl2br($row["honbun"]), "</div></p>"; echo "<div class=\"key\">keywords: ", nl2br($row["keyword"]), "</div>"; $row["id"]; echo "</p>"; echo "</p>"; echo "<a href=\"correct.php?id="; echo $row["id"]; echo "\">[修正する]</a>"; echo "<a href=\"j_sakujo1.php?id="; echo $row["id"]; echo "\">[削除する]</a><hr>"; } } ?> ------------------------(終)ここまで(終)------------------------ -------------------(始)ここから削除スクリプト(始)--------------- <?php extract($_POST); extract($_GET); mysql_connect('localhost','root','xxxxx'); mysql_select_db('xxxxx'); //修正レコード if($honbun<>""){ $sql = "update xxxxx set title='$title', honbun='$honbun', keyword='$keyword' where id = $id"; mysql_query($sql); echo "レコードの修正が完了しました"; exit; } // 修正ルーチン $sql = "select * from xxxxx where id = $id"; $result = mysql_query($sql); while($row = mysql_fetch_array($result)){ $tourokubi = $row["tourokubi"]; $title = $row["title"]; $honbun = $row["honbun"]; $keyword = $row["keyword"]; } echo "<form action=\"correct.php\" method=\"post\" >\n"; echo "<p>・日付<br>\n"; echo $tourokubi, "</p>\n"; echo "<p>・タイトル<br>\n"; echo "<input type=\"text\" name=\"title\" value=\"",$title, "\"size=60 ></p>\n"; echo "<p>・本文<br>\n"; echo "<textarea name=\"honbun\" rows=20 cols=70 >\n"; echo $honbun; echo "</textarea></p>\n"; echo "<p>・キーワード(スペース区切りで列記)<br>\n"; echo "<textarea name=\"keyword\" rows=2 cols=70 >\n"; echo $keyword; echo "</textarea></p>\n"; echo "<p><input type=\"hidden\" name=\"i\" value=\"", $i, "\">  "; echo "<p><input type=\"submit\" value=\"修正\">  "; echo "<input type=\"reset\" value=\"クリア\"></p>\n"; echo "</form>\n"; ?> -------------------(終)ここまで(終)---------------------- 修正ボタンを押すと、修正しました。と表示されるのですが、 なぜかデータは更新されておりません。 自分なりに調べましたが、原因がどうしても分かりません。 ご指南よろしくお願い致します。

  • DBから取得したデーター+配列データーの受取り

    (過去に似たような質問をしたのですが、その続きの質問です。) よろしくお願いします。 ※セッションID(以下(3)のDBのカラム(ssid)で使用)を 発行した状態で以下を行いたいのですが、(3)がうまくいきません。 (1)商品リストのDBを以下のように作り -------------------------------------------- (テーブル:products) product_id | product_cd | name | price 1 | 10 | 本01   | 1300 2 | 11 | 本02     | 1200 3 | 20 | サプリ01    | 4800 4 | 30  | ストレッチボード | 9800 5 | 30 | 健康シューズ   | 6800 -------------------------------------------- (2)上記をmysql_fetch_arrayで取り出し<table>を作成。 その際に、商品選択をする(checkbox)と(数量)を入力する<input> を加え<form>でkaimonoKago.phpへ送信します。 (products.php) <?php (途中省略) mysql_query("set names utf8"); $sql = "select * from products "; $result = mysql_query($sql) ; ?> <form method="post" action="kaimonoKago.php"> <table> <tr> <th></th> <th>商品コード</th> <th>商品名</th> <th>価格(税込</th> <th>数量</th> </tr> <?php while($row = mysql_fetch_array($result)){ print "<tr>\n"; print "<th><input type=\"checkbox\" name=\"check[]\" value=\"".$row["product_id"]."\"></th>\n"; print "<td>".htmlspecialchars($row["product_cd"])."</td>\n"; print "<td>".htmlspecialchars($row["product_name"])."</td>\n"; print "<td>&yen;".number_format($row["price_intax"])."</td>\n"; print "<td><input type=\"text\" name=\"kazu[".$row["product_id"]."]\" size=\"3\"></td>\n"; print "<input type=\"hidden\" name=\"ssid\" value=\"".$_SESSION['ssid']."\" />\n"; print "</tr>\n"; } ?> <input type="submit" name="order" value="注文" /> </form> (3)<form>で送られてきた情報を、買い物カゴDB ----------------------------------------------- (テーブル名:kaimonoKago) (カラム: ssid, product_cd, product_name, price_intax, kazu, shoukei) ----------------------------------------------- にインサートしたいのですが、うまくいきません。正しい記述を教えて下さい。 mysql_fetch_arrayやらwhile文やら配列が2つあったりして、どのように組み立てたら いいのか、基本的な考え方も教えていただければ幸いです。 (自分がつくった、うまくいかないコード)    ↓ (kaimonoKago.php) $check=(isset($_REQUEST["check"]) and is_array($_REQUEST["check"]))?$_REQUEST["check"]:array(); $kazu=(isset($_REQUEST["kazu"]) and is_array($_REQUEST["kazu"]))?$_REQUEST["kazu"]:array(); foreach($check as $val){ if($kazu[$val]>0){ $sql = "select * from products where product_id ='" . mysql_real_escape_string($val) . "'"; $result = mysql_query($sql); while($products = mysql_fetch_array($result)){ $product_cd = $products['product_cd']; $product_name = $products['product_name']; $price_intax = $products['price_intax']; $kazu = $kazu[$val]; $shoukei = $price_intax * $kazu; $sql = "insert into kaimonoKago ( ssid, product_cd, product_name, price_intax, kazu, shoukei ) values ( '" . mysql_real_escape_string ( $_SESSION['ssid'] ) . "', '" . mysql_real_escape_string ( $product_cd ) . "', '" . mysql_real_escape_string ( $product_name ) . "', '" . mysql_real_escape_string ( $price_intax ) . "', '" . mysql_real_escape_string ( $kazu ) . "', '" . mysql_real_escape_string ( $shoukei ) . "' )"; mysql_query($sql); } } } } よろしくお願いします。

    • ベストアンサー
    • PHP
  • データーベースをフォームから入力し更新

    データーベースをフォームから入力し更新 登録済のデーターベースをフォームから入力し更新したいのですが、どうしてもうまくいきません。 http://park18.wakwak.com/~little-box/Dreamweaver/sql010.htm のサイトを参考にしているのですがitiran.phpのところからつまづいています。 // 検索した結果を全部表示 echo "<table border=1>"; echo "<tr><td>id</td><td>name</td></tr>"; while($row=mysql_fetch_array($res)){    echo "<tr>";    echo "<td>". $row["name"] . "</td>";    echo "<td>". $row["age"] . "</td>";    echo "<form action=koushin_input.php method=post>";    echo "<input type=hidden name=id value=" . $row["id"] . ">";    echo "<td><input type=submit value=更新></td>";    echo "</form>";    echo "<form action=sakujo.php method=post>";    echo "<input type=hidden name=id value=" . $row["id"] . ">";    echo "<td><input type=submit value=削除></td>";    echo "</form>";    echo "</tr>"; } echo "</table>"; の辺りがおかしいのではと思っているのですが… アドバイスください。また、他に参考になるサイトがありましたらぜひ教えてください。

    • ベストアンサー
    • PHP
  • 1つのsql文でデータを取得したい

    phpとmysqlを連携させデータを取得しています。mysql5です。 現在は2つのテーブルからデータを取得するため以下のように2回のsql文を発行しています。 $sql = 'SELECT products_id, name, products_flag, comment1, IF("' . $products->beforedays . '" < DATE(create_date), "1", "0") as new, FROM products WHERE status = ? AND del_flg = ? ORDER BY create_date DESC'; // 1回目のsqlで取得したproducts_idを参照し下記のsqlを実行 $sql = 'SELECT MIN(price1) as min_price1, MAX(price1) as max_price1, MIN(price2) as min_price2, MAX(price2) as max_price2, IFNULL(price2, price1) as price0, stock FROM products_class_detail WHERE products_id = ?'; これを1回のsqlにまとめる場合どのような書き方になるでしょうか? 自分なりに下記のようにしてみたところ動作はするのですが複数のデータが条件に 当てはまるはずがminとmaxがあるためか条件に当てはまる最後のデータのみしか 取得されませんでした。 ※試しにmin,maxを外すと複数のデータを取得できました。 $sql = 'SELECT products.products_id, products.name, products.products_flag, products.comment1, IF("' . $products->beforedays . '" < DATE(products.create_date), "1", "0") as new, MIN(products_class_detail.price1) as min_price1, MAX(products_class_detail.price1) as max_price1, MIN(products_class_detail.price2) as min_price2, MAX(products_class_detail.price2) as max_price2, IFNULL(products_class_detail.price2, products_class_detail.price1) as price0, products_class_detail.stock FROM products, products_class_detail WHERE products_class_detail.products_id = products.products_id AND products.status2 = ? AND products.del_flg = ? ORDER BY' . $where_sql; 商品の情報を取得するsqlで最後のorder句は商品の並び順の変更でユーザーの指定した 順番(新着順や価格順等)で表示するためのものです。 2回のsqlの場合は問題なく動作していたのですがで新着順や価格順に並び替えを行うため 1回のでsqlで行いたいと思っております。 新着順の場合は1回目のsqlに条件が入るので問題ないのですが価格順の場合は2回目の sqlに条件が入るので2回のsqlではうまく並び替えができませんでした。 ソースの短縮にもなり可能であれば1回のsqlで完結させたいのですがどうすればいいものか わからずつまづいております。 詳しい方がいらっしゃいましたら宜しくお願い致します。

  • PHPでMySQLデータを呼び出し、whileループの中で別テーブルのデータをループするには

    MySQLからuserというテーブルのデータを呼び出し、表示すると同時にフォームとしてデータの変更もできるプログラムを作成しています。 その項目の中に別のusergrというテーブルのデータをリストボックスで表示させたいのですが、うまくいきません。 現状では下記のスクリプトでuserの1番のデータだけが表示されている状態です。(リストボックスも問題なく表示はされていますが…) まわりに聞ける人もいず、本などを見よう見まねで作成したため、根本的に誤ってるところがあるかと思いますが、どうかアドバイス頂けませんでしょうか。 $sql = "SELECT * FROM user"; $mysql->query($sql); while($row = $mysql->fetch()){ $no = $row["no"]; $name = $row["name"]; $division = $row["division"]; $email = $row["email"]; $tel = $row["tel"]; $group = $row["group"]; echo <<<EOT <td align="center">$no</td> <td align="center"><input type="text" name="name[$no]" value="$name" size="10"></td> <td align="center"><input type="text" name="division[$no]" value="$division" size="20"></td> <td align="center"><input type="text" name="email[$no]" value="$email" size="30"></td> <td align="center"><input type="text" name="tel[$no]" value="$tel" size="10"></td> <td align="center"> <select name="group[$no]"> EOT; $sql = "SELECT * FROM usergr LEFT JOIN user ON usergr.grno=user.group"; $mysql->query($sql); while($row = $mysql->fetch()){ $group = $row["group"]; $grno = $row["grno"]; $grname = $row["grname"]; if($row["grno"]==$group){ echo "<option value=\"{$row['grno']}\" selected=\"selected\">{$row['grname']}</option>"; } else { echo "<option value=\"{$row['grno']}\">{$row['grname']}</option>"; } } echo <<<EOT </select> </td> <td align="center"><input type="submit" name="submit_upd[$no]" value="変更"> <input type="submit" name="submit_del[$no]" value="削除"></td> </tr> EOT; }

    • ベストアンサー
    • PHP
  • phpでショッピングカート機能を作りたい。

    PHPで店舗のショッピングカートを作ろうとしています。 data 1 リンゴ 100円     2 ミカン  80円     3 バナナ 50円 PHPコード <form action="" method="post"> <?php $sql = "SELECT * FROM list"; $sth = $dbh->prepare($sql); $sth->execute(); while ($row = $sth->fetch()) { $id = $row["id"]; $name = $row["name"]; $price = $row["price"]; $image = $row["image"]; echo <<<EOT <table cellspacing="0" cellpadding="0" width="605" height="150"> <tr> <td rowspan="5" valign="top"><img src="../kanri/image/goods/$image" border="0" /></td> <form action="" method="post"> <input type="hidden" name="$id" value="$id" /> <input type="hidden" name="$name" value="$name" /> <input type="hidden" name="$price" value="$price" /> <td align="left" bgcolor="#eee8aa" width="400"><b> $id. $name</b></td> </tr> <tr> <td colspan="2" bgcolor="#ccccff"><p><font color="#000088"><b>税込 :$price </b></p></td> </tr> <td colspan="2" bgcolor="#e6e6e6"><p> 個数 : <select name="number"> <option>1</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> </select> <input type="submit" name="submit_cart" value="カートに入れる" /></p> </td> </tr> </table> </form> <br /> EOT; } ?> <hr></hr> <div align="center">カートの中身</div> <?php if (isset($_POST["submit_cart"])) { if(!isset($name)){ $name = $_POST['name']; } if(!isset($price)){ $price = $_POST['price']; } if(!isset($number)){ $number = $_POST['number']; } $total = $price * $number; echo "<div align='center'><p>$id 番の情報を取得しました。</p></div>"; echo "<div align='center'><p>商品名: $name </p></div><div align='center'><p>単価:$price 円 / 個数:$number 個</p></div>"; echo "<hr></hr>"; echo "<div align='center'><p>合計金額:<b>$total 円</b>です。</p></div>"; } ?> としているのですが、カートに入れるボタンを押しても最後のバナナしかカートに表示出来ません。 全ての商品の注文をカートに入れるにはどうすれば良いでしょうか? ご教授のほど宜しくお願いします。

    • ベストアンサー
    • PHP
  • チェックボックスを用い、MySQLからデータを取得

    プログラミング初心者です。HTML, JavaScript, PHPを使用し、checkboxにチェックを入れ検索ボタンを押すと、MySQLからデータを取得し表示させる機能の実装を試みています。複数の項目を選択して検索したいため、checkboxで行いたいと考えています。 MySQLはitemsテーブルにurl, length, timeフィールドを用意し、text型でデータをセットしています。 誤っている箇所をご指摘頂ければ助かります。 よろしくお願いいたします。 *HTML <div id ="length" > <input name="length[]" type="checkbox" value="short"> <input name="length[]" type="checkbox" value="long"> </div> <div id ="time" > <input name="time[]" type="checkbox" value="morning"> <input name="time[]" type="checkbox" value="noon"> <input name="time[]" type="checkbox" value="evening"> <input name="time[]" type="checkbox" value="weekday"> <input name="time[]" type="checkbox" value="holiday"> </div> <input type="button" name="search" value="検索"/> <div id="outputArea">検索ボタンを押すと、ここにMySQLから取得したデータが表示される</div> *JavaScript $(function(){ $("#search").click(function(){ var aaa = $('div#length > input[name=***]:checked'); var bbb = $('div#time > input[name=***]:checked'); var inaaa=[]; aaa.each(function(){ inaaa.push(this.value); }) var inbbb=[]; bbb.each(function(){ inbbb.push(this.value); }] $.post("output_do.php",inaaa,show); $.post("output_do.php",inbbb,show); }); }); function show(out){ var outdata = out.split(" ") //表示させるデータ数はとりあえず3つほどを考えています $("#outputArea").text(outdata[0]); $("#outputArea").text(outdata[1]); $("#outputArea").text(outdata[2]); } *PHP mysql_connect('localhost','root','root') or die(mysql_error()); mysql_select_db('db'); mysql_query('SET NAMES UTF8'); $inaaa= $_POST["inaaa"]; $inbbb= $_POST["inbbb"]; if( isset($inaaa) ){ } else{ print '$inaaaは定義されていません'; } if( isset($inbbb) ){ } else{ print '$inbbbは定義されていません'; } $res = mysql_query("SELECT url FROM items WHERE length = '" . $inaaa."' or time = '" . $inbbb."' LIMIT 0,10", mysql_real_escape_string($inaaa), mysql_real_escape_string($inbbb), ); //この部分が特に不安です if ($res !== FALSE) { $out = ""; while ($row = mysql_fetch_array($res)) { $out .= $row['url']."<i>"; } echo $out; }else{ echo "データがありません"; } 以上です。長々と申し訳ありませんm(__)m

    • 締切済み
    • PHP

専門家に質問してみよう