Webmaster-Elite.de Forum  

Zurück   Webmaster-Elite.de Forum > Scriptsprachen > PHP/mySQL

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 01.11.2008, 11:52   #1 (Permalink)
Neuer Benutzer
 
Registriert: 01.11.2008
Ort: Aachen
Geschlecht: maennlich
Beiträge: 7
WMEc: 455
Bedankt: 0
Erhielt 0 Danke
für 0 Beiträge

Frage Kommentare freigeben bzw. Löschen

Hallo,
ich habe letztens bei mir auf der Platte ein unfertiges Newssystem gefunden, welches ich gerne erweitern würde!
Das Newssystem hat eine Kommentarfunktion, wobei diese jedoch sofort erstellt werden. Ohne jede Moderation. Das habe ich geändert und ich kann in der DB auch den freigabewert auf 1 stellen und schon wird dieser freigegeben.
Jetzt möchte ich dies auch in die Adminoberfläche einbinden.
Ich lass mir also nun alle Kommentare mit dem freigabewert 0 anzeigen und hänge 2 Buttons hinten dran: Löschen und Freigeben.
Die Namen der Buttons haben folgende Syntax: kommentarID.newsID
Somit ist eine Eindeutigkeit gewährleistet.
Wie kann ich jetzt abfragen, welcher Button gedrückt wurde, da ich ja nicht weiß wie dieser heißt???

Hier mal mein Script:
freigabe.php:
PHP-Code:
<?php 

require("config.inc.php");
require(
"login.inc.php");
require(
"kopf.php");
require(
"adminkopf.inc.php");
require(
"function.inc.php");


echo 
"<table border=0 cellspacing=1 cellpadding=3 width=\"100%\">";
echo 
"<tr><th class=head colspan=3 bgcolor=$c_header>$f_titel Kommentare zur News</th></tr>";
echo 
"<form method=\"post\" action=$PHP_SELF>";
$ergebnis  mysql_query("Select * FROM $tab_newskom ORDER BY time DESC"$serverid);
while ( 
$kom mysql_fetch_array ($ergebnis) ) {
if(
$kom[freigabe] == 0){
   echo 
"<tr>";
//Autor:
   
echo "<td valign=top class=\"left\" bgcolor=\"$c_left\"><table $glowstyle><tr><td>$f_author<nobr>";
   echo 
formatkom($kom[author]);
   echo 
"</nobr></tr></td></table><nobr><font size=1>";
   echo 
date("d.m.Y, H:i",$kom[time]+$time_offset);
   echo 
"</nobr></td>";
//Kommentar:
   
echo "<td class=\"right\" width=\"100%\" bgcolor=$c_right>$f_news";
   echo 
formatkom($kom[text]);
   echo 
"</td>";
   echo 
"<td class=\"right\"bgcolor=$c_right>";
   echo 
"NewsID: $kom[newsid] <br> KomID: $kom[id]";
   echo 
"</td>";
   echo 
"<td class=\"left\" bgcolror=$c_right align=\"right\">";
   echo 
"<input type=\"submit\" name=\"f$kom[id].$kom[newsid]\" value=\"Freigeben\">";
   echo 
"</td>";
   echo 
"<td class=\"left\" bgcolror=$c_right align=\"right\">";
   echo 
"<input type=\"submit\" name=\"l$kom[id].$kom[newsid]\" value=\"Löschen\">";
   echo 
"</td>";
   echo 
"</tr>";
}
}
echo 
"</table>";
echo 
"</form>";

if(isset(
$_REQUEST['f$kom[id].$kom[newsid]'])){
    
mysql_query("UPDATE $tab_newskom SET freigabe = '1' WHERE id = '$kom[id]' AND  newsid = '$kom[newsid]' LIMIT 1;"$serverid);
}
if(isset(
$_REQUEST['l$kom[id].$kom[newsid]'])){
    
mysql_query("DELETE $tab_newskom WHERE id = '$kom[id]' AND  newsid = '$kom[newsid]' LIMIT 1;"$serverid);
}
?>
Der Teil mit den 2 Ifabfragen und dem $_REQUEST muss ich so ändern, dass es funktioniert.
Ich glaube es liegt daran, dass die Variable $kom nur in der Schleife sichtbar ist.

