2009-11-03 1 views
-3

, и он связан с «удаленной страницей подтверждения». В идеале я хотел бы, чтобы он просто стирался и перезагружался страницей, а затем отправлял его на мой db, отмеченный как мертвый.Имейте кнопку удаления exaccty, где я хочу это

В принципе, у пользователей есть профиль, который позволяет другим пользователям делать комментарии. С помощью PHP я бы хотел, чтобы кнопка удаления отображалась только тогда, когда пользователи просматривают свой профиль.

Это то, что я до сих пор:

$query = "SELECT * FROM `ProfileComments` WHERE `ToUserID` = '".$prof->id."' ORDER BY `date` DESC, `time` DESC LIMIT 10"; 

$request = mysql_query($query,$connection); 

while($result = mysql_fetch_array($request)) { 

    $poster = new User($result['FromUserID']); 

    echo "<div id='CommentProfile'>"; 
    echo "<div id='CommentPhotoProfile'>"; 
    echo "<a href='http://www.blahblah.org/Profile.php?id=".$poster->id."'>"; 
    echo "<img src='" . $poster->img('mini') . "' border='0'/>"; 
    echo "</a>"; 
    echo "</div>"; 
    echo "<div id='ProfileCommentBody' class= 'round_10px'>"; 
    echo "<div id='CommentNameProfile'>"; 
    echo "<div class='ProfileCommentTail'>&nbsp;</div>"; 
    echo "<a href='http://www.blahblah.org/Profile.php?id=".$poster->id."'>"; 
    echo $poster->first_name. " ". $poster->last_name. " <span style='font-weight:normal'>says...</span>"; 
    echo "</a>"; 
    echo "</div>"; 
    echo stripslashes(nl2br($result['commentProfileBody'])); 
    echo "<div id='CommentInfoProfile'>"; 
    echo date('M d, Y',strtotime($result['date'])); 
    echo " at " . date('g:i A',strtotime($result['time'])); 
    if ($prof->id == $prof->id) 
     echo "<a href='http://www.blahblah.org/DeleteComment.php?id=".$prof->id."'>"; 
    echo " delete"; 
    echo "</a>"; 
    echo "</div>"; 
    echo "</div>"; 
    echo "</div>"; 
} 
?> 

Я задал этот вопрос несколько раз сегодня и либо полученных незаконным неопределенные ответы (что отчасти моя вина, потому что я не давал достаточно примеров кода, который мы надеемся, вышесказанное достаточно), или я поговорил с ним, расспросил о моих возможностях или сказал, чтобы пойти нанять разработчика. ха-ха. Поэтому, если вы более опытный разработчик, который хочет поделиться своим знанием с разработчиком и будущим разработчиком, который был бы высоко оценен. В конце концов, это не одна из целей этого сайта?

Если у вас нет времени, чтобы объяснить это мне, ссылка на отличный учебник или ресурс, который поможет мне найти мой путь, будет потрясающим! Спасибо.

+4

Вы должны обновить существующий вопрос (http://stackoverflow.com/questions/1662337/sending-a-delte-php-properly-to-my-db?) Вместо того, чтобы открывать новый ... – bdonlan

+3

Возможно вы получили ответы подпара, потому что вы задали подпункт. Код плохо отформатирован (да, это важно), и он не сводится к минимальному минимуму, чтобы объяснить вашу проблему (что помогает читателям понять это и демонстрирует, что вы приложили некоторые усилия, а не выполняете сброс кода, говоря «исправить это») , – cletus

+0

Кроме того, в общем, SO посвящена общему понятию, а не написанию конкретного кода для вас. Как таковой, пока нет ничего _wrong_ с просьбой, не удивляйтесь, если ответы менее чем когда-нибудь полезны, если вы в основном просите людей сделать это за вас. В любом случае - примечание о разъяснении - хотите ли вы знать, что происходит в 'DeleteComment.php', или вы хотите знать, что нарушено в приведенном выше коде, или что? – bdonlan

ответ

2

Попробуйте изменить строку:

if ($prof->id == $prof->id) 

в

if ($poster->id == $prof->id) 

так, что удаление ссылка показывает только когда профиль принадлежит авторам.

+0

Я тоже поместил это, но я думаю, что он хотел этого, только когда вошедший в систему пользователь просматривал свой профиль. хотя меня это не удивило бы, если бы он был неправильно сформулирован в вопросе. –

+0

Человек, люди суровы здесь. –

+1

Извините, если я сказал что-то, чтобы оскорбить вас где-то - я не хотел быть суровым наверху; Я просто пытаюсь дать советы о том, как лучше отвечать на ваши будущие вопросы, так как вам, похоже, не повезло.Я бы посоветовал прочитать ESR «Как задавать умные вопросы» @ http://catb.org/~esr/faqs/smart-questions.html - он тоже немного суроват, но он делает много хороших моментов в том, как чтобы сообщить, что вы хотите знать эффективно, и как получить хорошие ответы. – bdonlan

1

В чем проблема? Похоже, что у вас установлена ​​ссылка «удалить», теперь все, что вам нужно сделать, это создать эту страницу DeleteComment. В нем, вы могли бы сделать что-то вроде этого:

$id = $_GET['id']; // make sure to sanitize this variable 
mysql_query("DELETE FROM ProfileComments WHERE id=$id"); 
header('location:'.$_SERVER['REQUEST_URI']); // redirect to last page 

Другие могли бы также рекомендовать использовать POST, а не GET по причинам, я не чувствую, как попасть в здесь (пауки, возможно, «нажмите» его). И вы, вероятно, захотите убедиться, что пользователи вошли в систему или что-то в этом роде. И REQUEST_URI не является надежным, так как это зависит от того, как браузер клиента отправит вам эту информацию. Вы можете обойти это, сохранив последний URL-адрес в сеансе или что-то в этом роде.

+0

Я думаю, проблема в том, что ссылка на удаление появляется для всех, потому что его if оператор сравнивает одну и ту же переменную с самим собой. –

+0

ах ... я отвлекся от всего другого бессмыслица в его вопросе. – mpen

0
if ($prof->id == $prof->id) 
    echo "<a href='http://www.blahblah.org/DeleteComment.php?id=".$prof->id."'>"; 

Это должно всегда приводить к истине.

выглядит как вам нужно

if ($logged_in_user->id == $prof->id) 
    echo "<a href='http://www.blahblah.org/DeleteComment.php?id=".$prof->id."'>"; 

я должен также отметить, что идентификатор вы передаете ваше удаление связи является идентификатором профиля вместо комментария сам. вы, вероятно, не хотите удалять весь профиль здесь.

0
if ($prof->id == $prof->id) 

Это всегда будет правдой. Возможно, вы имели в виду:

if ($prof->id == $poster->id) 

Я предполагаю, что $prof является профиль вошедшего в систему пользователя. Если это не так, вам нужно использовать что-то еще здесь!(Просьба указать, какие переменные есть, если это не ясно в образцах кода, это поможет нам помочь)

Обязательно перепроверьте это в DeleteComment.php - просто потому, что нет кнопки, это не означает, что предприимчивый хакер не сделает один для себя!

Кроме того,

echo "<a href='http://www.blahblah.org/DeleteComment.php?id=".$prof->id."'>"; 

Если я понимаю ваши переменные правильно, $prof является зарегистрированным в профиле пользователя; а не комментарий. Таким образом, это не позволяет указать, какой комментарий нужно удалить; только только что зарегистрированный пользователь. Возможно, вы захотите передать идентификатор комментария - поскольку вы не опубликовали свою схему, я не могу здесь указывать конкретный код.

Смежные вопросы