0

ユーザーがテキストフィールドにデータを入力し、「アーティスト別」または「タイトル別」ラジオボタンを選択して送信をクリックできる曲データベース (mysql) を作成しました。これはすべてうまくいきます。:)

ただし、上記のクエリをバイパスし、データベースに追加されたすべての曲を 1 年の時間で単純に一覧表示する別の送信ボタンを追加したいと思います。

必要なクエリは次のとおりだと思います。

select * from dt_tb where `dt` >= DATE_SUB(CURDATE(), INTERVAL 1 YEAR)

しかし、過去 1 年以内に曲のクエリを実行するように PHP をコーディングする方法がわかりません。

ここに私が持っている2つのフォームがあります:

<p>
<form name="form" method="get" action="">
    Search for: <input type="text" name="q" />
    <input type="radio" name="field" value="title" <?=$checkTitle?> checked> Title
    <input type="radio" name="field" value="artist" <?=$checkArtist?> > Artist
  <input type="submit" name="Submit" value="Search" />
</form></p>
<form name="form" method="post" action="">
    <br />
    <input type="submit" name="Newsongs" value="New Releases" />
</form></p>

そして、これが最初のクエリの現在の動作中のphpです。

<?php
    $delimiter = "\t";
    $newline = "\n";

  $var = @$_GET['q'] ;
  $field = @$_GET['field'];
  $var = htmlentities($var);
  $trimmed = trim($var); //trim whitespace from the stored variable
  $search_words = explode(' ', $var);


if ($var != "") {

// rows to return
$limit=100; 

// check for an empty string and display a message.
if ($trimmed == "")
  {
  echo "<p>Please enter a search...</p>";
  exit;
  }

// check for a search parameter
if (!isset($var))
  {
  echo "<p>We dont seem to have a search parameter!</p>";
  exit;
  }

//connect to your database 
mysql_connect("DBLocation","DatabaseName","PASSWORD"); //(host, username, password)

//specify database 
mysql_select_db("DatabaseName") or die("Unable to select database"); //select which database we're using

// Build SQL Query  


    $query = "SELECT * FROM Songs where $field like \"%$trimmed%\" order by $field "; 

 $numresults=mysql_query($query);
 $numrows=mysql_num_rows($numresults);

// If we have no results, offer a google search as an alternative

if ($numrows == 0)
  {
  echo "<h4>Results</h4>";
  echo "<p>Sorry, your search: &quot;" . $trimmed . "&quot; returned zero results</p>";

  }

// next determine if s has been passed to script, if not use 0
  if (empty($s)) {
  $s=0;
  }

// get results
  $query .= " limit $s,$limit";
  $result = mysql_query($query) or die("Couldn't execute query");

// display what the person searched for
echo "<p>You searched for: &quot;" . $var . "&quot;</p>";

// begin to show results set
echo "<p style=\"color: #00ff00; font-size: 1.2em;\">Results</p>";
$count = 1 + $s ;

// now you can display the results returned
  while ($row= mysql_fetch_array($result)) {
  $title = $row["title"];
  $artist = $row["artist"];

  echo "$title";
  echo " - ";
  echo "$artist";
  echo "<br />";
  echo $newline;
  $count++ ;
  }

$currPage = (($s/$limit) + 1);

//break before paging
  echo "<br />";


$a = $s + ($limit) ;
  if ($a > $numrows) { $a = $numrows ; }
  $b = $s + 1 ;
  echo "<p>Showing results $b to $a of $numrows</p>";

}  
?>
4

3 に答える 3

0

非表示フィールドを追加して、送信時に確認できます。

<input type="hidden" name="act" id="act" value="">

次に、2 番目の送信ボタンで、JavaScript を使用して値を変更します。

<input type="submit" name="Newsongs" value="New Releases" onclick="document.getElementById('act').value = 'list_all'" />

値が「list_all」の場合はそれを処理し、そうでない場合は現在の処理を行います。

if ($_POST['act'] == 'list_all') {
   // process second submit button code
} else {
   // all your current code
}
于 2013-05-08T02:58:32.840 に答える
0

送信されたフォームに NewSongs 送信ボタンがあったかどうかを確認し、それを if ステートメントで使用してクエリを実行するかどうかを確認します。

<?php
  if (!isset($_POST['NewSongs'])){
     //do the search
  } else {
     //don't do the search
  }
?>
于 2013-05-08T02:58:57.593 に答える