mysql:8817
From: zai <zai <zai91210@xxxxxxxxxx>>
Date: Thu, 19 Feb 2004 06:26:38 +0900
Subject: [mysql 08817] Re: 機種の変更に伴う不具合
zaiです、毎度。 とみたさん、ありがとうございます。 > # 新規の話題は古いメッセージへの返信にしない方が良いです。 はい、気をつけます。 > > On Sat, 14 Feb 2004 01:48:15 +0900 > zai <zai91210@xxxxxxxxxx> wrote: > > > 現在も、問題なく、使えるシステム(Windows2000Pro)のデータを、コピーし > > て、新しいパソコン(WindowsXP Pro)に移しました。具体的には、WEBサーバー > > も、PHPもMySQLも、全く同じ物をインストールしました(MySQLのデータベース > > も、PHPのスクリプトも全て、同一にしました、異なるのは、パソコンとOSが違 > > うことです)。PHPでMySQLデータの表示などは、問題なくできるのですが、新規 > > データの追加ができません。問題のPHPは、以下のものです。 削除もできません。 > > 同じクエリを mysql コマンドで試してみるのが良いと思います。問題が PHP > なのか MySQL なのかはっきりししますし、エラーになった場合は原因も表示 > されますし。 確かに、そうですね。 mysqlコマンドでは、問題なく追加処理が出来ました。また、近藤さんのアド バイスで、PHPでも追加できましたが、質問のPHPは、追加処理だけのものでした が、現実は、少し複雑(と言うか、複雑になってしまった)です。と、言うこと で、mysql か PHP か切り分けることが、私には出来ません。 大変長いPHP(読みやすい短いものにしたい意志はあるのですが、まだ出来ずに おります。時間もそうですが、能力の方がなくてすみません)です。id(ここで はfname[0])が、取れていないのかと考え、GET送信に変えて確認をしておりま す。GET送信文を読んでも問題はなく、勿論オリジナルのコピー元のほうでは、 GETでもPOSTでも追加ができます。 <html> <head> <meta http-equiv="content-type" content="text/html; charset=Shift_JIS"> <title>診療圏</title> </head> <body>診療圏 <?php function cnv_dispstr2($string) { $string = nl2br($string); return $string; } $svname = "localhost"; $dbname = "RESE"; $tbname = "ken"; $usname = "root"; $psname = "****"; $mycon = mysql_connect($svname, $usname, $psname) or die(mysql_error()); $cnt = 0; $COL_DATS = array(); $result = mysql_list_fields( $dbname, $tbname, $mycon); while ( $cnt < mysql_num_fields( $result)) { $fdname[$cnt] = mysql_fieldname( $result, $cnt); $COL_DATS[$fdname[$cnt]] = ${$fdname[$cnt]}; ++$cnt; } mysql_select_db($dbname) or die(mysql_error()); if ($submit) { if (${$fdname[0]}) { $where = "$fdname[0]=".${$fdname[0]}; $i=0; $set = ' SET '; foreach ($COL_DATS as $key => $dat){ $set .= (strlen($dat) == 0)? "{$key}=NULL,": "{$key}='{$dat}',"; $i++; } $set = chop($set, ','); $sql = 'UPDATE '.$tbname.$set.' where '.$where; } else { if (${$fdname[1]}=="" || ${$fdname[2]}=="" ) exit(); $set1=""; $set2=""; $set1 = ' ( '; $set2 = ' VALUES ( '; foreach ($COL_DATS as $key => $dat){ $set1 .= (strlen($dat) == 0)? "": "{$key},"; $set2 .= (strlen($dat) == 0)? "": "'{$dat}',"; } $set1 = chop($set1, ','); $set1 .= " ) "; $set2 = chop($set2, ','); $set2 .= " ) "; $sql = 'INSERT INTO '.$tbname.$set1.$set2; } // DBに対してSQL実行 $result = mysql_query($sql, $mycon) or die(mysql_error()); echo "updated/edited sql文の確認: $sql<p>"; } elseif ($delete) { // レコードの削除SQL実行 $where = "$fdname[0]=".${$fdname[0]}; $sql = "DELETE FROM $tbname WHERE ".$where; $result = mysql_query($sql, $mycon) or die(mysql_error()); echo "deleted sql文の確認: $sql<p>"; } else { // submitを押してないときに、全レコードを編集できるように表示 if (!${$fdname[0]}) { $sql = "SELECT * FROM $tbname ORDER BY ".$fdname[0]; $result = mysql_query($sql, $mycon) or die(mysql_error()); ?> <table border="1"> <tr> <td colspan=2 bgcolor="#b00023">ID</td> <td colspan=1 bgcolor="#b00023">診療圏コード</td> <td colspan=1 bgcolor="#b00023">診療圏</td> <td colspan=1 bgcolor="#b00023">操作</td> </tr> <?php while ($myrow = mysql_fetch_array($result, MYSQL_ASSOC)) { ?> <tr> <form method="GET" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <td><input type="submit" value="SYUSEI"></td> <input type="hidden" name="<?php echo $fdname[0]; ?>" value="<?php echo cnv_dispstr2($myrow[$fdname[0]]) ?>"> <td><?php echo cnv_dispstr2($myrow[$fdname[0]]); ?></td> <?php for ($i=1; $i<3; $i++) { ?> <td> <input type="text" name ="<?php echo $fdname[$i]; ?>" value="<?php echo cnv_dispstr2($myrow[$fdname[$i]]) ?>"> </td> <?php } ?> </form> <form method="GET" action="<?php echo $_SERVER['PHP_SELF'] ?>"> <td><input type="submit" value="SAKUJO" name="delete"></td> <input type="hidden" name="<?php echo $fdname[0]; ?>" value="<?php echo cnv_dispstr2($myrow[$fdname[0]]); ?>"> </form> </tr> <?php } ?> <?php } ?> <form method="GET" action="<?php echo $_SERVER['PHP_SELF'] ?>"> <?php if (${$fdname[0]}) { // レコードを選択できるように編集 $sql = "SELECT * FROM $tbname WHERE ".$where; $result = mysql_query($sql, $mycon) or die(mysql_error()); $myrow = mysql_fetch_array($result, MYSQL_ASSOC); for ($i=0; $i<$cnt; $i++) { ${$fdname[$i]}=$myrow[$fdname[$i]]; } // 編集用のidは非表示 ?> <input type="hidden" name="<?php echo $fdname[0]; ?>" value="<?php echo cnv_dispstr2($myrow[$fdname[0]]) ?>"> <?php } ?> <tr> <td colspan=2><input type="submit" value="TUIKA" name="submit"></td> <?php for ($i=1; $i<3; $i++) { ?> <td> <input type="text" name ="<?php echo $fdname[$i]; ?>" value="<?php echo cnv_dispstr(${$myrow[$fdname[$i]]}) ?>"> </td> <?php } ?> <td><input type="reset" name="cancel" value="CANCEL"></td> </tr> </table> </form> <?php } mysql_close($mycon); ?> </body> </html> どうしても、解決できません。もう、不思議の世界です! アドバイスをよろしくお願いいたします。 > > -- > とみたまさひろ <tommy@xxxxxxxxxx> > 日本MySQLユーザ会 http://www.mysql.gr.jp -- zai <zai91210@xxxxxxxxxx>
8558 2004-01-07 02:39 [zai <zai91210@xxxxxx] count(*) の合計の仕方 8559 2004-01-07 04:59 ┣[UNO Shintaro <uno@xx] 8561 2004-01-07 15:29 ┃┗[zai <zai91210@xxxxxx] 8562 2004-01-07 15:56 ┃ ┣[<lavlav@xxxxxxxxxx> ] 8563 2004-01-07 16:00 ┃ ┃┗[<lavlav@xxxxxxxxxx> ] 8565 2004-01-07 16:37 ┃ ┗[ML account <ml@xxxxx] 8566 2004-01-07 16:46 ┃ ┗[ML account <ml@xxxxx] 8564 2004-01-07 16:22 ┣[Kazuhiro Yoshida <mo] 8790 2004-02-14 01:48 ┗[zai <zai91210@xxxxxx] 機種の変更に伴う不具合 8791 2004-02-14 15:43 ┣[Seto <seto@xxxxxxxxx] 8792 2004-02-14 20:09 ┣[<konet218@xxxxxxxxxx] 8793 2004-02-15 03:21 ┃┗[zai <zai91210@xxxxxx] 8794 2004-02-15 03:43 ┃ ┣[<konet218@xxxxxxxxxx] 8816 2004-02-19 05:35 ┃ ┃┗[zai <zai91210@xxxxxx] 8796 2004-02-15 06:28 ┃ ┗[Seto <seto@xxxxxxxxx] 8818 2004-02-19 06:35 ┃ ┗[zai <zai91210@xxxxxx] 8795 2004-02-15 04:18 ┗[とみたまさひろ <tomm] -> 8817 2004-02-19 06:26 ┗[zai <zai91210@xxxxxx] 8819 2004-02-19 09:47 ┣[Seto <seto@xxxxxxxxx] 8820 2004-02-19 15:29 ┃┣[<lavlav@xxxxxxxxxx> ] 8824 2004-02-19 21:12 ┃┃┗[zai <zai91210@xxxxxx] 8823 2004-02-19 21:02 ┃┗[zai <zai91210@xxxxxx] 8826 2004-02-19 21:57 ┃ ┗[bon <bon@xxxxxxxxxx>] 8827 2004-02-20 02:19 ┃ ┗[zai <zai91210@xxxxxx] 8821 2004-02-19 18:52 ┗[Hiroto Tsubaki <jak@] 8825 2004-02-19 21:46 ┗[zai <zai91210@xxxxxx] Re: 機種の変更に伴う不具合(大感謝)