-1

PHP プロジェクトを作成しようとしています。このサイトでは、ログインすることで写真を共有でき、写真はプログラムのメイン ページである index.php に表示されます。現在、3 つのデータベース ユーザーの画像とメッセージがあります。ユーザーは、写真に関する情報を保存して写真を共有し、画像テーブルからデータベースから取得して写真を共有できます。次に、ユーザーがメイン ページの写真についてコメントできるようにします。下にテキストエリアと投稿ボタンがあります。しかし、画像にコメントすると、関連する画像 ID だけでなく、他の画像 ID も登録されてしまいます。

これはphpコードの一部です。必要な部分でデータベース接続を開いたり閉じたりします。

 while($x < mysql_num_rows($result))
        {   
      $picid=mysql_result($result, $x, 'id');
      $name=mysql_result($result, $x, 'imageName');
      $date=mysql_result($result, $x, 'imageDate');

        echo "<div><img src = 'upload/$name' height='300 width='300' /></div>";
        echo "Name: $name   Date: $date";
        echo "<br/>";
       ?>
       <p>Post a Comment</p>

      <form action="<?= $_SERVER['PHP_SELF']?>" method="POST">
      <textarea name="message" cols="70" rows="6" placeholder="Enter a comment">

     </textarea><br/><br/><br/><br/><br/><br/>
      <input type="submit" name="submit" value="Post" style="float:left"><br/><br/>    
      <br/>
      </form>
     <!--<textarea name="message" cols="70" rows="6" ></textarea><br/><br/><br/><br/>   
     <br/><br/>-->
       <?php

        extract($_REQUEST);
        if (isset($submit)) {
          $y=0;
          $email=$_SESSION['email'];
           $asdf = mysql_query("SELECT * from users WHERE email='$email'");
           //var_dump(mysql_error());
            while( $y<mysql_num_rows($asdf) )
           { 
            $iduser=mysql_result($asdf,$y,'id');
             $y++;
          }

               echo "$iduser";
               $sql ="INSERT INTO messages (id_user, message,picid) VALUES   
               ('$iduser','$message','$picid');";

               $rslt = mysql_query($sql);

               if ($rslt== false) {
                echo '<p>Error: cannot execute query</p>';
               }

              } ?>
              <?php

      $x++;

    }
4

4 に答える 4

0

コメント システムに AJAx を試した方がよいでしょう。おそらくこのコードが原因で、この問題が発生しています。

$asdf = mysql_query("SELECT * from users WHERE email='$email'");
           //var_dump(mysql_error());
            while( $y<mysql_num_rows($asdf) )
           { 
            $iduser=mysql_result($asdf,$y,'id');
             $y++;
          }
于 2013-05-23T17:34:55.360 に答える
0

while($x < mysql_num_rows($result))条件の最後まで挿入を行うwhile ループを使用して います。

すべての $picid を指定し$picid =mysql_result($result, $x, 'id');、isset($submit) が true であるため、プログラムはすべての行にメッセージを挿入します。

于 2013-05-23T17:49:05.243 に答える