0

ニューステーブルがあり、ニュースの種類に応じて異なるステートメントをエコーアウトしたいと思います。タイプは、テーブルの「type」という名前のフィールドに格納されます。

データを配列に返すために使用している基本的なコードは次のとおりです

$query = mysql_query("SELECT * FROM news");
while ($row = mysql_fetch_assoc($result)) {
} 

したがって、現時点では、テーブル'news'からすべての情報を返していますが、行内のタイプに応じて異なるステートメントをエコーアウトしたいと思います。

この表の目的は、ユーザーが送信したニュースを、タイプフィールドに基づいて事前定義されたさまざまなテキストで表示することです。

つまり、行に「release_date」タイプが含まれている場合は「name」がリリースされます」。行に「new_video」タイプが含まれている場合は「name」に新しいビデオがあります。また、表に含まれている提出日までに注文する必要があります。

すべてのニュースを送信日ごとに整理する必要があるため、個別のクエリでこれを実行したくありません。これを行う最良の方法は、ifステートメントを使用することでしょうか?現時点ではアイデアに少し迷っています。アドバイスをいただければ幸いです。これが理にかなっていることを願っています

4

2 に答える 2

1

結果を日付順に並べ替えるには、次のようにクエリを拡張できます

SELECT * FROM news ORDER BY `submission_date` DESC //or "ASC" for opposite order

列名を使用します。さまざまな結果を処理するには

while ($row = mysql_fetch_assoc($result)) { //for each returned row
  switch($row['type']){ //your column name for field
    case 'release_date':
      echo $row['name']." will be released on";
      break;
    case 'new_video':
      echo $row['name']." has a new video";
      break;
      //other cases
    default: //if there should be a process for "anything else"-cases
      //code
      break;
   }
}

編集:

この時点での「エコー」はあなたを幸せにしません。結果をhtmlで出力したいと思います。次に、ループを開始する前に変数を定義し、ループ内に入力する必要があります。このような:

$html = ''; //set variable
while ($row = mysql_fetch_assoc($result)) { //for each returned row
  switch($row['type']){ //your column name for field
    case 'release_date':
      $html .= "<p>".$row['name']." will be released on</p>";
      break;
    case 'new_video':
      $html .= "<p>".$row['name']." has a new video</p>";
      break;
      //other cases
    default: //if there should be a process for "anything else"-cases
      //code
      break;
   }
}
echo $html; 
/*$html is now filled with some paragraphs.
You should echo it inside a complete html-structure 
with doctype and inside the body-tag.
The position of the echo inside you script depends on the rest of your code. */

ユーザー定義のコンテンツを挿入しているので、入力が

  1. 逃げた
  2. トリミングされているか、スイッチケースが機能しない可能性があります

そして、eggyalのコメントに注意してください。私はあなたのコードを取得しました。mysql_queryは使用しないでください。

于 2012-07-18T21:18:40.370 に答える
0

これは、PHPコードで行うことができます。SQLクエリでこれを実行する場合は、次のように使用できますCASE

SELECT CONCAT('\'', name, '\' ',
              CASE type
              WHEN 'release_date' THEN 'will be released on'
              WHEN 'new_video' THEN 'has a new video'
              ELSE 'did something unexpected'
              END)
FROM news
ORDER BY submission_date DESC

CONCATの使用は単なる例であることに注意してください。PHPでテキストフラグメントを組み合わせることができます。CASEまたは、外側にaを付け、各句に異なるCONCAT式を含めることもできます。THENたとえば、常に引用符で囲まれた名前が必要かどうかなど、正確に何が必要かによって異なります。

于 2012-07-18T21:36:41.943 に答える