ループ処理について

このQ&Aのポイント
  • ループ処理についての質問があります。現在、ページ内での「前へ」というボタン設定をしています。
  • コード番号を元にして値をもってきていますが、1つ前のコードがない場合、DB内の更に前のコードを自動的に調べて持って来たいのです。
  • ループ処理を使って、$rs==1の時(データが存在する時)にぬければいいと思うのですが・・・
回答を見る
  • ベストアンサー

ループ処理について

こんにちわ。ループ処理についての質問があります。 現在、ページ内での「前へ」というボタン設定をしています。その際、コード番号を元にして値をもってきていますが、1つ前のコードがない場合、DB内の更に前のコードを自動的に調べて持って来たいのです。 コードのtypeがTEXTで、値が03-00122のように入っています。 1つ前だけならこれでできるのですが、DB内の更に前のコードを自動的に調べて作成する方法が多分ループ処理を使って、$rs==1の時(データが存在する時)にぬければいいと思うのですが・・ どなたかご教授の方、お願いします。 php4.2です。 //年度取得 $N=substr($Number,0,3); //「前へ」 $i=1; $H=substr($Number,-5)-$i++; $I='000'.$H; $J=substr($Number,0,2); $BackNumber=$J.'-'.substr($I,-5); //$BackNumberがあるか確認 $sl="select * from student where number='$BackNumber'"; $rs=pg_exec($con,$sl); $row=pg_numrows($rs); //numberのmin値を得る $min = "select min(number) from base where number like '$N%'"; $resource_id = pg_exec($min); $remin = pg_result($resource_id, 0, "min"); // 1ページ目じゃなかったら「前へ」をつける if ($remin != $Number){ $prev = $page - 1; print("<A HREF=\"base.php?Number=$BackNumber\"><I>前へ</I></A>\n"); print(" \n"); }

  • FCTN
  • お礼率40% (6/15)
  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
回答No.1

質問内容がよくわかりません。 「前へ」というボタン設定の『前』とは何を指しているのでしょう? またスクリプト内コメントの『 1ページ目』とは? 捕捉をお願いします。 よくわかりませんが、一つ前のコードがあろうとなかろうと、 ループにしておいて '$row != 0'の時ぬければいいのでは。 ('$rs==1'は書き間違いですか?) 年度取得の部分に関して、'-'まで含んだ値を取得してから'-'を取り除き、さらに'-'を 加えて再構成しているのが無駄にみえますが別のところで使用しているのでしょうか?

FCTN
質問者

お礼

説明不足ですみません・・。 この件なのですが、ループ処理を使わずに、簡単にできる方法がありました。 お手をわずらわっせてすみませんでした。 ありがとうございました。 また何かありましたらよろしくお願いします。

