-1

私はまだ PHP についてさらに興味深い詳細を学んでいます。例: MySQL から MySQLi への移行。私が現在行っていることは、次のようなものを入力しようとしています: http://music.daum.net/artist/main?artist_id=2289

URLをダイシングしてページネーションから学んだことから:

  • 主要?
  • アーティストID=
  • 2289

どうやったらそんなページ作れるの?2 つのセクションが利用可能で、これを理解するときに他のセクションを作成します。

  • アーティスト情報 ( testhub-artist.phpとして入手可能)
  • アルバム ( testhub-artistalbum.phpとして入手可能)
  • ミュージックビデオ
  • 写真部

人ごとにフォルダを作るのではなく、ページを作るときに楽にしたい。

私のURLは次のようになります: "../artist/detail?artist_id=#"


アーティストページのトップです。

<?php
//Connect to ...
include "testhub-artist.php";
include "testhub-artistalbum.php";
?>

testhub-artist.php

<?php
//Connect to database
include "mysqli_connect.php";

// Construct our join query
$sql = "SELECT * FROM individuals WHERE soloID = 1";

// Create results
$result = mysqli_query($link, $sql);

// Checking if query is successful
if($result){

// Print out the contents of each row into a table 
while($row = mysqli_fetch_array($result, MYSQLI_BOTH)){

// If else states on each variable
    if ($profilepic = $row['profilepic']){
        $profilepic = $row['profilepic'];
    }else{
        $profilepic = "DamjuNoImage";
    }
    if ($engname = $row['engname']){
        $engname = $row['engname'];
    }else{
        $engname = "Unknown";
    }
    if ($korname = $row['korname']){
        $korname = $row['korname'];
    }else{
        $korname = "Unknown";
    }
    if ($engbn = $row['engbn']){
        $engbn = $row['engbn'];
    }else{
        $engbn = "Unknown";
    }
    if ($korbn = $row['korbn']){
        $korbn = $row['korbn'];
    }else{
        $korbn = "Unknown";
    }
    if ($dateofbirth = $row['dateofbirth']){
        $dateofbirth = $row['dateofbirth'];
    }else{
        $dateofbirth = "Unknown";
    }
    if ($occupation = $row['occupation']){
        $occupation = $row['occupation'];
    }else{
        $occupation = "Unknown";
    }
    if ($debut = $row['debut']){
        $debut = $row['debut'];
    }else{
        $debut = "Unknown";
    }
    if ($recordlabel = $row['recordlabel']){
        $recordlabel = $row['recordlabel'];
    }else{
        $recordlabel = "Unknown";
    }
    if ($officialsite = $row['officialsite']){
        $officialsite = $row['officialsite'];
    }else{
        $officialsite = "#";
    }
    if ($sitename = $row['sitename']){
        $sitename = $row['sitename'];
    }else{
        $sitename = "Unknown";
    }
} // End of while statement
}else{
    $engname = "Unknown";
    $korname = "Unknown";
    $engbn = "Unknown";
    $korbn = "Unknown";
    $dateofbirth = "Unknown";
    $occupation = "Unknown";
    $debut = "Unknown";
    $recordlabel = "Unknown";
    $officialsite = "#";
    $sitename = "Unknown";
} // End of If statement

// Free result set
//mysqli_free_result($result);

?>

testhub-artistalbum.php

<?php
//connect to db
include "mysqli_connect.php";

//check for a page number. If not, set it to page 1
if (!(isset($_GET['albumpage']))){
    $albumpage = 1;
}else{
    $albumpage = $_GET['albumpage'];
}

//query for record count to setup pagination
$sqli = "SELECT * FROM albums WHERE soloID = 3";
$album_data = mysqli_query($link, $sqli);
$album_rows = mysqli_num_rows($album_data); 

//number of photos per page
$album_pagerows = 4; 

//get the last page number
$last_album = ceil($album_rows/$album_pagerows); 

