PHP のスキルを伸ばしたかったので、tutorialzine のチュートリアルを読みました。チュートリアルに示されている指示を理解しています。しかし、それを拡張することになると、接続が不足しているようです。私の主な目標は、タグがクリックされたときに選択したメモを単純に削除することでした。ただし、メモに割り当てられた ID を選択して削除機能に渡す方法がわかりません。
ソース: http://tutorialzine.com/2010/01/sticky-notes-ajax-php-jquery/
助けてくれてありがとう。
<?php
error_reporting(E_ALL^E_NOTICE);
require 'connect.php';
mysql_query("DELETE FROM notes WHERE id>3 AND dt<SUBTIME(NOW(),'0 1:0:0')");
$query = mysql_query("SELECT * FROM notes ORDER BY id DESC");
$notes = '';
$left='';
$top='';
$zindex='';
while($row=mysql_fetch_assoc($query)){
list($left,$top,$zindex) = explode('x',$row['xyz']);
$notes.= '
<div class="note '.$row['color'].'" style="left:'.$left.'px;top:'.$top.'px;z-index:'.$zindex.'">
'.htmlspecialchars($row['text']).'
<div class="author">'.htmlspecialchars($row['name']).'</div>
<span class="data">'.$row['id'].'</span>
<a id="remove_note" href="javascript:;" onclick="deleteNote('<? echo $row['id']; ?>');"> </a>
</div>';
}
function deleteNote(id){
$sql="DELETE FROM notes WHERE id='$rows['id']'";
$result=mysql_query($sql) or die("Error when tryin to delete note.");
}
?>
アップデート:
私はこれと、Andrew と sachleen の両方が提供した答えをいじっています。また、SQL インジェクションの問題全体について言及したので、AJAX の代替案に取り組む計画はありません。しかし、id を remove.php ファイルに渡す際にまだ問題があります。$notes が DB から情報を作成する方法に関係があると思います。
これを言うのは、次のようになるからです: Parse error: syntax error, unexpected T_STRING in /home/avonamyd/public_html/projects_php/sticky_notes/demo.php on line 24
それは、sachleen のコードをそのままインクルードした場合のみです。しかし、一重引用符を考慮して更新すると、次のコードになります。ID が存在し、remove.php ファイルに渡されますが、まだエラーが発生します。これは、私が自分のコードまたはあなたが提供したものを使用するときです。
$notes.= '
<div class="note '.$row['color'].'" style="left:'.$left.'px;top:'.$top.'px;z-index:'.$zindex.'">
'.htmlspecialchars($row['text']).'
<div class="author">'.htmlspecialchars($row['name']).'</div>
<span class="data">'.$row['id'].'</span>
<a id="remove_note" target="_blank" href="remove.php?id='.$row['id'].'"> </a>
</div>';
以下は、現在 remove.php ファイルにあるものです。
<?php
include 'connect.php';
$_GET['id'];
function deleteNote($id){
$sql="DELETE FROM notes WHERE id='$id'";
}
$result=mysql_query($sql) or die("Error when tryin to delete note.");
?>
アップデート
remove.php 全体に追加のエコー行を追加しましたが、これが私が考えているものです。
<?php
include 'connect.php';
$_GET['id'];
echo $id; --doesnt show
function deleteNote($id){
echo "hello"; --doesnt show
$sql="SELECT FROM notes WHERE id='$id'";
}
echo 'hello2'; --shows
$result=mysql_query($sql) or die("Error when tryin to delete note.");
?>
更新: このプロジェクトの皆さんの助けに感謝します。いじくり回した後、頭の中でクリックする概念を最終的に得ました。このコードに出くわした他の人のために、以下の機能コードを投稿します。=D Thx みんな!
デモ.php
error_reporting(E_ALL^E_NOTICE);
require 'connect.php';
mysql_query("DELETE FROM notes WHERE id>3 AND dt<SUBTIME(NOW(),'0 1:0:0')");
$query = mysql_query("SELECT * FROM notes ORDER BY id DESC");
$notes = '';
$left='';
$top='';
$zindex='';
while($row=mysql_fetch_assoc($query)){
list($left,$top,$zindex) = explode('x',$row['xyz']);
$id = $row['id'];
$notes.= '
<div class="note '.$row['color'].'" style="left:'.$left.'px;top:'.$top.'px;z-index:'.$zindex.'">
'.htmlspecialchars($row['text']).'
<div class="author">'.htmlspecialchars($row['name']).'</div>
<span class="data">'.$row['id'].'</span>
<a id="remove_note" target="_blank" href="remove.php?id='.$row['id'].'"> </a>
</div>';
}
remove.php
<?php
include 'connect.php';
$id = intval($_GET['id']);
$sql="DELETE FROM notes WHERE id=$id";
$result = mysql_query($sql) or die("Unable to delete database entry.");
?>