Hallo,
ich habe jetzt die Kommentarfunktion schon fast fertig, habe nur noch 2 Probleme, und zwar wenn ich einen Kommentar schreibe und auf eintragen klicke muss ich die seite erst wieder neu laden um den kommentar dann unter dem Bild zu sehen.
Da dachte ich mir ich versuche es mit der javascript Methode reload, also habe ich in das html Formular die onclick funktion integriert:
<input type="submit"
onclick="javascript:location.reload()" name="formaction" value="Eintragen" />
Jetzt ist es jedoch so das wenn ich nach dem ersten Aufruf der Seite einen Kommentar schreiben möchte ich trotzdem nochmal die Seite aktualisieren muss um den Kommentar zu sehen, jedoch danach beim 2. 3. .... Kommentar wird die seite automatisch neu geladen.
Habt ihr eine Idee wie ich das Problem lösen kann?
Das zweite Problem ist das ich jetzt 2 mal auf ein Thumbnailbild klicken muss damit das Bild unten in Groß angezeigt wird, habt ihr eine Idee an was das liegen kann?
Hier der Code (KommentarFormular.html):
HTML-Code:
<form action="testgalerie2.php" method="post">
<fieldset>
<legend>Kommentar hinzufügen</legend>
<label>Name:<br> <input type="text" name="Autor" /></label><br>
<label>Text:<br> <textarea name="Inhalt" rows="6" cols="40"></textarea></label><br>
<label>5+2:<br> <input type="text" name="Antwort"/></label><br><br>
<input type="submit" onclick="javascript:location.reload()" name="formaction" value="Eintragen" /><br>
</fieldset>
</form> und hier der Code von der Galerie(testgalerie2.php):
PHP-Code:
<html>
<head><title>Testgalerie</title>
<script type="text/javascript">
function change_pic(picture) {
document.bild.src=picture;
}
</script>
</head>
<body>
<?php
//-------------------------------------------Datenbankverbindung----------------------------------
$db = new mysqli('localhost', '******', '******','*****'); //Datenbank verbindung Aufbauen
if (mysqli_connect_errno()) {
die('Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')');
}
//-------------------------------------------Datenbankverbindung Ende-----------------------------
//----------------------------------------Verzeichnis öffnen--------------------------------------
$verz=opendir("./gallery/out");//Name des Verzeichnisses angeben, welches geöffnet werden soll
//----------------------------------------Verzeichnis öffnen--------------------------------------
//-------------------------------------Variablen Deklaration--------------------------------------
$linkl = array ("0");
$filename = "test.php";
$i=1;
$showPic = array ("test");
//-------------------------------------Variablen Deklaration Ende---------------------------------
//--------------------------------------Verzeichnis auslesen--------------------------------------
while ($file = readdir ($verz))
{
if($file != "." && $file != ".." && $file != $filename)
{ $result = $db->query('SELECT ID FROM Bilder WHERE Bild ="'.$file.'" ');
$ID=$result->fetch_assoc(); //ID zum Bild feststellen
array_push($showPic,$file); //Anzeigebildarray mit Bildern füllen
array_push ($linkl,"<td valign='bottom'><a href='testgalerie2.php?id=".$ID['ID']."#' onclick=\"change_pic('./gallery/skate/".$file."')\"><img src='./gallery/out/".$file."' width='100' height='100'></a></td>");
} $i++;//if-Abfrage ende
} //while Ende
$result->close();
//--------------------------------------Verzeichnis auslesen Ende---------------------------------
$anzahl = count($linkl); // Es wird gezählt wieviele Elemente im Array sind
sort ($linkl); // Array wird alphabetisch sortiert
//--------------------------------------Thumbnails anzeigen---------------------------------------
// In dieser for-Schleife werden alle
// Arrayelemente ausgegeben
// jeweils nach 4 Bildern einen Zeilenumbruch
echo "<table cellpadding='6' cellspacing='6' border='0' align='center'><tr>";
for($x = 1; $x <= $anzahl; $x++)
{
$y=($x-1)%4;
if($y==0){
echo "</tr><tr>".$linkl[$x];
}
else{
echo $linkl[$x];
}
}//for-Schleife Ende
echo "</tr></table>";
echo "<img src='./gallery/skate/".$showPic[1]."' id='bild' width='300' height='300'>"; // Anzeigebild
closedir($verz); // Verzeichnis geschlossen
//-----------------------------------------Thumbnails anzeigen Ende----------------------------------
readfile('KommentarFormular.html'); //Formular um Kommentare zu schreiben einfügen-------------------
//-----------------------------------------Kommentare zu BildID auslesen und anzeigen----------------
$result = $db->query('SELECT * FROM Kommentare WHERE BilderID="'.$_GET[id].'" ORDER BY Datum ');
if ($result->num_rows>=1) {
while ($row = $result->fetch_assoc()) {
echo '<div class="kommentar">'."\n";
echo ' <span class="autor"><b>Autor:</b> '.htmlspecialchars($row['Autor'])."<br></span>\n";
echo ' <span class="datum"><b>Datum:</b> '.$row['Datum']."<br></span>\n";
echo " <p>\n<b>Text:</b><br>";
echo nl2br(htmlspecialchars(preg_replace('~\S{30}~', '\0 ', $row['Inhalt'])));
echo " </p>\n";
echo "</div>\n";
}
}
//-----------------------------------------Kommentare zu BildID auslesen und anzeigen Ende-------------
//-----------------------------------------Kommentare einfügen-----------------------------------------
if ('POST' == $_SERVER['REQUEST_METHOD']) {
if (!isset($_POST['Autor'], $_POST['Inhalt'], $_POST['Antwort'], $_POST['formaction'])) {
die ('Benutzen sie nur Formulare von der Homepage.');
}
if (('' == $autor = trim($_POST['Autor'])) or
('' == $inhalt = trim($_POST['Inhalt'])) or
('' == $antwort = trim($_POST['Antwort']))) {
die ('Bitte füllen sie das Formular vollständig aus.');
}
if ('7' != $antwort) { // Frage
die ('Sie müssen die Frage richtig beantworten.');
}
$sql = 'INSERT INTO
Kommentare(Autor, Datum, Inhalt)
VALUES
(?, NOW(), ?)';
$stmt = $db->prepare($sql);
if (!$stmt) {
die ('Es konnte kein SQL-Query vorbereitet werden: '.$db->error);
}
$stmt->bind_param('ss', $autor, $inhalt);
if (!$stmt->execute()) {
die ('Query konnte nicht ausgeführt werden: '.$stmt->error);
}
//header('testgalerie2.php');
//echo '<p class="info">Kommentar hinzugefügt. <a href="testgalerie2.php">Zurück zur Bildergalerie</a>.</p>';
}
//-----------------------------------------Kommentare einfügen Ende------------------------------------
?>
</body>
</html>
Gruß Marco