//make sure the page number isn't below one, or more than last page num
if ($albumpage < 1){
    $albumpage = 1;
}elseif ($albumpage > $last_album){
    $albumpage = $last_album;
}

//Set the range to display in query
$max_album = 'limit ' .($albumpage - 1) * $album_pagerows .',' .$album_pagerows;

//get all of the photos
$albumList = "";
$sqli2 = "SELECT * FROM albums WHERE soloID = 3 ORDER BY releasedate DESC $max_album";
$album_sql = mysqli_query($link, $sqli2);

//check for photos
$albumCount = mysqli_num_rows($album_sql);

if ($albumCount > 0){
    while($album_rows = mysqli_fetch_array($album_sql)){
    $albumID = $album_rows["albumID"];
    $albumpic = $album_rows["albumpic"];
    $title = $album_rows["albumTitle"];
    $releasedate = $album_rows["releasedate"];
    $page = $album_rows["page"];
    $albumList .= '
      <li class="albumthumb">
         <a href="' . $page . '" title="' . $title . '"><img class="profile" src="../albums/album_th/' . $albumpic . '.jpg" alt="' . $albumpic . '" width="120" height="120" border="0" /><p class="datatitle">' . $title . '</p></a><p class="data-releasedate">' . $releasedate . '</p>
       </li>
                  ';
    }
}else{
    $albumList = "There are no available albums at this time!";
}

//mysql_close();
?>

わかりやすく説明せず申し訳ありません。URLのようなプロフィールページを作るときにページネーションを使えるようにしたいです。URL の番号を使用して、SQL コードの ID (soloID) を変更したいと考えています。

時間を節約するのに良いアイデアですよね?MySQLi は見るたびに簡単になっています。

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


2012 年 5 月 31 日午後 5 時 44 分 (CT) に変更されました

$artist = $_GET['artist_id']

の中へ

    if(is_numeric($_GET['artist_id'])){
    $artist = $_GET['artist_id'];
}else{
    $artist = 1;
}
4

2 に答える 2

2
artist/detail?artist_id=#

ページとして使用detailし (おそらくインデックス付きの詳細フォルダーがあります)、詳細ページには$_GET[]、artist_id を取得する変数がどこかにあります。したがって、コードは次のようになります。

$artist = $_GET['artist_id']; // Filter this variable

$sql = "SELECT * FROM individuals WHERE soloID = '{$artist}'";

/**
 * Verify if the ID exists
 * Display query results, etc.
 */

したがって、URL の artist_id 変数を変更するたびに、それに応じてページが変更されます。

于 2012-05-31T17:07:31.683 に答える
1

私の2番目に好きな言語へようこそ!私はphpが大好きです。誰かがすでにあなたの質問に答えていますが、いくつか提案があります。

ユーザーが提供したデータが数学を介して渡されるため、コードは脆弱ではありませんが、変数をインライン化することは、SQL インジェクション攻撃にさらされる良い方法です。bind_param ()と準備済みステートメントを調べて、それらを使用する習慣を身につけてください。いつも。まあ、ほとんどいつも..

残念ながら、SQL では、使用する値などをバインドすることはできないため、LIMIT,ORDER BY,GROUP BYそれらを自分で処理する必要があります。ユーザーから派生したものは決して信用しないので、作業を行って確認してください。

ソート列は常に列名にする必要があります。それらを確認してください。

if ( ! in_array($sort_column,array('column1','column2','column3') ) ) $sort_column = 'column1';

制限は常に整数でなければなりません。それらをそのようにキャストします。

$safe_limit = (int) $user_limit;

配列の値を別の変数にコピーする必要はありません。それらを直接使用してください。

html に入る値をエスケープする必要があります。urlencode()htmlentities( ) を検索します。

私の IE は 1 ギガのメモリに達しているので、後で仕上げる必要があります。

于 2012-05-31T18:07:00.133 に答える