Benötige Hilfe beim Anpassen einer Kommentar-Box
Hallo,
ich stehe mit meiner Homepage wieder einmal vor einem Problem.
Ich möchte meinen Besuchern die Möglichkeit geben, auf bestimmten Seiten direkt ein Kommentar zu schreiben.
Dazu verwende ich
dieses Script. Ich möchte es allerding noch etwas anpassen, kenne mich jedoch mit PHP nur sehr mäßig aus.
1.
Wie entferne ich den E-Mail-Versand? Ich möchte nicht, dass ich jedes Kommentar bestätigen muss, da es sowieso nicht richtig funktioniert.
Wenn die Besucher auf Abschicken klicken, soll ihr Text direkt in der Kommentarbox erscheinen.
2. Ich verwende das Script auf mehreren Unterseiten und include jedes Mal die Datei
/kommentar/kommentar.php.
Diese erzeugt dann im Ordner
/kommentar/kommentare/ eine Textdatei mit dem Namen
Seitenname.txt.
Daraus ergibt sich ein Problem: Ich arbeite mit etlichen index.php-Dateien:
/tipps/ordnervorschaubilder/index.php;
/tipps/youtube-downloaden/index.php=> Es wird nur eine Datei index.txt erzeugt, weil beide Seiten ja den selben Namen haben. Aber es sollen ja verschiedene Textdateien für verschiedene Seiten erstellt werden.
Habt ihr eine Idee?
So, wenn ihr bis jetzt noch mitgekommen seid, hier der Code:
/kommentar/kommentar.php:/kommentar/schreibe.php:Gruß Strg_Alt_Entf
Antwort schreiben
Klasse es funktioniert! Hätte nicht gedacht, dass ein Koma so etwas auslösen kann.
Vielen Dank für deine ganzen Ratschläge und die Geduld!!
Gruß Strg+Alt+Entf
oh, ich sehe gerade, dass mir bei Antwort 21 ein lustiger Tippfehler unterlaufen ist...
Es heißt natürlich "Komma" und nicht Koma (wäre nicht gut ;-))
Habe doch noch zwei Fragen:
1. Wie kann ich die Reihenfolge ändern - so, dass der neueste Beitrag immer oben steht?
2. Ich bekomme einfach die Formatierung des Datums nicht hin (bekomme entweder die aktuelle Uhrzeit, oder 1970). Ich benötige aber das Datum des Kommentares im Format DD.MM.JJJJ.
Kannst du mir da bitte helfen?
Gruß
Antwort 24 von Martina vom 22.11.2019, 21:41 Options
Hallochen,
zu Frage 1:--> schreibst in deiner index.php// Zugriff auf die Tabelle KOMMENTAR
$result = mysql_query("SELECT * FROM KOMMENTAR WHERE lfd_nr ORDER BY DESC")
or die ("Fehler - Keine Verbindung zur Tabelle möglich");
?>
Dann erhällst du deinen letzten Eintrag als Erstes angezeigt.
zu Frage 2:$sec = $datum['seconds'];
$min = $datum['minutes'];
$stunde = $datum['hours'];
$tag = $datum['mday'];
$monat = $datum['mon'];
$jahr = $datum['year'];
$wochentag = $datum['weekday'];
Nutzt dir das was? Kommst du damit klar?
LG Martina
Danke.
Zitat:
// Zugriff auf die Tabelle KOMMENTAR
$result = mysql_query("SELECT * FROM KOMMENTAR WHERE lfd_nr ORDER BY DESC")
or die ("Fehler - Keine Verbindung zur Tabelle möglich");
?>
Es geht jetzt, wenn auch etwas abgeändert (bekam sonst immer Fehler:
"Fehler - Keine Verbindung zur Tabelle möglich"):
// Zugriff auf die Tabelle KOMMENTAR
[b] $result = mysql_query("SELECT * FROM KOMMENTAR ORDER BY lfd_nr DESC")[/b]
or die ("Fehler - Keine Verbindung zur Tabelle möglich");
Zitat:
zu Frage 2:
$sec = $datum['seconds'];
$min = $datum['minutes'];
$stunde = $datum['hours'];
$tag = $datum['mday'];
$monat = $datum['mon'];
$jahr = $datum['year'];
$wochentag = $datum['weekday'];
Nutzt dir das was? Kommst du damit klar?
Bekomme das 2te nicht korrekt eingebunden. Habe schon einiges ausprobiert, jedoch wird es immer ignoriert (also nichts angezeigt)
Gruß
Antwort 26 von Martina vom 23.11.2019, 15:20 Options
Hallochen,
du schreibst:
Zitat:
Bekomme das 2te nicht korrekt eingebunden. Habe schon einiges ausprobiert, jedoch wird es immer ignoriert (also nichts angezeigt)
Schreibe doch mal, wie und wo du das eingebunden hast.
LG Martina
Zitat:
Schreibe doch mal, wie und wo du das eingebunden hast.
Kann ich machen, ich hatte jeoch verschiedene Möglichkeiten durchprobiert.
Hier mal eine:
// Ausgabe der Daten aus dem Array $result innerhalb der While-Schleife
while ($line = mysql_fetch_array($result)) {
if ($line['vonSeite'] == $kommentartest) {
$anzahl++; ?>
<b><?=$line['name']?></b> schrieb
am <?=$sec = $datum['seconds'];
$min = $datum['minutes'];
$stunde = $datum['hours'];
$tag = $datum['mday'];
$monat = $datum['mon'];
$jahr = $datum['year'];
$wochentag = $datum['weekday'];
$line['datum']?>:<br>
<i><?=$line['kommentar']?></i><br><br>
Antwort 28 von Martina vom 23.11.2019, 15:44 Options
Hallochen,
dann versuche es mal so:
// Ausgabe der Daten aus dem Array $result innerhalb der While-Schleife
while ($line = mysql_fetch_array($result)) {
if ($line['vonSeite'] == $kommentartest) {
$anzahl++; ?>
<b><?=$line['name']?></b> schrieb
am <? $datum=$line['datum'];?><br>
sec: <?= $datum['seconds'];?><br>
min: <?= $datum['minutes'];?><br>
stunde: <?= $datum['hours'];?><br>
tag: <?= $datum['mday'];?><br>
monat: <?= $datum['mon'];?><br>
jahr :<?= $datum['year'];?><br>
wochentag: <?= $datum['weekday'];?><br>
<i><?=$line['kommentar']?></i><br><br>
LG Martina
Habe es 1zu1 übernommen, doch auf der Seite sieht es jetzt so aus:
Zitat:
xcvxcv schrieb am
sec: 2
min: 2
stunde: 2
tag: 2
monat: 2
jahr :2
wochentag: 2
xvbxcvxcv
Wo die 2er herkommen weiß ich nicht.
Antwort 30 von Martina vom 23.11.2019, 16:15 Options
Hallochen!
Welches Datum ist in deiner Datenbank gespeichert? Schreibe es mal im genauen Format auf.
LG Martina
wie bekomme ich das heraus? wenn ich bei PHPmyadmin schaue, steht in der Spalte datum beispielsweise das: 2007-11-23 15:44:38
Gruß
Antwort 32 von Martina vom 23.11.2019, 16:28 Options
Hallochen,
Zitat:
2007-11-23 15:44:38
das ist doch super.
Das heißt
Datum: 23.11.2007
Zeit: 15:44 Uhr und 38sec
Zum Auslesen kannst du ja auch noch folgendes versuchen:
// Ausgabe der Daten aus dem Array $result innerhalb der While-Schleife
while ($line = mysql_fetch_array($result)) {
if ($line['vonSeite'] == $kommentartest) {
$anzahl++; ?>
<b><?=$line['name']?></b> schrieb
am <? $datum=$line['datum'];?><br>
sec: <?=substr($line[datum],17,2);?><br>
min: <?=substr($line[datum],14,2);?><br>
stunde: <?=substr($line[datum],11,2);?><br>
tag: <?=substr($line[datum],8,2);?><br>
monat: <?=substr($line[datum],5,2);?><br>
jahr :<?=substr($line[datum],0,4);?><br>
<i><?=$line['kommentar']?></i><br><br>
LG Martina
Super, es geht. Muss es jetzt nur noch richtig anordnen!
Vielen Dank
Beim Einbinden des Formulares in eine Seite hat sich ein weiteres Problem ergeben:
Es werden alle Kommentare ausgegeben/angezeigt, obwohl nur Kommentare vonseite="xyz" erscheinen sollen.
Gruß
Antwort 36 von Martina vom 26.11.2019, 20:03 Options
Hallochen,
du musst mal sehen, was in deiner Tabelle unter vonseite steht. Hier sollte für Einträge unterschiedlicher Seiten auch was unterschiedliches stehen.
Dann liest du folgendes aus:
$vonseite="vonSeite1"; # liest alle Datensätze von Seite 1
// Ausgabe der Daten aus dem Array $result innerhalb der While-Schleife
while ($line = mysql_fetch_array($result)) {
if ($line['vonSeite'] == $vonseite) {
...
Für anderere Seiten nimmst du dann die entsprechende Seite, die ausgelesen werden soll. Du musst natürlich auch die richtige Seite beim Abspeichern einsetzen. Hier im Beispiel müsste es dann so heißen:
$vonseite = "vonSeite1"; # wird zum speichern der Datensätze von Seite 1 benutzt
# Einträge speichern (Datum und lfd_nr werden automatisch in die DB eingetragen )
$sql = "INSERT INTO KOMMENTAR (name,kommentar,vonseite)
VALUES ('$name','$kommentar','$vonseite',)";
Ist das einigermaßen verständlich ausgedrückt?
LG Martina
Naja es ist mir schon klar, dass ich die Angaben anpassen muss. Hatte ich auch bereits gemacht, aber es funktioniert irgendwie trotzdem nicht.Habe gerade noch einmal rumprobiert und habe den Fehler gefunden:
Zitat:
$vonseite="downloaden"; # HIER anpassen, welche Datensätze ausgelesen werden sollen (und in Zeile 20!)
// Ausgabe der Daten aus dem Array $result innerhalb der While-Schleife
while ($line = mysql_fetch_array($result)) {
if ($line['[b]vonseite[/b]'] == $vonseite) {
Ich habe den fetten Teil auch angepasst. Den muss man aber lassen.
Aber ohne deine Hilfe hätte ich es nicht hinbekommen, da die erste Zeile (vom Code oben) gefehlt hat.
Danke, danke, danke!
- - - - - - - - - - - - - - - - - - - -
$vonseite = "vonSeite1"; # wird zum speichern der Datensätze von Seite 1 benutzt# Einträge speichern (Datum und lfd_nr werden automatisch in die DB eingetragen )
$sql = "INSERT INTO KOMMENTAR (name,kommentar,vonseite)
VALUES ('$name','$kommentar','$vonseite',)";
Ich glaube, man kann den Anfangsteil weglassen. Ist zumindest bei mir so ;-)
Gruß
[/quote]Ich habe den fetten Teil auch angepasst.
Wenn er fett wäre... ich meinte diesen Teil:
if ($line['[b]vonseite[/b]'] == $vonseite) {
formatieren funktioniert nicht bei Code-Teilen. Ich sollte die Vorschaufunktion von Supportnet benutzen.
Aber du weißt ja vermutlich jetzt was ich meine.
Antwort 40 von Martina vom 27.11.2019, 06:30 Options
Hallochen,
du kannst aber auch statt:
$vonseite = "vonSeite1"; # wird zum speichern der Datensätze von Seite 1 benutzt
ein Hidden-Feld auf deiner HTML-Seite mit dem Namen "vonseite" einfügen. Als Value gibst du dann "vonSeite1" ein. Also so:
<input type="hidden" name="vonseite" value="vonSeite1">
Diesen Wert liest du dann auch mit $_POST ein, genau wie den Kommentar usw.
Vorteil ist hierbei, dass du nur eine Datei "save.php" benötigst.
LG Martina