0

パート1は以下です。パート 2 は次のとおりです。

以下に示すコードを使用しました。私は物事を動かし、すべてのエラーを取り除きました。しかし、今私のデータがありません。タイトル付きのテーブルを取得し、それらはクリック可能です (ただし、テーブルがないと、クリックによって何が起こるかを確認することはできません)。データが表示されないようにする私が間違ったことを誰かが見ることができますか?

 <html>

 function getRecords($query) {
     $con = mysql_connect("localhost", "movie", "moviepw");
     if (!$con)
     {
        die('Could not connect: ' . mysql_error());
     }

     mysql_select_db("movies", $con);

     $result = mysql_query($query);
     return $result;

     function buildQuery($sortOrder) {
             $so = mysql_real_escape_string($sortOrder);
             $so = $so ? $so : "movie_title";
             return "SELECT * FROM table1 ORDER BY " + $so;
 }

     ?>

     </thead>
      <tbody>

      <?
                $sortOrder = $_GET['sortOrder'];

           $query = buildQuery($sortOrder);

           $records = getRecords($query);
 ?>

      <?

     while($row = mysql_fetch_array($result)){ ?>
               <tr>
               <td><?= $row['movie_title']; ?></td>
               <td><?= $row['movie_rating']; ?></td>
               <td> <img src="<?= $row['movie_image'];?>"> </td>
               <td><?= $row['movie_description']; ?></td>
      </tr>

 <table border='1'>
      <thead>
             <tr>
                    <th><a href="?sortOrder=movie_title">Title</a></th>
                    <th><a href="?sortOrder=movie_rating">Rating</a></th>
                    <th>Image</th>
                    <th><a href="?sortOrder=movie_description">Description</a></th>

             </tr>

</table>
</body>

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

パート 1:

私は PHP を初めて使用し、HTML に非常に慣れていないため、これはまったくの初心者の質問です。これが進行中のコードです。ただし、これは私の完全なコードではないことに注意してください。さまざまなことを試していますが、次の構文エラーが発生します。

解析エラー: 構文エラー、予期しない '?' C:\xampp\htdocs\moviedata3.php の 30 行目

私が知る限り、「?」が必要です。

だから、ここにすべてがあります:

<html>
<body>
<table>

<?php
$con = mysql_connect("localhost", "movie", "moviepw");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("movies", $con);

$result = mysql_query("SELECT * FROM table1");

echo "<table border='1'
<tr>

?>

<?php

while($row = mysql_fetch_array($result))
  {

  ?>

   <? { ?>

   <a href="<?= mysql_query("SELECT * FROM table1 ORDER BY movie_title") ?>"><th>Title</th></a>

   <a href="<?php echo("$PHP_SELF?execute=$result = mysql_query("SELECT * FROM table1 ORDER BY movie_rating")") ?>"><th>Rating</th></a>

   <a href="<?php echo("$PHP_SELF?execute=$result = mysql_query("SELECT * FROM table1 ORDER BY movie_image")") ?>"><th>Image</th></a>

   <a href="<?php echo("$PHP_SELF?execute=$result = mysql_query("SELECT * FROM table1 ORDER BY movie_description")") ?>"><th>Description</th></a>

  </tr>";

<? } ?>

  <tr>
 <td><?= $row['movie_title']; ?></td>
 <td><?= $row['movie_rating']; ?></td>
 <td> <img src="<?= $row['movie_image'];?>"> </td>
 <td><?= $row['movie_description']; ?></td>
 </tr>

 <?
  }
echo "</table>";

mysql_close($con);
?>

    </td></tr>
</table>
</body>
</html>

行 30 は次のように表示されます。

<a href="<?= mysql_query("SELECT * FROM table1 ORDER BY movie_title") ?>"><th>Title</th></a>

本当にありがとう!!!

4

2 に答える 2

2

どこで何を実行するかということに注意を払っていないようです。DBのクエリはサーバー側のコードであり、クリックボタン(あなたの場合は列ヘッダー)はクライアント側です。

したがって、切り取ったものを次のように書き直してみてください。

 <?php

     function buildQuery($sortOrder) {
        $so = mysql_real_escape_string($sortOrder);
        $so = $so ? $so : "movie_title";
        return "SELECT * FROM table1 ORDER BY " + $so;
     }

     function getRecords($query) {
         $con = mysql_connect("localhost", "movie", "moviepw");
         if (!$con)
         {
            die('Could not connect: ' . mysql_error());
         }

         mysql_select_db("movies", $con);

         $result = mysql_query($query);
         return $result;
     }

     $sortOrder = $_GET['sortOrder'];

     $query = buildQuery($sortOrder);

     $records = getRecords($query);
     ?>
     <table border='1'>
          <thead>
                 <tr>
                        <th><a href="?sortOrder=movie_title">Title</a></th>
                        <th><a href="?sortOrder=movie_rating">Rating</a></th>
                        <th>Image</th>
                        <th><a href="?sortOrder=movie_description">Description</a></th>

                 </tr>
          </thead>
          <tbody>
    <?php

     while($row = mysql_fetch_array($result)){ ?>
          <tr>
          <td><?= $row['movie_title']; ?></td>
          <td><?= $row['movie_rating']; ?></td>
          <td> <img src="<?= $row['movie_image'];?>"> </td>
          <td><?= $row['movie_description']; ?></td>
          </tr>

    <? } ?>
          </tbody>
    </table>
于 2011-10-10T19:55:30.613 に答える
2

あなたの問題は、次の行から始まっていると思います。

echo "<table border='1'

二重引用符を使用して文字列を開いていますが、次のようになるまで一致する二重引用符が見つかりません。

<a href="<?

" を文字列の末尾として、次に < を演算子として使用しています。次の文字は予期しない ? です。

引用符が正しくなるようにコードを修正すると、問題は解決するはずです。

ただし、コードには他にも多くの問題があります。たとえば、ループの<tr>外側を開いていますが、ループの内側で閉じています。ループ内の呼び出しについてはmysql_query()...どこからコードをコピーしたのかわかりませんが、私には明らかに危険に見えます。最初はエコーアウトする文字列ではなく、リソースを返します。$result変数は二重引用符で囲まれており、補間されることを意味します。他の誰かが言ったように、それは混乱であり、ソリューションの基礎となる別の例を見つけたほうがよいでしょう.

于 2011-10-10T19:55:57.957 に答える