PHPでidを持たせてページ遷移したい

投稿者: Anonymous

ニュースサイトを作っているのですが、クリックした記事に飛びたいので、idを持たせる必要があるのですが、どのように書けば良いのか分からずにいます。

<?php
    $sql = "SELECT * FROM newsapp";
    $stmt = $pdo->prepare($sql);
    $stmt->execute();
    $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>

<?php 
    foreach ($results as $row) {
        echo '<a href="apps.php?page=1?id=' . $row["id"] .'">'.'<input type="button" value="Apps">'.'</a>';
        break;
    } 
?>  

apps.phpに遷移した時に各記事にidを持たせて遷移させたいです。

<?php
    foreach ($results as $row) {
        echo'<dt class="news-date">'.$row["create_date"].'</dt>';
        echo '<dd class="news-description"><a href="content.php?id=' . $row["id"] . '">' .mb_substr($row["title"],0,10)."...". '</a>';
        echo "<hr>";
        break;
    }
    $pdo = null;
?>

以下にapps.phpの記載

//apps.php
<?php 
            define('NEWS_LIST', 5);
            $news_start = (intval($_GET['page']) - 1) * NEWS_LIST;
            $pdo = new PDO("mysql:host=localhost;dbname=cs_academy;charset=utf8", "root", "");
            $sql = "SELECT * FROM newsapp WHERE category_id = 1 ORDER BY create_date DESC";
            $stmt = $pdo->prepare($sql);
            $stmt->execute();
            $results = $stmt->fetchAll(PDO::FETCH_ASSOC);

            foreach($results as $row) {
                $news_id = $row['id'];
                echo '<dt>';
                echo $row['create_date'];
                echo '</dt>';
                echo '<dd class="news-title">';
                echo $row['title'];
                echo '</dd>';
                echo '<a href="content.php?id">';
                echo '<dd class="news-description">';
                echo mb_substr($row['content'], 0, 150);
                if (mb_strlen($row['content']) > 150) {echo ' ...';}
                echo '</dd>';
                echo '</a>';
                echo'<hr>';
            }

以上のメソッドでは、しっかりidを持って、content.phpに遷移しているのですが、
apps.phpに遷移する際にもidを持ってページ遷移させるためには、どのような記述が必要でしょうか?

解決

@naga3 氏のコメントにもあるとおり、http get メソッドで複数のパラメータを渡すときは&で区切ります。たとえば以下のコードでいかがでしょうか。

なお foreach 最後に常時 break を置く目的がよくわかりませんが、そのままにしてあります。

<?php 
    foreach ($results as $row) {
        echo '<a href="apps.php?page=1&id=' . $row["id"] .'">'.'<input type="button" value="Apps">'.'</a>';
        break;
    } 
?>

参考

クエリ文字列とは|URLパラメータ|リクエストパラメータ – 意味/解説/説明/定義 : IT用語辞典

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *