• ベストアンサー

ラジオボタンで表示された内容を整列させたい

PHPとMYSQL初心者です。どうも難しくて暗礁に乗り上げております。 どなたか助けて下さい。 次のコードは、フォームを使って「エリア」を指定して、 指定された都道府県を表示するようにしたいのですが、 表示はできるのですが、それを3列に整列して表示をさせることが できません。 茨城 群馬 千葉 埼玉 東京 神奈川 と次々に表示されてしまうものを 茨城 群馬 千葉 埼玉 東京 神奈川 というように3県毎に改行をしたいのですが、 方法がわかりません。どなたかご指導お願いいたします。 <form method='POST' action='search_city.php'> <?php // MYSQLへ接続 $con = MYSQL_CONNECT("******","******","******"); mysql_select_db("jp00001"); // クエリの実行 $area_id = htmlspecialchars($_POST["area_id"]); $res = mysql_query("SELECT area.area_id, area.area_name, pref.pref_id, pref.pref_name FROM area INNER JOIN pref ON area.area_id = pref.area_id WHERE area.area_id='$area_id'"); // クエリのチェック if (!$res) { die('クエリーが失敗しました。'.mysql_error()); } // クエリの文字の表示 while ($row = mysql_fetch_assoc($res)) { ?> <label><font size="-1"> <input type="radio" name="pref_id" value="<?php echo $row['pref_id'] ?>"> <?php echo $row['pref_name'] ?></font></label> <? } ?> <tr> <td height='21' align="center" bgcolor='#DDFFFF'> <input type='submit' value='市区エリアへ'>

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

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

  • ベストアンサー
  • calltella
  • ベストアンサー率49% (317/635)
回答No.1

