Guten Tag liebe Helfergemeinde,
ich probiere mich gerade an der Erstellung einer Kommentarfunktion für Blog-Beiträge aus. Diese Funktioniert auch bereits einwandfrei. Für den Administratorbereich möchte ich nun eine Übersicht schaffen, auf der alle Kommentare zusammengefasst werden. Dort soll dann der Administrator die Möglichkeit haben, Kommentare freizugeben oder wieder zu sperren.
Hier das Skript:
Leider wird jedoch beim ändern der Option und betätigen des Sendenbuttons immer ein Fehler ausgegeben (header('Location: '. $_GET['url'] .'?status_update_fehler=1')). Ich gehe davon aus, dass die ID des zu betreffenden Kommentarstatus nicht richtig übergeben wird. Habe jetzt auch schon eine Nacht darüber geschlafen und mich heute erneut versucht, finde aber einfach nicht den Fehler.
Über einen kleinen Hinweis oder Tipp bin ich wirklich froh und dankbar.
Viele Grüße
Marco
p.s.: die $lang_etc. sind ausgelagerte Texte
ich probiere mich gerade an der Erstellung einer Kommentarfunktion für Blog-Beiträge aus. Diese Funktioniert auch bereits einwandfrei. Für den Administratorbereich möchte ich nun eine Übersicht schaffen, auf der alle Kommentare zusammengefasst werden. Dort soll dann der Administrator die Möglichkeit haben, Kommentare freizugeben oder wieder zu sperren.
Hier das Skript:
PHP:
<!-- Übergeordneter <form> und <input> in der index.php für alle Senden-Ausführen-Funktionen der Seite -->
<form action="" method="post" id="form">
<input name="action" type="hidden" />
<input name="id" type="hidden" />
<!-- ENDE -->
<!-- Das eigentliche Skript -->
<?php
// Artikel-Kommentare
function artikel_kommentare($conid)
{
if($conid)
{
if(isset($_GET['seite']))
{
$seite = $_GET['seite'];
}
else
{
$seite = 1;
}
$startseite = ($seite-1) * 10;
$select = "SELECT
`id`,
`artikel_id`,
`name`,
`email`,
`url`,
`status`,
`kommentar`,
DATE_FORMAT(`update`,'am %d.%m.%Y um %H:%i Uhr') AS `kommentarzeit`
FROM
`artikel_kommentare`
ORDER BY `kommentarzeit` DESC
LIMIT $startseite, 10";
$ergebnis = mysql_query($select, $conid);
if(@mysql_num_rows($ergebnis) > 0)
{
while($zeile = mysql_fetch_array($ergebnis))
{
$datensatz[$zeile['id']]['id'] = $zeile['id'];
$datensatz[$zeile['id']]['artikel_id'] = $zeile['artikel_id'];
$datensatz[$zeile['id']]['name'] = $zeile['name'];
$datensatz[$zeile['id']]['email'] = $zeile['email'];
$datensatz[$zeile['id']]['url'] = $zeile['url'];
$datensatz[$zeile['id']]['status'] = $zeile['status'];
$datensatz[$zeile['id']]['kommentar'] = $zeile['kommentar'];
$datensatz[$zeile['id']]['kommentarzeit'] = $zeile['kommentarzeit'];
}
}
mysql_free_result($ergebnis);
return $datensatz;
}
}
// Artikel-Kommentare laden
$artikel_kommentare = artikel_kommentare($conid);
// Status ändern
if(isset($_POST['status_update']))
{
$id = $_POST['id'];
$select = "
UPDATE `artikel_kommentare` SET
`status` = '". $_POST['status'][$id] ."',
WHERE `id` = '". $id ."'
";
mysql_query($select);
if(mysql_affected_rows () > 0)
{
header('Location: '. $_GET['url'] .'?status_update_hinweis=1');
}
else
{
header('Location: '. $_GET['url'] .'?status_update_fehler=1');
}
}
echo '<div id="artikel_kommentare">'."\n";
echo ''. $lang_artikel_kommentare_ueberschrift .''."\n";
if(is_array($artikel_kommentare))
{
foreach ($artikel_kommentare as $kommentare)
{
echo '<div class="kommentar_feld">'."\n";
echo '<span class="fett">'. $kommentare['name'] .':</span> <div class="info_kommentarzeit"><span class="infotext_klein">'. $kommentare['kommentarzeit'] .'</span></div>'."\n";
echo '<br />'."\n";
echo ''. $kommentare['kommentar'] .''."\n";
echo '<br />'."\n";
if($kommentare['url'] == TRUE)
{
echo '<a href="'. $kommentare['url'] .'" rel="nofollow">'. $kommentare['url'] .'</a>'."\n";
}
if($kommentare['status'] == 0)
{
echo '<select name="status['. $kommentare['id'] .']">'."\n";
echo ' <option value="0" selected="selected">'. $lang_artikel_kommentare_status_gesperrt .'</option>'."\n";
echo ' <option value="1">'. $lang_artikel_kommentare_status_freischalten .'</option>'."\n";
echo '</select>'."\n";
}
elseif($kommentare['status'] == 1)
{
echo '<select name="status['. $kommentare['id'] .']">'."\n";
echo ' <option value="0">'. $lang_artikel_kommentare_status_sperren .'</option>'."\n";
echo ' <option value="1" selected="selected">'. $lang_artikel_kommentare_status_freigeschaltet .'</option>'."\n";
echo '</select>'."\n";
}
echo '<br />'."\n";
echo '<input name="id" type="hidden" value="'. $kommentare['id'] .'" />'."\n";
echo '<input type="submit" name="status_update" value="'. $lang_artikel_kommentare_status_update .'" />'."\n";
echo '</div>'."\n";
}
}
else
{
echo '<p class="kommentar_feld">'. $lang_artikel_kommentare_kein_kommentar .'</p>'."\n";
}
// Seitennavigation
if($conid)
{
$select = "SELECT
COUNT(`id`)
FROM `artikel_kommentare`
";
$ergebnis = mysql_query($select, $conid);
$zeilen = mysql_fetch_row($ergebnis);
$gesamt_eintraege = $zeilen[0];
$gesamt_seiten = ceil($gesamt_eintraege / 10);
echo ''. $lang_artikel_kommentare_seite .'';
for($i= 1; $i <= $gesamt_seiten; $i++)
{
echo '<a href="'. $_GET['url'] .'?seite='. $i .'">['. $i .']</a> ';
}
}
echo '</div>'."\n";
?>
<!-- Skript-ENDE -->
</form>
Leider wird jedoch beim ändern der Option und betätigen des Sendenbuttons immer ein Fehler ausgegeben (header('Location: '. $_GET['url'] .'?status_update_fehler=1')). Ich gehe davon aus, dass die ID des zu betreffenden Kommentarstatus nicht richtig übergeben wird. Habe jetzt auch schon eine Nacht darüber geschlafen und mich heute erneut versucht, finde aber einfach nicht den Fehler.
Über einen kleinen Hinweis oder Tipp bin ich wirklich froh und dankbar.
Viele Grüße
Marco
p.s.: die $lang_etc. sind ausgelagerte Texte
Zuletzt bearbeitet: