while文の中にwhile文を書きたいのですが...

このQ&Aのポイント
  • while文の中にwhile文を書きたい場合、2回目のループでデータが抽出できない問題が発生します。
  • 現在のプログラムでは、1回目のループではデータを抽出できますが、2回目のループではデータが抽出できません。
  • 1回目のwhile文では指定したテーブルに格納されているデータの数を抽出し、2回目のwhile文では指定したテーブルに格納されているマスタデータの数を抽出します。
回答を見る
  • ベストアンサー

while文の中にwhile文を書きたいのですが。。。

while文の中にwhile文を書きたいのですが。。。 現在、下記ソースでプログラムを記述しております。 下記ソースですと、1回目のループのデータは抽出できるのですが、2回目のループだとデータが抽出できません。。 <? while($item0_3 = mysql_fetch_array($res0_3)){ ?> <tr> <td class="A"> <select name="work_partner_com[]"> <? while ($item5_2 = mysql_fetch_array($res5_2)) {?> <option value="<?=$item5_2["com_name"]?>"><?=$item5_2["com_name"]?></option> <? }?> </select> </td> <td class="B"> <select name="work_com[]"> <? while ($item5_3 = mysql_fetch_array($res5_3)) {?> <option value="<?=$item5_3["name"]?>"><?=$item5_3["name"]?></option> <? }?> </select> </td> </tr> <? } ?> 1回目のwhile文で、データーベースの指定したテーブルに格納されている数 2回目のwhile文で、データーベースの指定したテーブルに格納されているマスタデータ数 ご教授いただけますでしょうか。

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

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

先頭にシークしてください。 $sql="・・・・"; $res=mysql_query($sql); while($row=mysql_fetch_array($res)){ print_r($row); } mysql_data_seek($res, 0); while($row=mysql_fetch_array($res)){ print_r($row); } http://www.php.net/manual/ja/function.mysql-data-seek.php

sarapeso
質問者

お礼

ありがとうございました! 解決いたしました!

