printfの表示結果の配置がうまくいかない

このQ&Aのポイント
  • PHP初心者が、printfの表示結果の配置について問題が発生しています。
  • 現在のコードでは、結果が1つずつ改行されてしまい、理想の配置ができません。
  • 質問者は、指定した1行の幅内で均等な間隔で複数の結果を表示する方法を知りたいとしています。
回答を見る
  • ベストアンサー

printfの表示結果の配置がうまくいかない

いつもご協力頂いている皆様、ありがとうございます。 当方PHP初心者です。つまらない質問で恐縮ですがご協力をお願いいたします。 現在作成している内容は下記の通りです。 $sql = mysql_query('SELECT `市区町村`, COUNT(`市区町村`) AS `count` FROM `estate` GROUP BY `市区町村`'); while ($row = mysql_fetch_object($sql)) { echo '<table border="1" cellspacing=0 cellpadding=5 width=780>'; printf('<td>%s(%d)</td>', $row->市区町村, $row->count); echo '</table>'; } イメージする結果の在り姿は、指定した1行の幅の中に均等な間隔で4つ程の結果を表示して、5つ目以降は順次必要に応じて改行されていくというようなものです。 ↓こんなイメージです。 ○○市(12) ■○市(4)  ××市(8)  ○×市(7) ×○市(8)  ■▼市(6)  ■■市(88) ■○市(9) ですが、現状では結果が1つづつ改行されてしまい、どうにも格好がつかない状態になってしまっています。 ↓こんなイメージになってしまっています。 ○○市(12)  ■○市(4)   ××市(8)   ○×市(7) 皆様ご協力くださいますようお願いいたします。

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

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

  • ベストアンサー
  • thezen5
  • ベストアンサー率84% (27/32)
回答No.1

printf以外はwhileの外に出す $sql = mysql_query('SELECT `市区町村`, COUNT(`市区町村`) AS `count` FROM `estate` GROUP BY `市区町村`'); echo '<table border="1" cellspacing=0 cellpadding=5 width=780><tr>'; $i=1; while ($row = mysql_fetch_object($sql)) { printf('<td>%s(%d)</td>', $row->市区町村, $row->count); if($i==4){$i=1; echo "\n</tr>\n<tr>\n"; }else{ $i++; } } echo '</tr></table>';

humhum55hiki
質問者

お礼

できました! いつもご協力頂きありがとうございます! 重ね重ねお礼を申し上げます。