関連するQ&A

  • JSPのループについて・・・

    JSPのループで以下以下のように設定してます。 string ruikeisql3="SELECT SITENKODO,HIDUKE,URIAGE,RIEKI,TOJITU FROM SABISU WHERE SITENKODO='"+no+"'AND YEAR(HIDUKE)="+nen+"AND MONTH(HIDUKE)="+tuki+"order by HIDUKE"; ResultSet RS2=st1.executeQuery(ruikeisql3); RS2.next(); String hiduke=RS2.getString("hiduke"); for(int i=1;i<32;i++){ out.print(i+","); out.print(RS2.getString("uriage")+","); out.print(RS2.getString("rieki")+","); out.print(RS2.getString("toujitu")+","); out.print(RS2.getString("\r"); if(rs2.next()){ 以下省略 実行すると1~31日までの実績が表示されるのですが、1日ごとに一度ループを終わらせて別の計算式を入れたいのですがどのようにしたら良いのか・・・・ お手数ですが宜しくお願いし致します。

  • 処理の流れの説明のしかたがわかりません。

    プログラムの課題が出たのですがソースコードはなんとか穴埋めでできたのですが説明文を簡単につけなければならないのですがあんまり理解してないのでどのように説明したら良いかよくわかりません。お願いします。 10個の整数を配列し保存しそのデータのうちから最大値と最小値を表示するプログラムです。 #include <stdio.h> void main(void) { int data[10]; int i; int max,min; for(i=0;i<10;i++){ printf("input data No. %d ->",i+1); scanf("%d",&data[i]); } max=data[0]; min=data[0]; for(i=1;i<10;i++){ if(data[i]>max){ max=data[i]; } if(data[i]<min){ min=data[i]; } } printf("MAX = %d\n",max); printf("MIN = %d\n",min); } .

  • phpでの住所の処理について

    初めまして。 まだまだphpを初めて間もないのですが、勉強がてらphpで登録内容の変更フォームを作っています。 ただ、どうしても住所関連の部分で上手く処理が出来ずに悩んでいまして、 よろしければお知恵を拝借できないでしょうか? ↓ココから実際のコード----------------------------------------------------------------- <select name="usaddress" id="usaddress" > <option value="">お住まいの都道府県を選択してください</option> <? for ($i=01;$i<53;$i++) { if(substr($i + 100 , 1 , 2) == $usaddress){ echo '<option value="' . substr($i + 100 , 1 , 2) . '" selected="selected">' . $selectprefecture_set[substr($i + 100 , 1 , 2)] . '</option>' . "\n"; }else{ echo '<option value="' . substr($i + 100 , 1 , 2) . '">' . $selectprefecture_set[substr($i + 100 , 1 , 2)] . '</option>' . "\n"; } } ?> </select> ↑ココまで実際のコード----------------------------------------------------------------- $usaddressには登録者の都道府県コードが入っています。 DBから呼び出して当該ユーザーの都道府県コードが入ってきます。 $selectprefecture_setには、連想配列で都道府県名を突っ込んでいます。 コレを登録内容の変更フォームに組み込むと、 セレクトボックスの中身は表示されるんですが、 DBから取ってきた値がデフォルト値で表示されないのです・・・。 DBからはキチンと値を持ってきているのは確認できていますし、 正直どこが悪いのかすらわかっていません・・・。 宜しくお願い致します。

    • 締切済み
    • PHP
  • PHPとPostgreSQL接続 (スキーマ)

    いつもお世話になっております。 現在、PHP(5.3.1)とPostgreSQL(9.2)で開発をしております。 エラーが発生しており大変困っております。 こちらが発生するエラーです。 Warning: pg_exec() [function.pg-exec]: Query failed: ERROR: schema スキーマが見つからないとのことです。 そして、以下がコードとなります。 <?php // PostgreSQL Connect if (!($cn = pg_connect("host=*** port=*** user=*** password=*** dbname=***"))) { die; } // PostgreSQL Select $sql = "select * from t_test.na1"; if (!($rs = pg_exec($sql))) { die; } // PostgreSQL Get Records $ct = pg_numrows($rs); for ($i = 0; $i < $ct; $i++) { $item = pg_fetch_array($rs, $i); $txt = "${item[1]}"; } // PostgreSQL Disconnect pg_close($cn); ?> 現在のデータベースのスキーマについてですが「na1」と「public」の2つが存在しています。 試しに、na1とpublicのテーブルをまったく同じにして SQLの部分を「select * from t_test」に変更すると「public」側のテーブルが覗けます。 しかし、SQLの部分を「select * from t_test.na1」に変更すると「スキーマが見つかりません」 というエラーが発生してしまいます。 スキーマがあるにもかかわらずこのエラーがでてしまうため原因が分からず困っております。 もしお分かりになる方いらっしゃいましたら、教えていただければと思います。 何卒よろしくお願いします。

    • ベストアンサー
    • PHP
  • Resource idの渡し方

    下のようにエラーメッセージが出ました。 Warning: PostgreSQL query failed: ERROR: pg_atoi: error in "Resource id #3": can't parse "Resource id #3" in /home/***/write.php on line 29 cannot connect データベースの主キー(serial)を別のテーブル(category_xref)で外部キーとして使おうとしたのですが、どうもテーブル(category_xref)でgcode がinteger で定義されているため、エラーが帰ってきているようなのです。 Resource idはどうやって別のテーブルに渡せばよいのでしょうか? すいません、どうぞご回答よろしくお願いいたします。 // serial 型のGCODE値の取得 $sql = "select currval('gurume_gcode_seq')"; $gcode = pg_exec($db_con, $sql); if($gcode == false) {print "cannot connect"; exit;} // category_xrefテーブルへの登録 for ($i=0; $i<count($cname); $i++) { // 配列 $cname をカウント。 count($cname)にはチェックボックスをチョイスした個数が入っている $sql = "insert into category_xref (gcode,ccode) values ('$gcode','$cname')"; // 店情報の登録 $rs = pg_exec($db_con, $sql); if($rs == false) {print "cannot connect"; exit;} }

    • ベストアンサー
    • PHP
  • Excel VBA ループ処理のデバッグについて

    Excel VBAで、for文のループについて。 for i=1 to maxNum (処理) next i というような場合。F8キーとかでステップインしデバッグしながらテストしてみます。maxNumが5万くらいとして、とりあえず1万くらいまでは一気にiの値を進めてから止めて、様子を見てみようという場合、どうすればよいでしょうか。 if i=10000 then とか、前もってコードに書いて置く以外の手段でお願いします。なぜなら10000のときだけ処理を止めると限定するのではなく、30000のときとか49997のとき止めるとか、その時その時で色々と試してみたいからです。

  • JAVAのwhileループについての質問です

    こんばんわ。 javaのforループをwhileループ構文に書き換える問題で詰まっています。 僕はプログラミング超初心者なので、いろいろ考えたが、なかなか答えが出ていません。 ぜひ、わかる方に教えていただきたくここで質問させてもらいました。 ソースコードは以下です class S7j4{ public static void main(String args[]){ short a[] = {26,54,39,71,83,100,98,47,82,65}; short work; int i,j,n; n = 10; for (i = 0;i< n; i++) System.out.print(a[i] +" , "); System.out.println(); for(i = 0; i < n; i++) for(j = 0; j < n;j++) if(a[i] < a[j]){ work = a[i]; a[i] = a[j]; a[j] = work; } for(i = 0; i< n;i++) System.out.print(a[i] + " , "); System.out.println(); } } ぜひ一つよろしくお願いしますm(-_-)m

  • ループの後にTrueになる不思議

    下記のコードを実行してみます。 Private Sub Command1_Click() ProgressBar1.Visible = True Label1.Visible = True ProgressBar1.Max = Val(Text1.Text) For i = 1 To Val(Text1.Text) Text1.Text = i ProgressBar1.Value = i Next i MsgBox "終了しました。" ProgressBar1.Visible = False Label1.Visible = False End Sub 「ProgressBar1」はループに入る前に「Visible = True」になります。 「Label1」はループ終了後に「Visible = True」になります。 「Text1.Text = i」はループ終了後に表示されます。 本来は、「Label1」はループに入る前に「Visible = True」にして、「Text1.Text = i」をループ中に表示させたいのですが、できません。 どこかコードが間違っているのでしょうか。

  • 続:日本語(マルチバイト)でのwordwrap処理

    日本語の文字列を、任意の字数で折り返す処理を行おうとしています。先にBLUEPIXYさんから以下のコードを頂きました。 ■■ #$line は、一行分のデータが文字列で入っている $n=10; # 改行させる(半角での)文字数 for($i=0;$i<mb_strlen($line);$i+=$len){ for($j=1;$j<=$n;$j++){ $wk=mb_substr($line,$i,$j); if(strlen($wk)>=$n) break; } $len=mb_strlen($wk); print ">$wk\n"; } ■■ このコードは美しく動くのですが、一つだけ問題があります。文中に改行が入っている場合に、改行後の文字列先頭に">"を付加する処理がないので、改行のある文章は、以下のように表示されてしまいます。 処理前の文字列: 1234567 890 処理後の文字列: >1234567 890 この"890"の手前にも">"を挿入するように、頂いたコードを変更してみました。こんな感じでやれば改行("\n")が拾えると思ったのですが。。。 ■■ for($i=0;$i<mb_strlen($message);$i+=$len){ for($j=1;$j<=$crlf;$j++){ $wk=mb_substr($message,$i,$j); //追加部分↓ $crlfChk=mb_substr($message,$i+$j,1); if($crlfChk=="\n") break; //追加部分↑ if(strlen($cnt)>=$crlf) break; } $len=mb_strlen($wk); print ">$wk\n"; } ■■ 追加部分の拾い方が間違っているのかな、と思うのですが、正解が分かりません。それとも、どこか別の部分が根本的に間違っているのでしょうか。(ローカルの環境はSJISなので、mb関数が正しく動作していないとか。。。?) どなたかご教授頂ければ幸いです。よろしくお願いします。

    • ベストアンサー
    • PHP
  • ループで呼び出しながら、追加クエリでテーブルに追加

    IDをループで呼び出しながら、追加クエリでテーブルに追加したいのですが、 値が入りません。 エラーなく動くのですが、テーブルに値が入っていないのです。 何がたりないのでしょうか? ――――――――――――― Public Sub CYUSYUTU_SEIKYUID2() Dim CYUSYUTU_SEIKYUID As String Dim recCount As Long recCount = DCount("*", "作業用請求先ID") Dim ID As String Dim DB As DAO.Database Dim RS As DAO.Recordset Dim i As Integer Dim strSQL As String Set DB = CurrentDb Set RS = DB.OpenRecordset("作業用請求先ID") RS.MoveFirst Do Until RS.EOF RS.Edit For i = 1 To recCount CYUSYUTU_SEIKYUID = RS.Fields("請求先ID(13)").Value DoCmd.RunSQL _ "INSERT INTO [作業用_▲入金DB] SELECT * FROM ▲入金 WHERE ▲入金.請求先ID='& CYUSYUTU_SEIKYUID &';" Next i RS.Update RS.MoveNext Loop RS.Close: Set RS = Nothing DB.Close: Set DB = Nothing End Sub

専門家に質問してみよう