関連するQ&A

  • WHILEで取り出しループ中にさらにSQL文を入れたいです。

    こんばんは。 いつもお世話になっております。 またはまってしまったみたいで、どうにもわからなく なってしまいました。 どうかご指導よろしくお願いいたします。 使用環境はPHP5+Apche+MySQL4.0です。 2つのテーブルから【一覧リスト】というページを作って mysq_fetch_array関数で、行をループで呼び出しました。 ここまでは出来たのですが、取り出したキー情報を もとに、別テーブルの情報(文字列)を取り出したい のです。 以下、試してみたコードです。 //SQL発行 $rs = mysql_query("select * from uriage", $conn); //1件ずつ取り出すループ while( $rec = mysql_fetch_array( $rs, MYSQL_ASSOC)){ echo "<tr>"; echo "<td>".$rec['oder_no']."</td>"; $sql = "(select*from syouhin where syouhin_id = '".$rec["syouhin_id"]."')"; $res = mysql_query($sql); $rows = mysql_fetch_array($res); echo $rows["syouhin_name"]; echo "<td>".$rec['siiresaki']."</td>"; echo "<td>".$rec['tanka']."</td>"; echo "</tr>"; } Parse error: syntax error, unexpected T_ECHO というエラーが返ってきています。 エラーの行数はecho $rows["syouhin_name"]; の部分です。 何が悪いのかすら判らなくて…。 どうか、ご指導よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • Formを使ったページ間での受け渡し

    いつもお世話になっています。 また、どうしても分からないことがあって投稿させて頂きます。 現在、商品管理ページをphpとmysqlで作っているのですが、 ---------------------------(分かりにくいかもしれませんが、作ってる文をそのまま載せます) <form action="Div_Insert.php" method="post">  (接続&クエリ省略) if($rows){ while($row = mysql_fetch_array($res)){ $GetItem .= "<tr>"; $GetItem .= "<td colspan=5>".$row["ITEM_ID"]."</td>"; $GetItem .= "</tr>"; $GetItem .= "<tr>"; $GetItem .= "<td>".$row["ITEM_NM"]."</td>"; $GetItem .= "</tr>"; $GetItem .= "<tr>"; $GetItem .= "<td>".$row["EXPLAN"]."</td>"; $GetItem .= "</tr>"; $GetItem .= "<tr>"; $GetItem .= "<td>".$row["ITEM_DIV"]."</td>"; $GetItem .= "</tr>"; $GetItem .= "<tr>"; $GetItem .= "<td>"; $GetItem .= "<SELECT name='ITEM_GP_LIST'><OPTION value=''></OPTION>"; while ($row2 = mysql_fetch_array($res2,MYSQL_ASSOC)){ $GetItem .= "<OPTION value=".$row2["GP_NM"].">".$row2["GP_NM"]."</OPTION>"; } mysql_data_seek( $res2, 0 ); $GetItem .= "</SELECT>"; $GetItem .= "</td>"; $GetItem .= "<tr>"; } (省略) <input type="submit" name "bottun1" value="登録"> ------------------------------- というプログラムのページを作りました。 submitされた時にDiv_Insert.phpへ $row["ITEM_ID"]とITEM_GP_LISTの値を渡せるように作りたいのですが、 試行錯誤を重ねましたが私の実力では不可能でした。 複数行の$row["ITEM_ID"]とITEM_GP_LISTを渡すというのが難しくて。。 とても分かりにくい質問だと思いますが、どうか宜しくお願い致します。

    • ベストアンサー
    • PHP
  • データが表示されません

    php4とMySQLを使用しています。 select文でデータを取得したあと while($Row2 = mysql_fetch_array($result2, MYSQL_ASSOC)){ $name = $Row2['name']; $contents = $Row2['contents']; ?> <table> <tr> <td><?=$name?></td> </tr> <tr> <td><?=$contents?></td> </tr> </table> <? } ?>で表示しようとしていますが、10件中の10件目しか表示されません。 上書きされているようです。どこがおかしいでしょうか? 教えてください。お願いいたします。

    • ベストアンサー
    • PHP
  • PHP mysql_fetch_assocについて

    いつもお世話になっております。早速ですが下記のソースにて、SQLのクエリではレコードが2行(phpMyAdminで確認)出てきます。何故whileが繰り返してくれないのか分からず悩んでおります。($counterも2で止まる)長文でお手数ですがどうかお力添えの程お願い致します。(文字数制限にてSQL文は省略してます) $sql = "SELECT * FROM 省略"; $res = mysql_query($sql,$conn); echo "<form method=\"POST\" action=\"edit.php\">"; echo "<table class=\"login mb10\" border=\"1\" cellspacing=\"0\" width=\"650\">"; echo "<tr><td class=\"form\">日にち</td><td class=\"form\" colspan=\"3\">".$date."</td></tr>"; $counter = 1; //これが繰り返してくれない while($stadium = mysql_fetch_assoc($res)){ //2回目以降はtableタグを付加 if($counter > 1){echo "<table>";} echo "<tr><td>試合順</td><td colspan=\"2\">".$counter."試合目</td><td>対象</td></tr>"; echo "<tr><td>対戦カード・時間</td><td>"; //チーム情報 $sql = "SELECT * FROM 省略"; $res = mysql_query($sql,$conn); echo "<select name=\"team1_".$counter."\">\n"; while($team1 = mysql_fetch_assoc($res)){ echo "<option value=\"".$team1["team_id"]."\""; if($row["team1"] == $team1["team_id"]){echo " selected";} echo ">".$team1["team_name"]."</option>\n"; } echo "</select>対"; $sql = "SELECT * FROM 省略"; $res = mysql_query($sql,$conn); echo "<select name=\"team2_".$counter."\">\n"; while($team2 = mysql_fetch_assoc($res)){ echo "<option value=\"".$team2["team_id"]."\""; if($stadium["team2"] == $team2["team_id"]){echo " selected";} echo ">".$team2["team_name"]."</option>\n"; } echo "</select></td>\n"; //時刻を反転させる $date_s = strrev($stadium["schedule_time"]); $minute_s = strrev(substr($date_s,0,2)); $hour_s = strrev(substr($date_s,2,2)); echo "<td><select name=\"hour_".$counter."\">"; $hour = 8; while($hour < 22){ echo "<option value=\"".$hour."\" "; if($hour_s == $hour){echo "selected";} echo ">".$hour."</option>"; $hour ++; } echo "</select>時"; echo "<select name=\"minute_1\">"; $minute = 0; while($minute < 60){ echo "<option value=\"".$minute."\" "; if($minute_s == $minute){echo "selected";} echo ">".$minute."</option>"; $minute = $minute + 15; } echo "</select>分</td>\n"; //チェック echo "<td rowspan=\"2\"><input type=\"checkbox\" name=\"delete_".$counter."\" value=\"1\"></td></tr>\n"; echo "<tr><td class=\"form\">審判・場所</td><td>"; //チーム情報 $sql = "SELECT * 省略"; $res = mysql_query($sql,$conn); echo "<select name=\"umpire1_".$counter."\">"; while($umpire1 = mysql_fetch_assoc($res)){ echo "<option value=\"".$umpire1["team_id"]."\" "; if($umpire1["team_id"] == $stadium["umpire1"]){echo "selected";} echo ">".$umpire1["team_name"]."</option>"; } echo "</select>&"; $sql = "SELECT * FROM 省略"; $res = mysql_query($sql,$conn); echo "<select name=\"umpire2_".$counter."\">"; while($umpire2 = mysql_fetch_assoc($res)){ echo "<option value=\"".$umpire2["team_id"]."\" "; if($umpire2["team_id"] == $stadium["umpire2"]){echo "selected";} echo ">".$umpire2["team_name"]."</option>"; } echo "</select></td>\n"; //球場データ $sql = "SELECT * FROM 省略"; $res = mysql_query($sql,$conn); echo "<td>"; if($counter == 1){ echo "<select name=\"stadium_".$counter."\">"; while($sta = mysql_fetch_assoc($res)){ echo "<option value=\"".$sta["stadium_id"]."\" "; if($sta["stadium_id"] == $stadium["stadium"]){echo "selected";} echo ">".$sta["stadium_name"]."</option>"; } echo "</select>"; }else{ echo "&nbsp;"; } echo "</td></tr>\n"; echo "</table>"; $counter++; } echo "<table>変更するテーブル</table>"; echo "</form>";

    • ベストアンサー
    • PHP
  • while文から抜け出せません。。。

    現在、以下↓のようなプログラムで、MySQLからIDの一覧を拾いたいと考えています。しかし、一覧の中に空欄(登録する際はこんな感じです→(''))を代入したところ、while文から抜け出せません。どうしたらいいでしょうか?while文をやめる方法でもいいので、お願いします。 while ($col = mysql_fetch_array($rst)) { $return[] = $col[dataid]; }

    • 締切済み
    • PHP
  • while文の内容を変数に取り込む方法

    PHPとMySQLを使って、顧客管理システムを作っています。 While文の内容を、変数に取り込む方法についてお尋ねします。 MySQLに登録されている名簿の名前を表示させるスクリプトが下記なのですが、 while ($row_s = mysql_fetch_array($rs_s)){ echo $row_s[name]. "<br>¥n"; } ここでechoされる内容を、変数に入れることはできないかと思っています。 下記のようにやると、一番最後の名前だけが変数 $name に入ってしまいます。 while ($row_s = mysql_fetch_array($rs_s)){ $name = $row_s[name]. "<br>¥n"; } 全部を取り込むには、どうすればいいでしょうか?いろいろやってみたのですが、うまくいきません。 わかる方いたら、教えて下さい。

    • ベストアンサー
    • PHP
  • WHERE句で一致しない場合を判断させる方法

    下記のようなコードで$mysql_Codeで一致しない場合は、 $html_Code .= '<tr><td colspan="4">条件に一致する項目はありません。</td></tr>'; をさせたいと考えているのですが思うようにいきません。 $mysql_Code = "SELECT * FROM infotable WHERE name='$kisetsu' AND kudamono='$kudamono'"; mysql_set_charset('utf8'); $mysql_Row = mysql_query($mysql_Code,$mysql); $html_Code = ""; if(!mysql_fetch_array($mysql_Row)){ $html_Code .= '<tr><td colspan="4">条件に一致する項目はありません。</td></tr>'; } while($row = mysql_fetch_array($mysql_Row)){ $id = $row["id"]; $name = $row["name"]; $kudamono = $row["kudamono"]; $coment = nl2br($row["coment"]); $html_Code .= "<tr><td>$id</td><td>$name</td><td>$kudamono</td><td>$coment</tr>\n"; } といったやり方でやると、一致するはずの一部のフィールドが表示されなかったりします。 $mysql_Codeで一致するフィールドが見つかったかどうかを !mysql_fetch_array($mysql_Row) で判断させているのですが、これはダメなのでしょうか。 そういう場合はどのようにするのがいいのでしょうか。

    • ベストアンサー
    • PHP
  • phpのリストボックスについて

    よろしくお願いします。 phpを利用し、条件にあった内容を表示させる画面を作っています。 リストボックスで選択した内容を次のリストボックスの選択キーとして 別テーブルの検索条件に利用できるものでしょうか?? 以下のソースなんですが、 //------------------------------------------------------------- ソースA: print "<select name='brand' id='brand' style='width:190'>"; $sql ="select * from brand ORDER by no"; $res = mysql_query($sql); if ($res and mysql_num_rows($res)) { while($rec=mysql_fetch_array($res)){ echo "<option value='{$rec['name']}' >{$rec['name']}</option>"; } } print "</select>"; //-------------------------------------------------------------- とbrandテーブルからnameをリストボックス表示させます。 この表示し、選択した内容(仮にダイヤ)を同画面にあるもう一つの リストボックスで同じようなソースで別テーブルをselect文の検索キーに したいのです。以下のような感じ・・ //------------------------------------------------------------- ソースB: $sql ="select * from item where = 'ダイヤ'"; $res = mysql_query($sql); if ($res and mysql_num_rows($res)) { while($rec=mysql_fetch_array($res)){ echo "<option value='{$rec['itemname']}' >{$rec['itemname']}</option>"; } } print "</select>"; //-------------------------------------------------------------- の$sql ="select * from item where = 'ダイヤ'";←このダイヤを ソースAからもってきたいのですが、何かよい方法はありますか? 変数作ってやってみましたが、うまくいかずです。phpだけでは無理でしょうか?よろしくお願いします。

    • 締切済み
    • PHP
  • クリック時にSQLを流したい。

    いつもお世話になっています。 phpを用いてDBから取得した情報をhtmlに表示するプログラムがあります。 [表示している内容] ・名前 ・URL URL部をクリックすると、もちろんそのアドレスに遷移するのですが、 その際にDBにupdate文を流したいと考えています。 (URLがクリックされた回数をカウントしたいので) -------------[現在のプログラム]--------------- (DB接続) $sql = "SELECT ITEM_NM, ITEM_URL FROM ITEM_LIST"; $res = mysql_query($sql); $rows = mysql_num_rows($res); if($rows){ while($row = mysql_fetch_array($res)) { $Item .= "<table>"; $Item .= "<tr><td>".$row["ITEM_NM"]."</td></tr>"; $Item .= "<tr><td>".$row["ITEM_URL"]."</td></tr>"; $Item .= "</table>"; } } (DB切断) <?= Item ?> --------------------------------------------- 今までこのようなプログラムの場合は<Form action="" method="post"> で遷移先のページでupdateしていたのですが、今回は遷移先のページに 手を入れることが出来ないため困っています。 ご指導宜しくお願い致します。

    • ベストアンサー
    • PHP
  • select文

    こんばんは。PHPでデータベースからレコードとフィールドを表として取り出そうとしてますが、うまく行きません。 MySQLへの接続はうまくいってると思うので、while文が間違ってるのでしょうか?PHPのバージョンはPHP Version 4.4.2です。 よろしくお願いしますm(__)m <?php require_once("dbini.php"); $con = mysql_connect($server, $user, $pass); $select = mysql_select_db($dbname, $con); $sql = "select * from book"; $rst = mysql_query($sql, $con); $body = "<table border='0' cellpadding='5' cellspacing='5' width='500'><tr><td>\n"; while($col = mysql_fetch_array($rst)) { $body .= "<b><font size='+2'>".$col["title"]."</font></b>" $body .= "</td></tr>"; $body .= "<tr><td colspan='2'>".$col["article"]."</td></tr></table>"; } mysql_free_result($rst); $con = mysql_close($con); ?> <html> <body> <?= $body ?> </body> </html>

    • ベストアンサー
    • PHP

専門家に質問してみよう