全く初歩の質問で申し訳ございません。
create table test (shohin char(40),uri int(10) ,kai int(10) ,urikai char(40));
insert into test values('りんご',300,200,'黒字');
insert into test values('みかん',500,300,null);
insert into test values('ぶどう',null,null,'未入荷');
で 「みかん」のレコードが、uri > kai なら 「みかん」のurikaiを'黒字'にする方法を IF文でどのように書けばよいのかを教えてください。
No.5ベストアンサー
- 回答日時:
'りんご'とか'みかん'だとどういう順に読むんだろうと思ったら、実際は商品番号なんですね。
「2番の商品から」というのは商品番号(shohin)順で、黒字でも未入荷でもない(null)商品から・・と判断させていただくと$sql = "select * from test where urikai is null order by shohin asc";
$res = mysql_query($sql);
if ($row = mysql_fetch_array($res)) {
if ($row['uri'] <= $row['kai']) { continue; }
$sql = "update test set urikai='黒字' where shohin == '". $row['shohin'] . "'";
mysql_query($sql) or die("update abort");
break;
}
}
これで商品番号順で黒字をセットしていない(かつ未入荷でもない)けどuri>kaiである最初の商品を黒字にして処理を抜けます。
#最初の質問から読み取れた内容とはかなり隔たっている気がしますが(汗
この回答への補足
最初の質問がわかりにくかったために、何度もお手間を取らし本当に申し訳ございません。
create table test (shohin char(40),uri int(10) ,kai int(10) ,urikai char(40));
insert into test values(1,400,200,'黒字');
insert into test values(2,300,500,null);
insert into test values(3,400,300,null);
insert into test values(4,500,300,null);
select * from test;
<?
$dbHandle = mysql_connect("localhost","root","password");
if ($dbHandle == False) {print ("can not connect db\n");exit;}
$dbname = "MyDB";
mysql_select_db($dbname);
$sql = "select * from test where urikai is null order by shohin asc";
$res = mysql_query($sql);
if ($row = mysql_fetch_array($res))
{
if ($row['uri'] <= $row['kai']) { continue; }
$sql = "update test set urikai='黒字' where shohin == '". $row['shohin'] . "'";
mysql_query($sql) or die("update abort");
break;
}
?>
をやってみましたが、
Fatal error: Cannot break/continue 1 level in
という、エラーになりました。
明日は休みなので、一日取り組んでみるつもりですが、
もしできましたら、再度アドバイスをいただけると助かります。
何卒お願いいたします。
No.6
- 回答日時:
>Fatal error: Cannot break/continue 1 level in
あ、ごめんなさい。whileでまわすところにifを書いてましたね(汗
> if ($row = mysql_fetch_array($res)) {
while ($row = mysql_fetch_array($res)) {
に修正してみてください。
この回答への補足
ありがとうございます。
エラーは解消されました。
しかし、「update abort」が表示され
データは変更されませんでした。
create table test (shohin char(40),uri int(10) ,kai int(10) ,urikai char(40));
insert into test values(1,400,200,'黒字');
insert into test values(2,300,500,null);
insert into test values(3,400,300,null);
insert into test values(4,500,300,null);
select * from test;
<?
$dbHandle = mysql_connect("localhost","root","kya93");
if ($dbHandle == False) {print ("can not connect db\n");exit;}
$dbname = "MyDB";
mysql_select_db($dbname);
$sql = "select * from test where urikai is null order by shohin asc";
$res = mysql_query($sql);
while($row = mysql_fetch_array($res))
{
if ($row['uri'] <= $row['kai']) { continue; }
$sql = "update test set urikai='黒字' where shohin == '". $row['shohin'] . "'";
mysql_query($sql) or die("update abort");
break;
}
?>
$sql = "select * from test where urikai is null order by shohin asc";
$res = mysql_query($sql);
while($row = mysql_fetch_array($res))
{
if ($row['uri'] <= $row['kai']) { continue; }
$sql2 = "update test set urikai='黒字'where shohin = '". $row['shohin'] . "'";
mysql_query($sql2) or die("update abort");
break;
}
にて無事できました。
本当にありがとうございました。
本来自分のような素人は
まだコードを書いてはいけないのだと実感しました。
しかし、本だけ読んでいてもよくわからないので、
自分の商売に使うプログラムに挑戦しながら
勉強しようと思っています。
今後ともよろしくお願いいたします。
No.4
- 回答日時:
テーブルの内容を変えたいというだけなら
$sql = "update test set urikai='黒字' where (uri>kai)";
mysql_query($sql);
だけでいいのでは?(これも「みかん」限定にするならwhereにandで追加してください)
(蛇足)
mysql_db_queryは廃止予定のハズです。DBを選択する必要があるのなら、接続したあとでmysql_select_dbを使ってください。
この回答への補足
$sql = "update test set urikai='kuro' where (uri>kai) and (shohin = 'orenge')";
mysql_query($sql);
にて出来ました。ありがとうございます。
実は、今回IF文の質問をさせていただきましたのは、下記のようなことがしたいからです。
create table test (shohin char(40),uri int(10) ,kai int(10) ,urikai char(40));
insert into test values(1,400,200,'黒字');
insert into test values(2,300,500,null);
insert into test values(3,400,300,null);
insert into test values(4,500,300,null);
select * from test;
このようなテーブルで
2番の商品からチェックを行い、
黒字ならそこでストップし、
そうでなければ、次の番号をチェックし、
黒字ならそこでストップ、
そうでなければ、次へというようにしたいのです。
(上記のテーブルなら3番のurikaiが黒字となる)
このようにするにはどうしたらよいでしょうか。
何度も申し訳ございませんが、何卒よろしくお願いいたします。
No.2
- 回答日時:
>それを翌日、「みかん」の部分だけを指定し
>黒字かどうかを確認するために
>PHPから命令を出すというIF文を
いや、ですから「それならurikaiという列は不要」だと・・
$kekka = '';
$sql = "select * from test where (shohin = 'みかん');
$res = mysql_query($sql);
if ($row = mysql_fetch_array($res)) {
if ($row['uri'] > $row['kai']) { $kekka = '黒字'; }
}
※エラー処理など詳細は省略
黒字の商品だけ選択したければ
$sql = "select * from test where (uri > kai);
$res = mysql_query($sql);
while ($row = mysql_fetch_array($res)) {
print $row['shohin'] . "<br />\n";}
}
といった感じですかねぇ(未検証なのでtypoなどがあったら適宜修正してください)。
この回答への補足
ありがとうございます。
いろいろやってみましたが、うまくいきません。
<?
$dbHandle = mysql_connect("localhost","root","password");
if ($dbHandle == False) {print ("can not connect db\n");exit;}
$db = "MyDB";
$kekka = '';
$sql = "select * from test where (shohin = 'みかん')";
$res = mysql_db_query($db,$sql);
if ($row = mysql_fetch_array ($res)){
if ($row['uri'] > $row['kai']) { $kekka = '黒字'; }
}
?>
でやらせていただきましたが、真っ白の画面になるだけです。
また、私のやりたいこととしましては、テーブルの数値を変更することですが、
<?
$dbHandle = mysql_connect("localhost","root","password");
if ($dbHandle == False) {print ("can not connect db\n");exit;}
$db = "MyDB";
$sql = "select * from test where (shohin = 'みかん')";
$res = mysql_db_query($db,$sql);
if ($row = mysql_fetch_array ($res)){
if ($row['uri'] > $row['kai'])
{ UPDATE ($res)
set
urikai ='黒字';}
}
?>
とやってみましたが、
Parse error: syntax error, unexpected T_STRING in C:\xampp\htdocs\xampp\mytest13f.php on line 10
と表示されます。
素人の質問で大変申し訳ございませんが、何卒よろしくお願いいたします。
No.1
- 回答日時:
selectするときにuriとkaiから判断できる項目をテーブルに持たなくてもいいと思いますが、そういうことではないのですか?
あるいはphpからinsert文を組み立てているのなら、その時点でnull/黒字を分ければいいし・・
あえてinsert文の中で難しいことをする意図がわかりません。そのあたりの説明をお願いします。
この回答への補足
早速ありがとうございます。
test テーブルはダミーでございます。
実際は全く違うものですが、
例としてお考え下さい。
上記のような固定したデータがあり、
それを翌日、「みかん」の部分だけを指定し
黒字かどうかを確認するために
PHPから命令を出すというIF文を
何卒よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL 次の時間帯の勝率の合計を求めるSQL文 1 2023/07/04 17:12
- PHP php エラー 2 2022/10/23 16:43
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- PHP プログラムコードを入力する場合改行してもいいですか? 2 2022/10/02 16:05
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- MySQL SHOW CREATE TABLE posts;これって何ですか? 3 2022/08/28 22:57
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列に値が入らない
-
SQL文2つ実行
-
postした値のデータ型
-
XAMMPが起動しません。
-
sqlから多次元配列に要素を格納...
-
以下エラーの修正方法についてC...
-
mysql_fetch_assocについて
-
縦に長い<table>でなく横に長い...
-
mysql_query等でレコード数を変...
-
テーブルに入っているデータと...
-
MySQLでデータベースにデータin...
-
実行時エラー3131 FROM 句の構...
-
<VB.NET>INSERT文でDBにデータ...
-
codeigniter 複数モデルでトラ...
-
PHPで[]の使い方について
-
JAVA SQLServerException 列名 ...
-
phpにて出欠登録管理を作成して...
-
ResultSetインターフェイスでの...
-
php データ削除
-
csvファイルのデータをSQLiteに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テーブルに入っているデータと...
-
sqlから多次元配列に要素を格納...
-
SQL文2つ実行
-
phpのエラーについてです
-
stringaddslashes 半角¥が消える
-
mysql_fetch_objectのエラー
-
XAMPPで画面が真っ白になります。
-
XAMMPが起動しません。
-
縦に長い<table>でなく横に長い...
-
PHP+mysqlでSQL文に文字数制限...
-
会員登録したらメールが送られ...
-
Resource id #3 をフィールドの...
-
MySQLのデータを使ってプルダウ...
-
PHPで絞り込み検索結果の件数を...
-
MySQLのUPDATE実行結果を受け取...
-
mysql_query等でレコード数を変...
-
DB(MySQL)から複数行のデータを...
-
住所録を作りたい
-
CSVをダウンロードさせた際、CS...
-
「mysqlclient」の事が分からな...
おすすめ情報