関連するQ&A

  • printfの中でラジオボタンを使いたい

    日ごろからお答えくださっている皆様ありがとうございます。 現在PHPを使ってHP作成中の初心者です。 初歩的な問題なのかもしれませんがこの種の質問で参考になりそうなものはネットでは調べられなかったので質問させていただきます。 以下のような形でラジオボタンを使おうとしているのですがエラーが出てしまいます。 $sql = mysql_query('SELECT `市区町村`, COUNT(`市区町村`) AS `count` FROM `estate` GROUP BY `市区町村`'); while ($row = mysql_fetch_object($sql)) { echo '<table border="1" cellspacing=0 cellpadding=5 width=780>'; printf('<input type="radio" name=%s value=%s/> (%d)', $row->市区町村, $row->count); echo '</table>'; } エラーメッセージは以下の通りで、48行目はprintfを使用している行です。 Warning: printf() [function.printf]: Too few arguments in C:\xampp\htdocs\Home_Search\src\search\search1.php on line 48 以上、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • データベース表示結果のデザイン

    データベースの全件検索結果の表示のデザインをしたいと考えているのですがうまくいきません。 PHPのソースは以下の通りです。 <?php mysql_connect('localhost','root','******'); mysql_select_db('AAAAAAAA'); $sql= "select * from ??????"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "<p>該当データがありません。</p>"; } else { while($row = mysql_fetch_array($result)){ echo "<p>"; echo $row["renban"]; echo " "; echo $row["tourokubi"]; echo " <br />"; echo $row["title"]; echo " "; echo $row["A"]; echo "-"; echo $row["B"]; echo " "; echo $row["C"]; echo " "; echo $row["D"]; echo " "; echo $row["E"]; echo " "; echo $row["F"]; echo " "; echo $row["G"]; echo "</p><hr />"; } } ?> この検索結果の1つ1つのデータをテーブルで囲んでechoで呼び出したA~Gまでの項目を<tr>や<td>で区切って表のような形にしたいのですがどのようにすればいいでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHP+MySQLでの検索結果の横並び表示について

    PHP+MySQLでデータベース作成をはじめた初心者です。 検索結果を横並びにしたかったので他ページを参考にやってみました。 横に並べられるようにはなったのですが、検索結果を横並びで、かつ、4こならべると次の行にうつる方法はどうすればいいのでしょうか? データひとつを■とすると ■■■<改行> ■■■<改行> ■■■<改行> といった感じです。 よろしくお願いいたします。 <?php $host = "localhost"; if (!$conn = mysql_connect($host, "ユーザー", "パス")){ die("MySQL接続エラー.<br />"); } mysql_select_db("データベース名", $conn); $sql = "SELECT * FROM 01_table WHERE on ='1'"; $res = mysql_query($sql,$conn); print("<tr>"); while($row = mysql_fetch_array($res)) { print("<td>".$row["■"]); print("</td>"); } mysql_free_result($res); ?> print("</tr>");

    • ベストアンサー
    • PHP
  • 検索結果を出すためには?(phpとmysql利用で)

    ある画像を押したら、検索結果が出る方法がわかりません。 たとえば、「A」「B」「C」の画像を作成しておき、「A」の画像を押したときにMYSQLで作成したデータベースの中から「A」だけ出す方法がわかりません。(画像からリンクする方法はわかります) 「A」という画像を押すと「akekka.php」を出すように作成したのですが、できません。知恵を貸してください。 <?php $sql= "select * from jyusyo where fuk = '愛媛県'"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "<p>該当データがありません。</p>\n"; exit; } else { echo "<table border=\"1\">\n"; echo "<tr>\n"; echo "<th>詳細</th>\n"; echo "<th>登録日<br></th>\n"; echo "<th>府県名<br></th>\n"; echo "<th>住所<br></th>\n"; echo "<th>名前</th>\n"; echo "</tr>\n"; while($row = mysql_fetch_array($result)){ $id = $row["id"]; echo "<tr>"; echo "<a href=\"meisai.php?id=$id\">",$id,"</a>\n"; echo "</td><td>"; echo $row["sho"]; echo "</td><td>"; echo $row["day"]; echo "</td><td>"; echo $row["fuk"]; echo "</td><td>"; echo $row["jyu"]; echo "</td><td>"; echo $row["nam"]; echo "</td></tr>"; } echo "</table>\n"; } ?>

  • 検索結果の画像が表示されない

    <?php $con=mysql_connect(""); if(!$con){ echo ("MYSQLに接続失敗"); exit(); } else { echo ("#1=$con"); } mysql_query("SET NAMES eucjpms") or die("can not SET NAMES eucjpms"); $db=mysql_select_db(""); if(!$db) { echo ("DB選択失敗"); } else{ echo("DB選択OK!"); } $jyusyo=$_POST["jyusyo"]; $jyusyonum=array("豊岡市","養父市","朝来市","神戸市","姫路市"); $query = "select name,jyusyo,kakaku,gazou from ocdda where"; if($jyusyo != "") { $query = $query . " jyusyo like '%$jyusyo%' "; } $result = mysql_query($query); $num_rows=mysql_num_rows($result); if($num_rows== 0){ $message="該当データ無し"; } else $message=$num_rows ."件あります"; echo $message; while($row = mysql_fetch_array($result)){ // Loop through the array of score data, formatting it as HTML echo '<table>'; $i = 0; { // Display the score data echo '<tr><td class="scoreinfo">'; echo '<span class="kakaku">' . $row['kakaku'] . '</span><br />'; echo '<strong>会社名:</strong> ' . $row['name'] . '<br />'; echo '<strong>住所:</strong> ' . $row['jyusyo'] . '</td>'; if (is_file(GW_UPLOADPATH . $row['gazou']) && filesize(GW_UPLOADPATH . $row['gazou']) > 0) { echo '<td><img src="' . GW_UPLOADPATH . $row['gazou'] . '" alt="images" /></td></tr>'; } else { echo '<td><img src="' . GW_UPLOADPATH . 'ie.jpg' . '" alt="images" /></td></tr>'; } $i++; } echo '</table>'; mysqli_close($dbc); ?> <?php } ?> こちらでは表示されないのですが、 <?php require_once('appvars.php'); require_once('connectvars.php'); // Connect to the database $dbc = mysqli_connect(""); // Retrieve the score data from MySQL $query = "SELECT * FROM "; $data = mysqli_query($dbc, $query); // Loop through the array of score data, formatting it as HTML echo '<table>'; $i = 0; while ($row = mysqli_fetch_array($data)) { // Display the score data echo '<tr><td class="scoreinfo">'; echo '<span class="kakaku">' . $row['kakaku'] . '</span><br />'; echo '<strong>会社名:</strong> ' . $row['name'] . '<br />'; echo '<strong>住所:</strong> ' . $row['jyusyo'] . '</td>'; if (is_file(GW_UPLOADPATH . $row['gazou']) && filesize(GW_UPLOADPATH . $row['gazou']) > 0) { echo '<td><img src="' . GW_UPLOADPATH . $row['gazou'] . '" alt="image" /></td></tr>'; } else { echo '<td><img src="' . GW_UPLOADPATH . 'unverified.gif' . '" alt="Unverified kakaku" /></td></tr>'; } $i++; } echo '</table>'; mysqli_close($dbc); ?> こちらでは画像が表示されます。同じ階層でほぼ同じソースなのに何故前者のコードは画像が表示されないのでしょうか?

    • 締切済み
    • 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
  • 下記のSQL文の結果をPHPページに表示したい

    質問、失礼いたします。 下記のSQL文の結果を、結果が0の場合を除き、 PHPページで表示させたいのですが、PHPテーブルの作り方がわからりません。 【$sql】 SELECT char_length(`address`)-char_length(replace(`address`,'東京','')) FROM table1 ORDER BY CHAR_LENGTH( `address` ) - CHAR_LENGTH( REPLACE( `address` , '東京', '' ) ) DESC LIMIT 0,10 $result = executeQuery($sql); $res = mysql_fetch_assoc($result); while($row = mysql_fetch_array($res)){ $table = "<table><tr><td>".row[char_length(`address`)-char_length(replace(`address`,'東京',''))]."</td></tr></table>"; } echo $table; 自分なりに上記の方法を試したのですが、違ったようで解決策がどうもみつかりません。 ご存じの方いらっしゃいましたら、なにとぞご教授お願い致します。

    • ベストアンサー
    • PHP
  • 一致しないデータも表示させたい

    初心者です。 よろしくお願いいたします。 $sql = "SELECT * FROM table WHERE s_code IN ('" .$code."')"; $res = mysql_query($sql) or die("データ抽出エラー"); echo( "<TABLE>" ); echo( "<TR>" ); echo( "<TH>コード</TH>" ); echo( "<TH>コード名称</TH>" ); echo( "<TH>情報</TH>" ); echo( "</TR>\n" ); while ($row = mysql_fetch_array($res,MYSQL_ASSOC)){ echo( "<TR>" ); echo("<td>$row[s_code]</td>"); echo("<td>$row[name_j]</td>"); echo("<td>$row[contents]</td>"); echo( "</TR>\n" ); } 上記を実行すると $codeにカンマ区切りで入っているデータと テーブル(table)のs_codeに一致するデータが表示されます。 一致しないデータがあった場合は $codeのデータのみ表の1列目に記入させることは可能でしょうか。 たとえば、 $codeが (A,B,C)で table には AとCしか ない場合 -------------------------------- コード  コード名称  情報 -------------------------------- A りんご 青森産 B  C バナナ フィリピン産 --------------------------------- 説明が下手ですみません。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 条件に合うデータの個数と平均の表示について

    検索条件に合うデータの個数のカウントと、平均を出したいと考えています ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー $sql1 = "select avg(score) from seiseki where name = '$Name' and day like '$Day*'"; $sql2 = "select count(score) from seiseki where name = '$Name' and day like '$Day*'"; $sql3 = "select count(score) from seiseki where name = '$Name' and day like '$Day*' and score = 1"; $res1 = mysql_query($sql1); $res2 = mysql_query($sql2); $res3 = mysql_query($sql3); echo "<table border='1'>"; echo "<tr>"; echo "<td>総数</td>"; echo "<td>{$res2}回</td>"; echo "</tr>"; echo "<tr>"; echo "<td>1の数</td>"; echo "<td>{$res3}回</td>"; echo "</tr>"; echo "<tr>"; echo "<td>平均</td>"; echo "<td>{$res1}</td>"; echo "</tr>"; echo "</table>"; ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 現在このようなプログラムで検索をかけているのですが、結果が 総数 Resource id #4回 1の数 Resource id #5回 平均 Resource id #3 というような結果が表示され、正しく表示することができません しようと考えています nameは完全一致で、dayは前方一致で検索しようと考えており、両方の条件にあったものを計算します nameにはローマ字で名前が、dayには20110110といったように日付が文字形式で scoreには1~4の数字がINTで記入されています 何か間違いがあるのか、また どのような記述をすればいいのか例などがあれば書いていただきたいです

    • ベストアンサー
    • PHP
  • MySQLでデータ表示

    MySQLでデータの表示を行っています 10件ずつ表示し、11件からは2ページ目に表示したいです サイトや本を見ながらデータ表示と次の10件のリンクは表示されるよう自力で頑張ったのですが 次の10件を押してもデータが変わらず1件目から10件目のままです どこが違うか教えてもらえますか。 どうコードを入力するか教えてくれたらありがたいです 一覧 ta2.phpです <html> <body> <form action = "ta2.php" method="GET"> <input type="hidden" name="page" value="0"> </form> <?php //データベースに接続 if (!$con = mysql_connect("localhost", "root", "admin")) { echo "接続エラー" ; exit ; } //データベースを選択 if (!mysql_select_db("db_test", $con)) { echo "データベース選択エラー" ; exit ; } //LIMITを使ったSELECT文を作成 $sql = "select * from tbl_test" ; $sql.= " limit " . $page*10 . ", 10" ; //SQL実行 if (!$res = mysql_query($sql)) { echo "SQLエラー<BR>" ; exit ; } //検索結果表示 echo "<table border='1'> <tr> <th>番号</th> <th>氏名</th> <th>住所</th> <th>操作</th> </tr>"; while($row = mysql_fetch_array($res)) { $ID = htmlspecialchars($row['番号']); $NAME = htmlspecialchars($row['氏名']); $ADDR = htmlspecialchars($row['住所']); echo "<tr> <td>$ID</td> <td>$NAME</td> <td>$ADDR</td> <td><a href='edit.php?番号=$ID'>修正</a> <a href='delete.php?番号=$ID'>削除</a></td></tr>"; header('content-type: text/html; charset="utf-8"'); if ($_GET) { // データがGETされていたら $page = isset($_GET['page']) ? $_GET['page'] : ''; // 取得 } } $sql = "select count(*) from tbl_test " ; if (!$res = mysql_query($sql)) { echo "SQLエラー<BR>" ; exit ; } $row = mysql_fetch_array($res) ; $cnt = $row[0] ; //ページ表示 if(!$cnt > 10) echo ceil($cnt / 10), "ページの中の", $page + 1, "ページ目を表示<br>" ; //前の10件 if ($page != 0) { echo "<a href = ta2.php?page= $page>" ; echo "&lt 前の10件" ; } //次の10件 if (($page + 1)*10 < $cnt) { echo "<a href = ta2.php?page= $page>" ; echo " 次の10件 " ; } //結果セットの開放 mysql_free_result ($res) ; //データベースから切断 mysql_close($con) ; ?> </table> </body> </html>

    • ベストアンサー
    • MySQL

専門家に質問してみよう