↓3行ごとに改行させる。 $i=0; while ($row = mysql_fetch_assoc($res)) { ←この行の下に if ( $i >= 3 ){ echo "<br>"; $i=1; }else{ $i++; } でも、これだと揃わないので応用してテーブルを組む echo "<table><tr>"; $i=0; // クエリの文字の表示 while ($row = mysql_fetch_assoc($res)) { if ( $i >= 3 ){ echo "</tr><tr>"; $i=1; }else{ $i++; } ?> <td><label><font size="-1"> <input type="radio" name="pref_id" value="<?php echo $row['pref_id'] ?>"> <?php echo $row['pref_name'] ?></font></label></td> <? } で、いかがですか?

nicolemen
質問者

お礼

calltellaさん。本当に貴重な時間をありがとうございました。 ただ今、確認しまして、無事に思っているようにできました。 テーブルを組んで体裁を整えて、イメージ通りになりました。 感謝致します。

その他の回答 (1)

  • asuncion
  • ベストアンサー率33% (2126/6286)
回答No.2

県の数をカウントする変数(初期値=0)を設けて、 ・1県分をechoするごとにインクリメントする ・カウントが3で割り切れたら echo "<br />"; する という作戦はいかがでしょうか。

nicolemen
質問者

お礼

asuncionさん。ありがとうございます。 無事に解決致しました。

関連するQ&A

  • 入れ子のようにしてデータを作りたい。

    よろしくお願い致します。 次のようなコードを書きました。 京都(15) 大阪(18) 滋賀(6) 奈良(23) 和歌山(21) 兵庫(9) というようなファイルを作りたいのですが、 どうもカッコの中に入れる数字がうまく入りません。 また一般的な方法として下記のような発想の 記述でよいのか、御指導をお願い致します。 <table width="100%" align="left"> <?php $con = MYSQL_CONNECT("localhost","*****","*****"); mysql_select_db("net-jp00001"); $res = mysql_query("SELECT pref.pref_id, pref.pref_name FROM pref"); // 表示文字コード if (!$res) { die('クエリーが失敗しました。'.mysql_error()); } $i=0; // クエリの文字の表示 while ($row = mysql_fetch_assoc($res)) { if ( $i >= 3 ){ ?> <form method='POST' action='search_city.php'> <tr align="center" bgcolor="#FCFFD0"> <? $i=1; }else{ $i++; } ?> <td width="5" height="21" colspan="1" align="left" bordercolor="1" bgcolor="#FCFFD0"> <input type="radio" name="pref_id" value="<?php echo $row['pref_id'] ?>"> </td> <td width="200"colspan="11" align="left" bordercolor="1" bgcolor="#FCFFD0"> <label><font size="-1"><?php echo $row['pref_name'] ?></font></label> <?  //この部分でエラーが出て記述方法がわかりません。 $pref = $row['pref_name']; $res1 = mysql_query("SELECT count(*) as city_id FROM pref INNER JOIN city ON pref.pref_id = city.pref_id WHERE pref.pref_name = $pref_name"); list($num) = mysql_fetch_row($res1); echo "(".$num.")"; ?> </td> <? } ?> </tr> <tr align="left" bgcolor="#D0FFF8"> <td height="21" colspan="12" bordercolor="1"> <input name="submit" type='submit' value='市区エリアへ'> </td> </tr> </form> </table>

    • ベストアンサー
    • PHP
  • 配列としてMysqlから値を取得する方法を教えて下さい。

    いつも助けていただきましてありがとうございます。 チェックボックスの値をMysqlに登録するところまではできましたが、 今度それを、確認・更新画面に読み込む方法でつまずいています。 どうぞご指導をお願い致します。 Mysqlから「days_id」の値が「0,2,5」と取得されても 実際のチェックが付くのが、「5」のみなってしまいます。 配列としてMysqlから値を取得する方法を教えて下さい。 $res = mysql_query($sql); $i=0; foreach($labels as $label){ while ($row = mysql_fetch_array($res)) { $days_id = $row["days_id"]; } if($i==$days_id){ $checked = " checked"; echo "<label>\n<input type=\"checkbox\" name=\"job_type[]\" value=\"{$i}\" {$checked} />{$label}</label>"; }else{ $checked = ""; echo "<label>\n<input type=\"checkbox\" name=\"job_type[]\" value=\"{$i}\" {$checked} />{$label}</label>"; } $i++; }

    • ベストアンサー
    • PHP
  • ラジオボタンをループすることができない。。。

    こんにちは。 PHPとMySQLを使って四択クイズのプログラムを作成しているのですが、どうもうまくいきません。 助言よろしくお願いします。 四択クイズのイメージとしては以下のとおりです。 問題1:パンはパンでも食べられないパンは? ○クリームパン ○食パン ○フライパン ○チーズパン [送信ボタン] ※選択肢の前の○はラジオボタンです。 一つのページに複数の問題を載せたいので、 上記の[送信ボタン]をのぞいた部分をループ処理したいと思っています。 問題文と選択肢は実行するファイルとは別のファイル、「mondai.sql」に記述してデータベースに読み込んでいます。↓ drop table form2; create table form2(id mediumint not null auto_increment, mondai varchar(500), sentaku1 varchar(100),sentaku2 varchar(100),sentaku3 varchar(100), sentaku4 varchar(100),primary key(id)); insert into form2 values('1', 'パンはパンでも食べられないパンは?', 'クリームパン', '食パン', 'フライパン', 'チーズパン'); そして実行するファイルの「form2.php」を下のように記述してみたのですが・・・ ・ ・ ・ //----------------------------------------- //サーバに接続 //----------------------------------------- $my_Con = mysql_connect("localhost","root","vertrigo"); if($my_Con == false){ die("MYSQLの接続に失敗しました。"); } //----------------------------------------- //データベースに接続 //----------------------------------------- if(!mysql_select_db("kihon",$my_Con)){ die("データベースの選択に失敗しました。"); } //----------------------------------------- //テーブルからデータを読む //----------------------------------------- $my_Row = mysql_query("select * from form2",$my_Con); if(!$my_Con){ die(mysql_error()); } while($row = mysql_fetch_array($my_Row)){ echo $row["id"]; echo "<br>"; echo $row["mondai"]; echo "<br>"; ?> <input type="radio" name=mondai1 value=1> <?php echo $row["sentaku1"]; echo "<br>"; ?> <input type="radio" name=mondai1 value=2> <?php echo $row["sentaku2"]; echo "<br>"; ?> <input type="radio" name=mondai1 value=3> <?php echo $row["sentaku3"]; echo "<br>"; ?> <input type="radio" name=mondai1 value=4> <?php echo $row["sentaku4"]; echo "<br>"; } このままだとラジオボタンのnameが同じになってしまって全ての問題の選択肢から一つしか選べなくなってしまいました。 かといってnameをfor文でループさせることもできませんでした。 このプログラムにどのようにしてループを組み込めばいいかまったくわかりません。 長い質問で申し訳ないのですが、どうかよろしくお願いします。

    • ベストアンサー
    • PHP
  • 動的配列の利用方法について

    いつも御指導頂きありがとうございます。 度々ですが、質問させて頂きます。 Mysqlで、クエリを実行して次の文でデータを抜き出すのですが、 while ($row = mysql_fetch_assoc($res)) { ?> <a href= "1test.php?pref_id=<? echo $row['pref_id'] ?>"><? echo $row['pref_name'] ?></a><br> $pref_id=$row['pref_id']; <? } $pref_id //←ここが? ?> としてループで、データを下記のように表示しています。 28兵庫 27大阪 26京都 25滋賀 ループ{}から外れて変数に格納されている値を使おうとすると 当然ですが、一番最後の値の25滋賀が表示されて しまいます。 このデータの結果を利用したいのですが、 データの個数が変化する動的配列というのでしょうか? 配列に入れて、何番目の値という形で 違う場面でデータを利用したのですが方法がわかりません。 26京都を選びたいのですが、どうしたら京都が反映されるのか御指導お願いします。 表現がうまく伝わるといいのですが、いかがでしょうか? 御指導お願いします。

    • 締切済み
    • PHP
  • フォームのボタンが表示されない

    PHP初心者です。 下のコードは「お友だちリスト」を表示させ、リストの中から「お友だちの詳細を見る」または「メールを送信する」を選択させようというものです。 「お友だちの詳細を見る」では、「詳細(GET)コンボ」をクリックし、GETでIDを次画面に渡します。 「メールを送信する」では、Form内の「このお友だちを選択」ボタンをクリックさせて、次画面にPOSTでIDを送ろうというものです。 ところが、「このお友だちを選択」ボタンが画面に表示されません。 コード上のどこに問題があるのか教えて下さい。 また、このケースでは、操作する人の判断によって遷移する次画面を選択するわけですが、GETとPOSTを使い分けることによって実現しようと考えましたが、他にもよい方法があったら教えて下さい。 よろしくお願いします。 while($row = mysql_fetch_array($res)){ echo("<tr>"); echo("<td>".$row["customer_id"]."</td>"); echo("<td>".$row["customer_name"]."</td>"); echo("<td>".$row["customer_nicname"]."</td>"); echo("<td>".$row["phone"]."</td>"); echo("<td>".$row["mail_1"]."</td>"); echo("<td>".$row["status"]."</td>"); echo("<td><a href=\"indicate_detail.php?id=" .$id."\">詳細(GET)コンボ</a></td>"); echo '<form action="mail_message.php" method="post">'; echo '<input type="hidden" name="customer_id" value="' .$id.' />'; echo '<td><input type="submit" name="choice" value="このお友だちを選択" /></td>'; echo '</form">'; echo("</tr>\n"); }

    • ベストアンサー
    • PHP
  • 検索結果にラジオボタンを付加したい

    PHP初心者です。 困っています。どなたか分かる方いらっしゃたら、教えてください。 DBを検索して抽出結果を画面に表示します。 その結果にラジオボタンを付けて選択し、修正を行えるようにしたいのです。 (検索結果の件数は検索条件によって変動します) 条件による検索結果を表示、までは出来たのですが、 ラジオボタンを付加することが出来ません。 下記がソースです。 このソースですと echo "<input type="radio" name="edit" value=".$row["name"]." />修正"; この部分がエラーだというメッセージが表示されます。 この部分は色々変えてみましたが上手くいきません。 よろしくお願い致します。 <html> <head> //<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link rel="stylesheet" type="text/css" href="./css/color.css"> <title>○○学習サイト</title> </head> <body> <?php // 接続設定(サーバ/データベース/ユーザ/パスワード) $sv = "localhost"; $dbname = "jitec"; $user = "root"; $pass = ""; // データベースに接続する //mb_language("uni"); $conn = mysql_connect($sv, $user, $pass) or die("接続エラー"); mysql_select_db($dbname) or die("接続エラー"); // データを取り出す $sql = "SELECT name, setsumei, kubun FROM word WHERE (name LIKE '%".$_POST['s_word']."%' and setsumei LIKE '%".$_POST['s_word2']."%' and kubun LIKE '%".$_POST['s_word3']."%')"; //$sqlを表示 var_dump($sql); $res = mysql_query($sql, $conn) or die("データ抽出エラー"); //SELECTコマンドによって取得した全データは$resという変数に格納される。 // mysql_query()関数でデータを取り出すSQLを実行します。 // 取り出したデータを表示する echo "<table border=\"1\">"; echo "<tr>"; echo "<td>単語名</td>"; echo "<td>説明文</td>"; echo "<td>試験区分</td>"; echo "<td>修正する</td>"; echo "</tr>"; //$rowという変数に1行ずつ取り出す↓ while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { echo "<tr>"; echo "<td>".$row["name"]."</td>"; echo "<td>".$row["setsumei"]."</td>"; echo "<td>".$row["kubun"]."</td>"; echo "<td>"; echo "<form>"; echo "<input type="radio" name="edit" value=".$row["name"]." />修正"; echo "</form>"; echo "</td>"; echo "</tr>"; } echo "</table>"; // 接続を解除する mysql_close($conn); ?> <form method="POST" action="edit.php"> <input type="submit" value="修正" name="sub2"> </form> </body> </html>

    • ベストアンサー
    • PHP
  • PHP+MySQLで複数のラジオボタンから値を取得

    初めまして。もしお力を貸していただけるならと思い質問させていただきます。 今、MySQLに登録したデータを修正できるようにするファイルを作成しておりまして、 IDを指定すれば、ラジオボタンに登録されているデータがcheckedされるようにしたいと 考えています。 【MySQL】 [hoge] id hogeA 0or1 hogeB 0or1 hogeC 0or1 【update.php】 <?php require ("../dbconnect.php"); $_REQUEST["id"] = 選択したIDの受け渡し; $id = $_REQUEST["id"]; $sql = sprintf ("SELECT * FROM hoge WHERE id=%d", mysql_real_escape_string ($id) ); $recordSet = mysql_query ($sql) or die (mysql_error()); $data = mysql_fetch_assoc ($recordSet); $checkedOK = null; $checkedNG = null; switch($data["hogeA"]){ case 0: $checkedOK = 'checked'; break; case 1: $checkedNG = 'checked'; } ?> <html> <head> <form method="post" id="updateForm" action="update.php" enctype="multipart/form-data"> <table> <tr> <th>hogeA</th> <td><label> <input type="radio" name="hogeA" id="hogeA01" class="style02" value="0" <?php echo (htmlspecialchars($checkedOK, ENT_QUOTES)); ?> /> OK</label> <label> <input type="radio" name="hogeA" id="hogeA02" class="style02" value="1" <?php echo (htmlspecialchars($checkedNG, ENT_QUOTES)); ?> /> NO</label></td> </tr> <tr> <th>hogeB</th> <td><label> <input type="radio" name="hogeB" id="hogeB01" class="style02" value="0" <?php echo (htmlspecialchars($checkedOK, ENT_QUOTES)); ?> /> OK</label> <label> <input type="radio" name="hogeB" id="hogeB02" class="style02" value="1" <?php echo (htmlspecialchars($checkedNG, ENT_QUOTES)); ?> /> NO</label></td> </tr> <tr> <th>hogeC</th> <td><label> <input type="radio" name="hogeC" id="hogeC01" class="style02" value="0" <?php echo (htmlspecialchars($checkedOK, ENT_QUOTES)); ?> /> OK</label> <label> <input type="radio" name="hogeC" id="hogeC02" class="style02" value="1" <?php echo (htmlspecialchars($checkedNG, ENT_QUOTES)); ?> /> NO</label></td> </tr> </head> </html> とした場合、当然ですがhogeA,hogeB,hogeCには同じ値が入ってしまいます。 hogeB,hogeCも同じ様にSWITCH文を書けば実装できると思うのですが、 foreach等を使って複数のラジオボタンを取得するいい方法があれば、 教えていただきたいです。 説明が不十分で申し訳ありません。もし快くお答えいただける方がいれば大変嬉しく思います。

    • 締切済み
    • PHP
  • mysqlからphpに表示ですべての項目を出したい

    phpとmysqlの勉強をしているのですが、出したい項目がでてきてくれません。 今mysqlでidとnameとpriceの項目を作っているのですが、以下だとどうしてもnameしか出てきてくれません。 どうすれば3つの項目がでてくれますでしょうか? よろしくお願いします。 <?     mysql_connect('localhost' , 'root' , '') or die(mysql_error());     mysql_select_db('db1'); mysql_query('SET NAMES UTF8'); $sql="SELECT * FROM syouhin"; $res=mysql_query($sql); $options=""; while($row = mysql_fetch_array($res,MYSQL_ASSOC)){ $options.="<input type=\"radio\" name=\"syouhin1\" value='{$row['id']}' checked>        {$row['name']}\n<br>"; } $select="{$options}</select>\n";     print $select; ?>

    • ベストアンサー
    • PHP
  • ページ間の値の受け渡しについて

    緊急でPHPを用いて開発しなければならず、値の受渡し方法が調べても 結果がうまく出来ないために教えて下さい。 説明がうまくできないので、ソースの一部を下記に記載しております。 【keikaku.php】 <?php $link = DB接続 $query = "SELECT (1) , (2) , (3) FROM KEIKAKU WHERE 営業所= '東京'"; $res_result = mysql_query($query,$link); echo ("<form action='keikaku_input.php' method='POST'>"); while($row = mysql_fetch_array($res_result)){  echo ("<table border=1>");  echo ("<tr>");  echo ("<td><input type='radio' name='name' value=''></td>");  echo ("<td>");  echo $row['(1)'];  echo ("</td><td>");  echo $row['(2)'];  echo ("</td><td>");  echo $row['(3)'];  echo ("</td>");  echo ("</tr>"); } echo ("<input type='submit' value='次へ'>"); echo ("</form>"); ?> というSQLで一覧を表示させて、対象行のラジオボタンが選択されると (1)と(2)の値を使い、【keikaku_input.php】で更に別のSQLを実行後に 結果を表示させる事を行ないたいのです。 【keikaku.php】→【keikaku_input.php】へ(1)と(2)の値を渡したい場合 はどのようにすれば良いかご教授願えませんでしょうか?

    • ベストアンサー
    • PHP
  • php 投票システム

    データベースと連動した投票システムを考えております。 phpとMySQLを使用したもので、対応するボタンを押すと1票投じられるというものです。 この仕組み自体は実現できたのですが、 ブラウザの更新ボタンを押すと、『情報を再送信する必要があります』と表示され、『はい』を押すと、自動的に1票投じられてしまいます。 スクリプトは以下のようになるのですが、上記のような不具合を修正するためにはどうすればよいのでしょうか。 アドバイス、具体的なソース、また、他の部分における修正すべき箇所など、ご指摘いただきたいと思います。 よろしくお願いいたします。 <?php echo "<table border=0>"; echo "<tr><td colspan=4 align=left><img src=logo-touhyou.gif></td></tr>"; echo "<tr><td><form method=post action="; echo $_SERVER["PHP_SELF"]; echo "><input type=hidden value=1 name=posi><input type=image src=logo-posi-s.gif border=0></form></td>"; echo "<td><form method=post action="; echo $_SERVER["PHP_SELF"]; echo "><input type=hidden value=1 name=deep><input type=image src=logo-deep-s.gif border=0></form></td></tr></table>"; $posi=$_POST["posi"]; $deep=$_POST["deep"]; if ($posi==1){ $server="mysql..jp"; $dbname="LA"; $user="LA"; $pass=""; $conn = mysql_connect($server,$user,$pass); $conndb = mysql_select_db($dbname); $sql="SELECT posi FROM test WHERE id =1 LIMIT 1"; $res=mysql_query($sql); while($row = mysql_fetch_assoc($res)) { $row_con=mb_convert_encoding($row["posi"], "shift_jis", "auto"); echo $row_con; echo "<br>"; $number1=1; $after=$row_con+$number1; echo $after; echo "<br>"; mysql_query("LOCK TABLES test WRITE"); $sql_1="UPDATE test SET posi='$after3' WHERE id =1 LIMIT 1"; $ins=mysql_query($sql); mysql_query("UNLOCK TABLES"); if ($ins_1){ echo "ポジティブ投票完了"; } $sql_2="SELECT posi FROM test WHERE id =1 LIMIT 1"; $res_2=mysql_query($sql_2); while($row_2 = mysql_fetch_assoc($res_2)) { $row_con_2=mb_convert_encoding($row_2["posi"], "shift_jis", "auto"); echo $row_con_2; } } mysql_close($conn); } if ($deep==1){ $server="mysql..jp"; $dbname="LA"; $user="LA"; $pass=""; $conn = mysql_connect($server,$user,$pass); $conndb = mysql_select_db($dbname); $sql2="SELECT deep FROM test WHERE id =2 LIMIT 1"; $res2=mysql_query($sql2); while($row2 = mysql_fetch_assoc($res2)) { $row_con2=mb_convert_encoding($row2["deep"], "shift_jis", "auto"); echo $row_con2; echo "<br>"; $number1=1; $after2=$row_con2+$number1; echo $after2; echo "<br>"; mysql_query("LOCK TABLES test WRITE"); $sql2_2="UPDATE test SET deep='$after2' WHERE id =2 LIMIT 1"; $ins2=mysql_query($sql2_2); mysql_query("UNLOCK TABLES"); if ($ins2){ echo "ディープ投票完了"; } $sql2_2="SELECT deep FROM test WHERE id =4 LIMIT 1"; $res2_2=mysql_query($sql2_2); while($row2_2 = mysql_fetch_assoc($res2_2)) { $row_con2_2=mb_convert_encoding($row2_2["deep"], "shift_jis", "auto"); echo $row_con2_2; } } mysql_close($conn); } ?>

    • ベストアンサー
    • PHP

専門家に質問してみよう