2016-10-07 9 views
1

私はかなり長い間「もっと読む」ページに取り組んできました。私が基本的に望むのは、もっと読むをクリックすると、ニュースアイテムのページにリダイレクトされます。 'nieuws.php' は、PHP - これ以上のページを読むと '未定義の変数'エラーが返される

のindex.php

$p=mysqli_query($con, "SELECT id, titel, tekst, datum FROM nieuws LIMIT $start, $limit"); 

     if(mysqli_num_rows($p) > 0) { 
     while ($row = mysqli_fetch_array($p)){ 
      $nieuws = $row['0']; 

      echo "<h2>".$row['1']."</h2>"; 
      echo "<div class='clr'></div>"; 
      echo "<p>".$row['2']."</p>"; 
      echo "<p> Geplaatst op: ".$row['3']."</p>"; 
      echo "<a href='pages/nieuws.php?nieuwsitem=$nieuws'>Lees meer..</a></br></br>"; 
     } 
     } else { 
     echo "Geen items gevonden."; 
     } 

nieuws.php

<?php 
     $con = mysqli_connect("localhost", "root", "", "groenevingers"); 

     if (mysqli_connect_errno()) { 
     die("Failed to connect to MySQL: " . mysqli_connect_error()); 
     } 

     $p=mysqli_query($con, "SELECT id, titel, tekst, datum FROM nieuws WHERE id='$nieuws'"); 

     if(mysqli_num_rows($p) > 0) { 
     while ($row = mysqli_fetch_array($p)){ 
      echo "<h2>".$row['1']."</h2>"; 
      echo "<div class='clr'></div>"; 
      echo "<p>".$row['2']."</p>"; 
      echo "<p> Geplaatst op: ".$row['3']."</p>"; 
     } 
     } else { 
     echo "Item niet gevonden."; 
     } 
    ?> 

それはidで特定のニュース項目が表示されます。しかし、「通知:未定義変数:nieuws」というエラーが表示されます。 私は$ row ['0']を定義していないので、なぜエラーが出るのか理解できます。これはニューステーブルのニュースIDですが、何とか解決できません。

あなたが私を助けてくれるとにかくありますか? ご協力いただきありがとうございます。

敬具、 vaxzz

+0

これらの2つの別々のファイルですので、あなたは私が出回っ思っまさにそれ –

+0

ザッツを使用することができますが、私はそれを修正するように見えることはできません前に、あなたの変数を定義する必要があります。あなたがindex.phpで$ row ['0']に$ nieuwsを定義しているのを見ても分かるように、nieuws.phpで全く同じことをすると、 'Undefined variable:row'というエラーが出ます。 – vaxzz

+0

これは初めての話ですが、 'pagination with mysqli'を見てください。また、パラメータ化されたクエリでSQLインジェクションを防止する方法も見てください。 – chris85

答えて

1

あなたは、おそらくこのようなあなたのニュースページのためのコードを変更する必要があると思います:

<?php 
    $con = mysqli_connect("localhost", "root", "", "groenevingers"); 

    if (mysqli_connect_errno()) { 
    die("Failed to connect to MySQL: " . mysqli_connect_error()); 
    } 
    if(isset($_GET['nieuwsitem'])) { 
     $nieuws = intval($_GET['nieuwsitem']); 
     $p=mysqli_query($con, "SELECT id, titel, tekst, datum FROM nieuws WHERE id='$nieuws'"); 

     if(mysqli_num_rows($p) > 0) { 
      if ($row = mysqli_fetch_array($p)){ 
       echo "<h2>".$row['1']."</h2>"; 
       echo "<div class='clr'></div>"; 
       echo "<p>".$row['2']."</p>"; 
       echo "<p> Geplaatst op: ".$row['3']."</p>"; 
      } 
     } else { 
      echo "Item niet gevonden."; 
     } 
    } else { 
     echo "Item niet gevonden."; 
    } 
?> 

これがどうなるいくつかのこと:

if(isset($_GET['nieuwsitem'])) { 

かどうかをチェックしますあなたのURLにIDがあります

$nieuws = intval($_GET['nieuwsitem']); 

はまた、設定し、IDとも整数に変換し、それはあなたのクエリで使用しても「安全」だと取得し、あなたの$nieuws変数

+0

ご協力いただきありがとうございます。私はissetを使う必要があることを知っていましたが、前にintvalを使っていませんでした(PHPの初心者)。しかし、もう一度、助けてくれてありがとう、それは非常に感謝し、何か新しいことを学んだ=) – vaxzz

1

あなたは、あなたがそれを使用する前に、変数$ nieuwsを定義する必要があります。 nieuwsを.PHP: -

<?php 
    $con = mysqli_connect("localhost", "root", "", "groenevingers"); 

$nieuws = $_GET['nieuwsitem']; 

    if (mysqli_connect_errno()) { 
    die("Failed to connect to MySQL: " . mysqli_connect_error()); 
} 

$p=mysqli_query($con, "SELECT id, title, text, datum FROM nieuws WHERE id='$nieuws'"); 

if(mysqli_num_rows($p) > 0) { 
    while ($row = mysqli_fetch_array($p)){ 
    echo "<h2>".$row['1']."</h2>"; 
    echo "<div class='clr'></div>"; 
    echo "<p>".$row['2']."</p>"; 
    echo "<p> Geplaatst op: ".$row['3']."</p>"; 
} 
} else { 
    echo "Item niet gevonden."; 
} 
?> 
関連する問題