2017-07-11 11 views
0

このページの目標は、私のデータベースのタグテーブルをチェックし、すべての行のタグ名とタグイメージで順序なしリストを生成することです。次のコードは、私は完全にそれを行うことができます:このコードが動作しない特別な理由は何ですか?私は問題を把握できないようです

<?php 
       $sql = "SELECT * FROM tags"; 

       echo "<ul id='ulTags'>"; 
       $result = mysqli_query($conn, $sql); 

        while ($row = $result->fetch_assoc()){ 
         echo '<div class="imageContainerTags"><a href="specificTag.php?='.$row['tag'].'"><li class="listTags"><h1>'.$row['tag'].'</h1></li><img class="tagThumbnail" src="images/Tags/'.$row['path'] .'" alt="Random image" /></a></div>'; 
        } 
       echo "</ul>"; 
     ?> 

しかし、私はあなたが権限を持っている場合、データベースからタグを削除する可能性を実装することにしました。すべてのユーザーに権限があり、権限が1の場合は、各イメージの下に削除ボタンが表示されます。

<?php 
       $userId = $_SESSION['id']; 

       $sql = "SELECT * FROM tags"; 
       $result = mysqli_query($conn, $sql); 

       $sql2 = "SELECT * FROM user where id='$userId'"; 
       $result2 = mysqli_query($conn, $sql2); 
       $getResult2 = mysqli_fetch_assoc($result2); 

       $userP = $getResult2['permission']; 

       echo "<ul id='ulTags'>"; 
       if (isset($_SESSION['id']) && $userP == 1) { 
        while ($row = $result->fetch_assoc()){ 
         echo '<div class="imageContainerTags"><a href="specificTag.php?='.$row['tag'].'"><li class="listTags"><h1>'.$row['tag'].'</h1></li><img class="tagThumbnail" src="images/Tags/'.$row['path'] .'" alt="Random image" /></a></div>'; 
         echo "<form method='POST' action='".deleteTag($conn)."'> 
              <input type='hidden' name='id' value='".$row['id']."'> 
              <input type='hidden' name='tag' value='".$row['tag']."'> 
              <input type='hidden' name='path' value='".$row['path']."'> 
              <button id='delTag' type='submit' name='tagDelete'>Delete Tag</button> 
          </form>"; 
        } 
       } else { 
        while ($row = $result->fetch_assoc()){ 
         echo '<div class="imageContainerTags"><a href="specificTag.php?='.$row['tag'].'"><li class="listTags"><h1>'.$row['tag'].'</h1></li><img class="tagThumbnail" src="images/Tags/'.$row['path'] .'" alt="Random image" /></a></div>'; 
        } 
       }; 
       echo "</ul>"; 
     ?> 

残念ながら、コードに問題があるように思われるとそれだけで、それが何をすべきように、1個のタグではなく、それらのすべてをエコー:これは、その機能を搭載し、更新されたコードです。最初のコードはすべてのタグをエコーし​​ましたが、削除ボタンを追加しようとする前でした。すべての手がかりをいただければ幸いです。

+1

deleteTag($ CONN)ouptutは何ですか? – user10089632

+0

タグ削除のロジックを扱うインクルードファイルの中にあり、そのファイルはページに含まれているので、問題ではないはずです。 –

+1

私はそれが処理する方法ではないのではないかと恐れています。実際には、PHPスクリプトの名前が必要です。例えば、

user10089632

答えて

0

デバッグするのに最善のことは、コードの各部分にエコーを挿入して、どこが脱線しているかを確認することです。

最初に出力htmlページのソースを調べて、タグが正しくエコーされていることを確認します(htmlエラーなし)。

返される総タグを見るには、if else節の直前にecho $ result-> num_rowsを置きます。

結果に複数のタグがあり、1つしか表示されない場合は、そのタグが返された結果の最後または最初のタグかどうかがわかります。

始めるためにこれらを確認してください....

NB:あなたは一貫したコーディングスタイルを使用していないのはなぜか?

//One place you use 

    $getResult2 = mysqli_fetch_assoc($result2); // functional programming 

    // another place you use 

    $row = $result->fetch_assoc(); // OOP programming 

    // Stick to one style, preferably OOP 
+0

まず、そのことが問題を見つけるのに役立ちました。ありがとうございます:)。第二に、私はバックエンドプログラミングにはまったく新しく、手順PHPとOOP PHPを同時に習得しようとしています。これは時にはその矛盾につながります。率直に言って、私は現在、OOPを避けています。なぜなら、私はそれの利益を理解していても、ちょっと混乱しているからです。 –

0

コードのif文をこれに置き換えてみてください。

if (isset($_SESSION['id']) && $userP == 1) { 
        while ($row2 = $result->fetch_assoc()){ 
         echo '<div class="imageContainerTags"><a href="specificTag.php?='.$row2['tag'].'"><li class="listTags"><h1>'.$row2['tag'].'</h1></li><img class="tagThumbnail" src="images/Tags/'.$row2['path'] .'" alt="Random image" /></a></div>'; 
         echo "<form method='POST' action='".deleteTag($conn)."'> 
              <input type='hidden' name='id' value='".$row2['id']."'> 
              <input type='hidden' name='tag' value='".$row2['tag']."'> 
              <input type='hidden' name='path' value='".$row2['path']."'> 
              <button id='delTag' type='submit' name='tagDelete'>Delete Tag</button> 
          </form>"; 
        } 
       } else { 
        while ($row2 = $result->fetch_assoc()){ 
         echo '<div class="imageContainerTags"><a href="specificTag.php?='.$row2['tag'].'"><li class="listTags"><h1>'.$row2['tag'].'</h1></li><img class="tagThumbnail" src="images/Tags/'.$row2['path'] .'" alt="Random image" /></a></div>'; 
        } 
       }; 
+0

最終結果は同じです。最初のタグのみが表示されます。 –

0

PHPはサーバー側のプログラミング言語です.HTMLフォームはクライアント側です。 ここでdeleteTag()はPHP関数であり、クライアントでフォームが送信された時点では無効です。削除を処理するために必要なロジックを持っているdelete.php

echo "<form method='POST' action='delete.php'> 

関連する問題