PHP+MySQLでの検索結果の横並び表示について

このQ&Aのポイント
  • PHP+MySQLでデータベース作成をはじめた初心者です。検索結果を横並びにする方法を知りたいです。
  • 検索結果を横並びにできる方法を教えてください。
  • PHP+MySQLで検索結果を横に並べる方法を教えてください。
回答を見る
  • ベストアンサー

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
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

>どう入れればいいでしょうか?  あ、すみません。テーブルにしていましたね(汗)。横も4列だったかな。   <?php   $colmax = 4;   $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);   $colct = 0;   while($row = mysql_fetch_array($res)) {     if ($colct >= $colmax) {        print "</tr>\n";        $colct = 0;     }     $colct++;   if ($colct == 1) { print "<tr>"; }   print "<td>" . $row["■"] ."</td>";   }   mysql_free_result($res);   while ($colct <= $colmax) {     print "<td>&nbsp;</td>";     $colct++;     }   print "</tr>\n";   ?>  動かしてはいないので、typoなどがあったら適宜修正してください。

BORING
質問者

お礼

できました!感激です! ありがとうございます!

その他の回答 (1)

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

自分で「列カウンタ」をカウントアップすればいいのでは?   $colct = 0;   while($row = mysql_fetch_array($res)) {     if ($colct >= 3) {       print "<br />\n";       $colct = 0;     }     $colct++;       :       :  $colct番目の列の出力       :   }

BORING
質問者

補足

ありがとうございます! でもちょっとうまくいきませんでした>< 上のソースにshimixさんの書いてくれたソースをどう入れればいいでしょうか? すいません><