Vll hat ja jemand ne Idee

Danke schonmal im vorraus.
MasterG ist offline   Mit Zitat antworten
Alt 03.11.2008, 14:01   #2 (Permalink)
Neuer Benutzer
 
Registriert: 01.11.2008
Ort: Aachen
Geschlecht: maennlich
Beiträge: 7
WMEc: 455
Bedankt: 0
Erhielt 0 Danke
für 0 Beiträge

Standard

Habe es nun auich so hinbekommen...
Das Freigeben Klappt! Nur das löschen nicht -.-
Kann es sein, dass der Deletebefehl für MySQL die falsche Syntax hat?
PHP-Code:
 <?php  

require("config.inc.php"); 
require(
"login.inc.php"); 
require(
"kopf.php"); 
require(
"adminkopf.inc.php"); 
require(
"function.inc.php"); 

if(isset(
$_POST['freigabe'])){ 
    
$komid $_POST[id]; 
    
$newsid $_POST[newsid]; 
    
mysql_query("UPDATE $tab_newskom SET freigabe = '1' WHERE id = '$komid' AND  newsid = '$newsid' LIMIT 1;"$serverid); 

if(isset(
$_POST['delete'])){ 
    
$komid $_POST[id]; 
    
$newsid $_POST[newsid]; 
    
mysql_query("DELETE $tab_newskom WHERE id = '$komid' AND  newsid = '$newsid' LIMIT 1;"$serverid); 


echo 
"<table border=0 cellspacing=1 cellpadding=3 width=\"100%\">"
echo 
"<tr><th class=head colspan=3 bgcolor=$c_header>$f_titel Kommentare zur News</th></tr>"
$ergebnis  mysql_query("Select * FROM $tab_newskom ORDER BY time DESC"$serverid); 
while ( 
$kom mysql_fetch_array ($ergebnis) ) { 
if(
$kom[freigabe] == 0){ 
   echo 
"<tr>"
//Autor: 
   
echo "<form method=\"post\" action=$PHP_SELF name=\"$kom[id].$kom[newsid]\">"
   echo 
"<input type=\"hidden\" name=\"id\" value=\"$kom[id]\">"
   echo 
"<input type=\"hidden\" name=\"newsid\" value=\"$kom[newsid]\">"
   echo 
"<td valign=top class=\"left\" bgcolor=\"$c_left\"><table $glowstyle><tr><td>$f_author<nobr>"
   echo 
formatkom($kom[author]); 
   echo 
"</nobr></tr></td></table><nobr><font size=1>"
   echo 
date("d.m.Y, H:i",$kom[time]+$time_offset); 
   echo 
"</nobr></td>"
//Kommentar: 
   
echo "<td class=\"right\" width=\"100%\" bgcolor=$c_right>$f_news"
   echo 
formatkom($kom[text]); 
   echo 
"</td>"
   echo 
"<td class=\"right\"bgcolor=$c_right>"
   echo 
"NewsID: $kom[newsid] <br> KomID: $kom[id]"
   echo 
"</td>"
   echo 
"<td class=\"left\" bgcolror=$c_right align=\"right\">"
   echo 
"<input type=\"submit\" name=\"freigabe\" value=\"Freigeben\">"
   echo 
"</td>"
   echo 
"<td class=\"left\" bgcolror=$c_right align=\"right\">"
   echo 
"<input type=\"submit\" name=\"delete\" value=\"Löschen\">"
   echo 
"</td>"
   echo 
"</tr>"
   echo 
"</form>"


echo 
"</table>"

?>
MasterG ist offline   Mit Zitat antworten
Alt 03.11.2008, 16:32   #3 (Permalink)
El Cheffe
 
Benutzerbild von Stone
 
Registriert: 02.06.2004
Ort: Saarland
Geschlecht: maennlich
Beiträge: 2,098
WMEc: 65,798
Bedankt: 31
Erhielt 70 Danke
für 55 Beiträge

Standard

Wenn du uns jetzt noch verrätst was in den Variablen $tab_newskom und $serverid drinsteht, könnte man ja was zur Syntax sagen ne...


Außerdem:
PHP-Code:
if(isset($_POST['freigabe']))
{
  ...

solltest du ergänzen zu:
PHP-Code:
if(isset($_POST['freigabe']) && $_POST['freigabe'] != "")
{
  ...

Eine Variable kann nämlich auch gesetzt sein und nichts beinhalten; deswegen sollte man dies zusätzlich noch zur Sicherheit checken. Dasselbe änder dann noch für die delete Variable ab.
__________________
[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. ]

Geändert von Stone (03.11.2008 um 16:40 Uhr).
Stone ist offline   Mit Zitat antworten
Alt 03.11.2008, 18:39   #4 (Permalink)
Neuer Benutzer
 
Registriert: 01.11.2008
Ort: Aachen
Geschlecht: maennlich
Beiträge: 7
WMEc: 455
Bedankt: 0
Erhielt 0 Danke
für 0 Beiträge

Standard

$tab_newskom ist der Tabellenname, wo die Komentare drin stehen.
$serverid enhällt natürlich den Verbindungsaufbau zur MySQL-DB...

Freigabe kann nicht leer sein, da dies der Name des Buttons ist und mit isset() überprüft wird, ob diese Variable vorhanden ist. Das ist nur der Fall, wenn der Button gedrückt wurde

Das Freigeben funktioniert ja auch soweit nur das Löschen nicht!
MasterG ist offline   Mit Zitat antworten
Alt 03.11.2008, 20:07   #5 (Permalink)
El Cheffe
 
Benutzerbild von Stone
 
Registriert: 02.06.2004
Ort: Saarland
Geschlecht: maennlich
Beiträge: 2,098
WMEc: 65,798
Bedankt: 31
Erhielt 70 Danke
für 55 Beiträge

Standard

Zitat:
Zitat von MasterG Beitrag anzeigen
Freigabe kann nicht leer sein, da dies der Name des Buttons ist und mit isset() überprüft wird, ob diese Variable vorhanden ist. Das ist nur der Fall, wenn der Button gedrückt wurde
Kann sie sehr wohl, Seiten kann man viel vorgaukeln... Je sauberer du codest desto weniger Sicherheitslücken gibt es am Ende; naja musst du wissen.


Syntax wäre dann:
PHP-Code:
mysql_query("DELETE FROM $tab_newskom WHERE id = '$komid' AND  newsid = '$newsid' LIMIT 1;"$serverid); 
Das FROM fehlt, deshalb die Frage nach der Variable $tab_newskom...
__________________
[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. ]

Geändert von Stone (03.11.2008 um 20:14 Uhr).
Stone ist offline   Mit Zitat antworten
Alt 03.11.2008, 22:24   #6 (Permalink)
Neuer Benutzer
 
Registriert: 01.11.2008
Ort: Aachen
Geschlecht: maennlich
Beiträge: 7
WMEc: 455
Bedankt: 0
Erhielt 0 Danke
für 0 Beiträge

Standard

Zitat:
Zitat von Stone Beitrag anzeigen
Kann sie sehr wohl, Seiten kann man viel vorgaukeln... Je sauberer du codest desto weniger Sicherheitslücken gibt es am Ende; naja musst du wissen.
Oh ok, danke! Habe ich nicht dran gedacht

Funktioniert jetzt auch
MasterG ist offline   Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Hilfe] Access denied - MYSQL Einträge löschen Te.Fly PHP/mySQL 2 03.11.2008 18:45
Einträge löschen nicht mehr möglich?! domino Gästebuch 3 31.03.2008 15:46
festplatten wirklich löschen ... TS Software 4 31.07.2007 22:34


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:32 Uhr.


Powered by vBulletin® Version 3.8.4 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.1
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios
Copyright 2003-2009 by Webmaster-Elite.de
no new posts

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44