1

最初の検索を実行した後、プロファイルの詳細のサブセットが表示されるいくつかの機能に取り組んでいます。これは正常に機能します。

次に、「フルプロファイルの表示」というリンクがあり、クリックするとプロファイル全体が返されます。

これはハードコードされたIDで機能しますが、情報のサブセットからプロファイルのIDを渡す方法がわかりませんか?

その値(プロファイルのID)が現在アクセス可能であるかどうかは実際にはわかりません。それが理にかなっている場合は、それを渡すことができますか?

プロファイルの詳細のサブセットに、渡したいIDを含む非表示のフィールドを含めましたが、これを使用できるかどうかわかりませんか?

関連するコードは以下に掲載されています。

SUBSET-PROFILE.HTML.PHP

    <div id="Profile" class="Profile"  >

    <h1 class="margin-top">Search Results</h1>

    <?php if (isset($results)): ?>

    <?php foreach ($results as $result): ?>

    <ol class="coach-display">
    <li class="left image">
      <img src="<?php if (!empty($result['filename'])) echo('?action=view&id=' . $result['id']); else echo "/img/profile_coming_soon.jpg" ?>" width="80" height="80" />
      </li>
    <li class="listleft">First Name:</li>
    <li><?php htmlout($result['firstname']); ?></li>

    <li class="listleft">Last Name:</li>
    <li><?php htmlout($result['lastname']); ?></li>

    <li class="listleft">Constituency:</li>
    <li><?php htmlout($result['constituency']); ?></li>

    <li class="listleft">Qualifications:</li>
    <li><?php htmlout($result['qualifications']); ?></li>

    </ol>

    <input type="hidden" name="id" value="<?php htmlout($result['id']); ?>">

    <a href="?more">View full profile</a>

    <?php endforeach; ?>

    <?php endif; ?>

    </div>

INDEX.PHP

    if (isset($_GET['more']))
    {
        try
        {

        $sql = "SELECT id, firstname, lastname, area, county, constituency, qualifications, bio, monday, tuesday, wednesday, thursday, friday, saturday, sunday,
                filename, mimetype
                FROM pt
                WHERE id = 6";
        $s = $pdo->query($sql);
        }
        catch (PDOException $e)
        {
            $error = 'Error fetching pt details.' . $e->getMessage();;
            include 'profiles.html.php';
            exit();
        }

INDEX.PHPで、値を6にハードコーディングしたことがわかります。これは、以前に表示されていたプロファイルサブセットに応じて動的に必要な値です。

お時間を割いていただき、ありがとうございます。

4

3 に答える 3

3

これを行うには多くの方法がありますが、最も簡単なのはおそらくURLでIDを渡すことです。

<a href="?more&id=<?php htmlout($result['id']); ?>">View full profile</a>
于 2012-09-24T12:48:28.130 に答える
1

変化する

<a href="?more">View full profile</a>

<a href="?more&id=<?php htmlout($result['id']); ?>">View full profile</a>

これで、.を使用してid値を取得できます$_GET['id']

于 2012-09-24T12:47:37.323 に答える
0

IDはGETパラメータからも取得されると思います。

if (isset($_GET['more']))
    {
        try
        {

        $sql = "SELECT id, firstname, lastname, area, county, constituency, qualifications, bio, monday, tuesday, wednesday, thursday, friday, saturday, sunday,
                filename, mimetype
                FROM pt
                WHERE id = ?";
        $sth = $pdo->prepare( $sql );
        $sth->execute(array( $_GET['id'] ));
        $s= $sth->fetchAll();
        }

さまざまなPDO関数を使用していることに気づきました。SQLインジェクション(または適切なフィルタリング)を回避するには、変数バインディングが必要です。

詳細については、http://php.net/manual/en/pdo.prepare.phpをご覧ください。

ps。入力を抽象化してみてください。ロジックで$_GET、$ _ POST、$_COOKIEなどを直接使用しないでください。

于 2012-09-24T12:52:22.780 に答える