$url= "show.php ?catid=".($row['catid']);
このコードが実行されると、show.php のコンテンツが自動的に呼び出されますか? ? ?真ん中の ?catid= は $url="show.php?topic=".($row['catid']); のように書いても大丈夫ですか?これは、リンク用の文字列を生成するだけです。Shop.php はユーザーがクリックした後にのみ実行されます。catid は自由に変更できますが、shop.php ファイル内の変数名は一貫している必要があります
? id=".row['catid']";
$url= "show.php ?catid=.($row['catid']);
このコードは $url に値を割り当てます。値は文字列で、内容は show.php?catid= です。 $row ['catid']
の内容には show.php の呼び出し内容が含まれていません。
catid はパラメータ名なので気軽に書けますが、パラメータを取得するページはそれに合わせて修正する必要があります。
たとえば、show.php?catid=1 の場合は、show.php で $_GET['catid'] を取得する必要があります。