関連するQ&A

  • PHP+MySQL で検索結果を横並びに表示させたい

    PHPとMySQLを独学で勉強し始めたところなのですが 下記の様に書いてみたところ 結果(画像)の表示が縦並びになってしまいます。 どうにか横並びに表示できないでしょうか? <html> <head><title>タイトル</title></head> <body> <table> <?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); while($row = mysql_fetch_array($res)) { print("<tr>"); print("<td>".$row["img"]); print("</td>"); print("</tr>"); } mysql_free_result($res); ?> </table> </body> </html> ※01_tableのonには「0」か「1」を入れてあり  imgには 「<a href="リンク先アド"><img src="画像のアド"></a>」  を入れてあります。 基礎が無く、勘だけで作ってますので根本的に間違ってるかもしれないのですが よろしくお願いします。

    • ベストアンサー
    • MySQL
  • PHPとMysqlによる正規表現について

    データベースに登録した情報から検索するコードを書いたのですが、どう入力してもデータベースに登録した情報がすべて出てきてしまいます。 入力フォームに検索した条件だけ表示させたいです。 htmlの入力フォームを作り、そこから$_POSTでPHPに渡しました。 コードは以下のとおりです。 PHPの本を読んで見よう見まねで書いたのですが、さっぱりです。 ご教授よろしくお願いします。 <html> <head><title>検索php</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <?php $host="localhost"; if(!$conn=mysql_connect($host,"usr","passwrd")){ die("データベース認証エラー.<br />"); } mysql_select_db("usr",$conn); $condition=""; if(isset($_POST["name"])&&($_POST["name"]!="")){ $name=mysql_real_escape_string($_POST["name"]); $name=str_replace("%","\%",$name); $condition="WHERE table_a LIKE \"%".$name."%\""; } if(isset($_POST["phone"])&&($_POST['phone']!="")){ $phone=mysql_real_escape_string($_POST["phone"]); $phone=str_replace("%","\%",$phone); if($condition==""){ $condition="WHERE table_b LIKE \"%".$phone."%\""; }else{ $condition.="AND tabe_b LIKE \"%".$phone."%\""; } } $sql="SELECT * FROM table ".$condigition."ORDER BY table_id LIMIT 0,30"; $res=mysql_query($sql,$conn); print("<table border=\"1\">"); print("<tr><td>会社名</td><td>電話番号</td></tr>"); while($row=mysql_fetch_array($res)){ print("<tr>"); print("<td>".$row['table_a']."</td>"); print("<td>".$row['table_b']."</td>"); print("</tr>\n"); } print("</table>"); mysql_free_result($res); ?> </body> </html>

    • ベストアンサー
    • PHP
  • phpでmysqlを検索、計算

    PHPでmysql内のデータを、条件で絞込み、 一致するものの平均と個数を画面で表示したいのですが、 エラーが表示され、検索結果を表示することができません 現在書いているコードは以下になります ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー <html> <head> <title>検索結果</title> </head> <body> <?php ~~省略~~ $Name = $_POST['namae']; $Day = $_POST['hiduke']; $conn = mysql_connect($url,$user,$pass); $sdb = mysql_select_db($db,$conn); $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);  print "<table border=1 cellpadding=0 cellspacing=0>\n";  print "<tr>\n";  print "<td>合計</td>";  print "<td align=right>{$sql2}回</td>;"  print "</tr>\n";    print "<tr>"; print "<td>1</td>";  print "<td align=right>{$sql3}回</td>;"  print "</tr>\n";    print "<tr>\n";  print "<td>平均</td>";  print "<td align=right>{$sql1}</td>";  print "</tr>\n";  print "</table>\n"; mysql_free_result($res,&res2,&res3); mysql_close($conn); ?> </body> </html> ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー seisekiテーブルにはnameとdayとscoreがあり、 nameはyamadatarouのようにローマ字で dayは20110110のように数字で scoreには1~4の数字が入っています nameは完全一致、dayは前方一致で sql1では数字の平均、sql2では合計回数、sql3では1の回数をカウントしています 30行目「$sql1 = select avg(score) ~ ~ ~」のあたりに記述エラーがあると表示されるので、 おそらく検索方法の文法が間違っているのですが、 色々調べてみても記述の仕方がこの方法以外見つかりません 何か記述方法の間違いや別の記述方法がありましたら、ご教授お願いいたします また、現在エラーは表示されていませんが、 print近辺も見ようみ真似での記述ですので、間違いなどがありましたら ご教授いただけないでしょうか

    • ベストアンサー
    • PHP
  • PHPとMySQLの文字化けの対応法は?

    OSはWinXPで、MySQL+PHPのアプリを作成しているところです。 <html> <head><title>配列データの取得</title></head> <body> <table border="1"> <tr><td>題名</td><td>著者</td><td>出版社</td></tr> <?php $host = "localhost"; if (!$conn = mysql_connect($host, "user", "pass")){ die("MySQL接続エラー.<br />"); } mysql_select_db("kisop", $conn); $sql = "SELECT * FROM book_table LIMIT 10"; $res = mysql_query($sql,$conn); while($row = mysql_fetch_array($res)) { print("<tr>"); print("<td>".$row["btitle"]."</td>"); print("<td>".$row["bauth"]."</td>"); print("<td>".$row["bpub"]."</td>"); print("</tr>\n"); } mysql_free_result($res); ?> </table> </body> </html> と、こんな演習をしているのですが、ブラウザに表示させると文字化けしました。 HTML文はEUC、MySQLのデータは、シフトJISで入っていたようです。 そのため、「題名」「著者」などの見出しと、取り出したデータを同時に文字化けさせずに、表示できない 状態です(泣)。 MySQLからデータを取り出すときに、mb_convert_encodingで文字コードを変換してやれば 化けないでしょうが、出力しようとするデータのすべてを変換しなければなりません。 プログラマーさんたちは、文字化けの現象について、どう対応されているのでしょうか? いちいち、mb_convert_encodingで、変換しているものなのでしょうか? 定石のようなものを知りたいところです。 たとえば、HTML文は文字コード○○を使うものだ、設定ファイルを書き換えておく、などなど。 よろしくおねがいします。

    • ベストアンサー
    • 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+MySqlでの検索結果について

    以下のソースで検索結果が表示されるのですが、検索結果が多数ある場合、例えば10件ずつ表示して「次へ」「前へ戻る」「最終頁」等のリンクを貼る方法が分かりません。 また、検索結果から並べ替え(データの更新日時等から)も出来ればと思い質問させていただきました。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "ttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>検索</title> </head> <body> <?php # 入力値に不正なデータがないかなどをチェック。 function checkInput($var) { if (is_array($var)) { return array_map('checkInput', $var); } else { if (get_magic_quotes_gpc()) { // magic_quotes_gpc対策 $var = stripslashes($var); } if (preg_match('/\0/', $var)) { // NULLバイト攻撃対策 die('不正な入力です。'); } if (!mb_check_encoding($var, 'UTF-8')) { // 文字エンコードの確認 die('不正な入力です。'); } return $var; } } function h($string) { // HTMLでのエスケープ処理をする return htmlspecialchars($string, ENT_QUOTES); } # POSTされたデータをチェック。 $_POST = checkInput($_POST); // データベース設定 $dbServer = 'localhost'; $dbUser = 'user'; $dbPass = 'password'; $dbName = 'sample'; $flag = TRUE; // MySQLデータベースに接続 if (!$link = mysql_connect($dbServer, $dbUser, $dbPass)) { $flag = FALSE; } // データベース選択 else if (!mysql_select_db($dbName, $link)) { $flag = FALSE; } // 文字エンコードの指定(PHP5以降かつMySQL 4.1以降) else if (!mysql_set_charset('utf8', $link)) { $flag = FALSE; } # $flagの値の判定 if ($flag === FALSE) { echo 'データベースエラー'; } else if (isset($_POST['data'])) { $data = $_POST['data']; $dataList = explode(' ', mb_convert_kana($data, 's')); $sql = 'SELECT * FROM search WHERE 1'; foreach ($dataList as $word) { if ($word == '') continue; $sql .= sprintf(" AND data LIKE '%s'", '%' . mysql_real_escape_string($word) . '%'); } echo '<p>SQL: ' . h($sql) . '</p>'; $query = mysql_query($sql, $link); if (!$query) { echo 'データベースエラー'; } else if (mysql_num_rows($query) == 0) { echo '<p>「' . h($data) . '」はデータベースに登録がありません。</p>'; } else { echo '<p>「' . h($data) . '」はデータベースに登録がありました。</p>'; echo '<p>検索結果</p>'; echo '<table border="1">'; echo ' <tr>'; echo ' <th>ID</th>'; echo ' <th>データ</th>'; echo ' </tr>'; while ($row = mysql_fetch_array($query, MYSQL_ASSOC)) { echo ' <tr>'; echo ' <td>' . h($row['id']) . '</td>'; echo ' <td>' . h($row['data']) . '</td>'; echo ' </tr>'; } echo '</table>'; } $sql = 'SELECT * FROM search'; $query = mysql_query($sql, $link); if (!$query) { echo 'データベースエラー'; } else { echo '<p>データベースの内容一覧</p>'; echo '<table border="1">'; echo ' <tr>'; echo ' <th>ID</th>'; echo ' <th>データ</th>'; echo ' </tr>'; while ($row = mysql_fetch_array($query, MYSQL_ASSOC)) { echo ' <tr>'; echo ' <td>' . h($row['id']) . '</td>'; echo ' <td>' . h($row['data']) . '</td>'; echo ' </tr>'; } echo '</table>'; } } ?> <form method="post" action=""> <p>検索ワードを入力して下さい</p> <input type="text" name="data" /> <input type="submit" value="検索する" /> </form> </body> </html> このソースのどの部分に記述してよいのか等も含めてご伝授頂きたく思います。 宜しくお願いします。

    • ベストアンサー
    • MySQL
  • php + mysql でフォーム作成時のエラー

    データベースから取り出したデータをラジオボタンで選択し、それをデータベース(別のテーブル)に追加させる機能を作りたいです。 非常に初歩的なことだとは思うのですがご教授ください。 MySQL 4.0.27 PHP 5.2.11 <FORM ACTION="cone3.php" METHOD="post"> <?php $srv = ""; // サーバー名 $id = ""; // ユーザーID $passwd = "; // パスワード $dbn = ""; // データベース名 $sql = "SELECT code, lname, lecturer, kind, gradetype FROM Lecture"; // SQL文 // データベースに接続する $db = mysql_connect($srv,$id,$passwd); mysql_select_db($dbn,$db); $rs = mysql_query($sql,$db); //--- テーブルのレイアウト --- 開始 -----------------------> print("<TABLE><TR>"); print("<TR><th> </th><th>講義名</th><th>教員</th><th>科目区分</th><th>配当学年</th></tr>"); while($row = mysql_fetch_array($rs)) { print '<tr><td><input type="radio" name="regist" value="$row['code']"></td>'; print '<td>' . $row['lname'] . '</td>'; print '<td>' . $row['lecturer'] . '</td>'; print '<td>' . $row['kind'] . '</td>'; print '<td>' . $row['gradetype'] . '</td>'; print '</tr>'; print ("</TR>"); } print("</TABLE>"); print_r($_POST); echo "<br />\n"; mysql_free_result($rs); mysql_close($db); //--- 終了 ---> ?> <input type="submit" name="submit" value="送信"> </form> 以上のようなソースでラジオボタンで配列の$row[code]の値を送りたいんですがうまくいきません。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPとMysqlのページ分割表示について

    以前こちらで質問させて頂きまして htmlの検索フォームから入力した情報をデータベースから引っ張ってきて 表示するまでは出来たのですが、表示制限を10個にして、次のページ、前のページと移動させるようなシステムにしたいのですが、うまくいきません(エラーが出てしまいます) どうか、お力をお貸し願えないでしょうか。 search.html <html> <head><title>検索</title></head> <body> <form action="/search/"method="post"> /*page_numを入れた*/ <input type="hidden" name="page_num" value="0"> <li>会社名</li> <li><input type="text"name="name"></li> <li>電話番号</li> <input type="text"name="phone" maxlength="11"> <input type="submit" name="submit" value="検索"> </body> </html> index.php(データベースから情報を引っ張り出す) <?php $host="localhost"; if(!$conn=mysql_connect($host,"usr","passwd")){ die("データベース認証エラー.<br />"); } mysql_select_db("usr",$conn); $condition=""; if(isset($_POST["name"])&&($_POST["name"]!="")){ $name=mysql_real_escape_string($_POST["name"]); $name=str_replace("%","\%",$name); $condition="WHERE name LIKE \"%".$name."%\""; } if(isset($_POST["phone"])&&($_POST['phone']!="")){ $phone=mysql_real_escape_string($_POST["phone"]); $phone=str_replace("%","\%",$phone); if($condition==""){ $condition="WHERE phone LIKE \"%".$phone."%\""; }else{ $condition.="AND phone LIKE \"%".$phone."%\""; } } $tmp=$page_num*10; $sql="SELECT * FROM table".$condition."ORDER BY id limit".$tmp.",10"; while($row=mysql_fetch_array($res)){ print("<table border=\"1\">"); print("<tr><td>会社名</td><td>電話番号</td></tr>"); print("<tr>"); print("<td>".$row['name']."</td>"); print("<td>".$row['phone']."</td>"); print("</tr>"); print("</table>"); } $cnt=$row[0]; //ページ表示 if(!$cnt>10){ echo ceil($cnt/10), "ページの中の",$page_num+1,"ページ目を表示<br>"; } //前の10件 if ($page_num!=0){ echo "<a href=index.php?name=",$name,".$page_num -1.">"; echo "&lt</a>; echo "前の10件"; } //次の10件 if (($page_num+1)*10<$cnt){ echo "<a href=index.php?name=",$name,".$page_num +1.">"; echo "次の10件"; echo "&g</a>t"; } mysql_free_result($res); //データベースから切断 mysql_close($conn); ?> ちなみにエラーが出ている行はここの //前の10件 if ($page_num!=0){ echo "<a href=index.php?name=",$name,".$page_num -1.">"; echo "&lt</a>; echo "前の10件"; } >>echo "&lt</a>; この部分がエラーになっています。

    • ベストアンサー
    • PHP
  • PHP+MYSQLで3×5のテーブル表示について

    こんにちは。 PHP+MYSQLでページング処理で画像を出力の勉強をしています。 さっそく質問です。PHP+MYSQLを使って 元テーブルがID番号、名前、性別だとして、 1名分の表示は上記フィールドのデータを縦に3行作った後、 横の列に移るという作業をして、結果縦横に3×5並べる にはどう書けば良いいでしょうか? プログラムのイメージは以下になります。 めくっていく頁のはじめの行($i=$startline)から表示する時、 表示を1列×3行のまとまり□を縦横に3×5出力する場合、 mysqlに接続した後、 $rs = mysql_db_query($db,$sql); while($row=mysql_fetch_array($rs) ){ print("<table><tr>"); print("<td>"); print("<td>"); for($i=0;$i<4;$i++){ print("<tr>"); print("<td>"); print($row[$i]); print("</tr>"); print("</td>"); print("</td>"); } print("</td>"); print("</tr></table>"); こういう形の後、ページングの$pageのurlを作って、$_get[]に 飛ばすというイメージです。 よろしくお願いします。 以上

    • 締切済み
    • PHP
  • mysql>PHPにデータ表示、10件ごとにページ分割

    はじめまして、PHP勉強中の初心者です。。 MYSQLから取り出したデータを件数でページ分割したいのですが、 うまくきません。。 環境:eclipse3.5、mysql5.0、php5.0、xampp (phpで、sql接続、select * from でデータは表示は確認できてます)。。 ソースは↓です。。(初心者なもので不備がればすみません)。。 eclipse上では if (($page_num+1)*10<$cnt) {}でエラーで表示されます。。 どなたかご存知の方いましたら、教えていただけないでしょうか? <!--kensaku.html--> <html> <body> <form action ="kensaku.php" method="post">    名前:<input type="text" name="nm">    年齢:<input type="hidden" name="page_num" value="0">    <input type="submit" name="exec" value="検索"> </form> </body> </html> //kensaku.php ソース <html> <body> <? $nm=$_POST['nm']; $page_num=$_POST['page_num']; //データベースに接続 if (!$conn =mysql_connect("","user","PASS")) { echo "接続エラー" ; exit ; } //データベースを選択 if (!mysql_select_db("table", $con)) { echo "データベース選択エラー" ; exit ; } //LIMITを使ったSELECT文を作成 $sql = "select id,name from table " ; $sql.= "where name like '%$nm% ' order by id " ; $sql.="limit" . $page_num * 10 . ", 10" ; //SQL実行 if (!$res = mysql_query($sql)) { echo "SQLエラー<BR>" ; exit ; } //検索結果表示 echo "<table border=1>" ; echo "<tr><td>id</td><td>name</td></tr>" ; while($row = mysql_fetch_array($res)){ echo "<tr>" ; echo "<td>" . $row["id"] . "</td>" ; echo "<td>" . $row["name"] . "</td>" ; echo "</tr>" ; } echo "</table>" ; //検索条件に該当する全データの件数取得 $sql = "select count(*) from member " ; $sql.="where name like '% $nm % ' order by id " ; 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_num + 1, "ページ目を表示<br>"; //前の10件 if ($page_num !=0) { echo "<a href = kensaku.php?nm=".$nm.",".$page_num -1..">"; echo "&lt 前の10件"; } //次の10件.--ここからエラー行ですが、、解決策がわかりません。。 if (($page_num+1)*10<$cnt) { echo "<a href = kensaku.php?nm=".$nm.",".$page_num +1..">"; echo " 次の10件 &g</a>t"; } //結果セットの開放 mysql_free_result ($res) ; //データベースから切断 mysql_close($con) ; ?> </body> </html> すみませんが、ご存知の方いましたら、よろしくお願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう