Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Benötige Hilfe beim Anpassen einer Kommentar-Box





Frage

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 [url=http://www.homepage-total.de/php/kommentar-box.php]dieses Script[/url]. Ich möchte es allerding noch etwas anpassen, kenne mich jedoch mit PHP nur sehr mäßig aus. 1. [b]Wie entferne ich den E-Mail-Versand?[/b] 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 [i]/kommentar/kommentar.php[/i]. Diese erzeugt dann im Ordner[i] /kommentar/kommentare/[/i] eine Textdatei mit dem Namen [i]Seitenname.txt[/i]. Daraus ergibt sich ein Problem: Ich arbeite mit etlichen index.php-Dateien: [i]/tipps/ordnervorschaubilder[b]/index.php[/b][/i]; [i]/tipps/youtube-downloaden[b]/index.php[/b][/i] [b]=> Es wird nur eine Datei index.txt erzeugt, weil beide Seiten ja den selben Namen haben. [/b]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: [b][url=http://jaibee.ja.funpic.de/kommentar/kommentar.php]/kommentar/kommentar.php[/url]:[/b] [list][url=http://ubuntuusers.de/paste/18140/]--> Direkt zum Quellcode[/url][/list] [b][url=http://jaibee.ja.funpic.de/kommentar/schreibe.php]/kommentar/schreibe.php[/url]:[/b] [list][url=http://ubuntuusers.de/paste/18141/]--> Direkt zum Quellcode[/url][/list] Gruß Strg_Alt_Entf

Antwort 1 von Strg_Alt_Entf

Wirklich überhaupt keine Idee?
    Es ist vielleicht doch nicht so einfach, da ihr euch in den Quelltext erst einlesen müsstet (hätte ich auch keine Lust ;-))
Wenn es für euch einfacher wäre, könnt ihr auch gerne auf ein anderes Script im Internet verweisen (ohne Werbung, und so, dass man es anpassen darf) oder hier eins posten, falls ihr z.B. selbst eines auf eurer Homepage oder so verwendet.

Viele Grüße und vielen Dank
Strg_Alt_Entf

Antwort 2 von Martina

Hallochen,

wenn du eine mySQL-Datenbank zur Verfügung hast, würde ich lieber die Beiträge dort ablegen und zur Ausgabe für die einzelnen Seiten dann in einer Schleife wieder auslesen.

Du kannst alle Kommentare in eine Datei schreiben. Es wird der letzte Kommentar einfach hinten drangehängt.

in /kommentar/schreibe.php:

$fp = fopen($file,"a+"); 
51   fputs($fp,"<p><b>$Kommentator schrieb am $datum</b>:<br>$Kommentar</p>\n"); 
52   fclose($fp); 

Diese Datei wird dann auf der entsprechenden Seite ausgelesen.

Du könntest dir im Dateinamen auch noch speichern, von welchem Formular der Beitrag gesendet wurde. Dazu müsstest du dir die Dateien /kommentar/kommentar.php und /kommentar/schreibe.php für jedes Formblatt separat abspeichern. und dort den Dateinamen der zu speichernden Datei ändern.

in /kommentar/schreibe.php:
 $file = "kommentare/vonSeite1".$Kdateiname.".txt";



in /kommentar/kommentar.php:

// Dateiname ermitteln (auf Zeile 47)
86  $titel=explode("/","$_SERVER[PHP_SELF]"); 


Ich hoffe, dir damit ein bissel geholfen zu haben.
Wenn du noch Fragen hast, frag ruhig weiter.

LG Martina

Antwort 3 von Strg_Alt_Entf

Danke Martina für deine Antwort.

Leider habe ich von MySQL recht wenig Ahnung (habe nur 1 mal ein mySQL Forum installiert).
Daher weiß ich jetzt nicht, wie und wo ich anfangen soll. Eine neue Datenbank habe ich bereits erstellt, allerdings ohne Inhalt.

Wäre es daher nicht mit PHP einfacher?

Gruß

Antwort 4 von Martina

Hallochen,

du kannst mit php auch auf die einzelnen Tabellen der mySQL-Datenbank zugreifen. Das gilt fürs abspeichern der Daten als auch fürs auslesen.

Ich schreib dir das mal kurz auf:
legst dir in der mySQL-Datenbank eine Tabelle mit dem Namen z.B. KOMMENTAR an. In dieser Tabelle legst du dir Spalten für lfd_nr, datum, kommentar, vonSeite ... an. Die Spalte lfd_nr sollte als Autoindex mit automatischer Erhöhung definiert werden.

function VerbindungHerstellen() {		
// Versuch Datenbankverbindung herzustellen, bei Fehlschlag Ausgabe der Fehlermeldung
	$verbindung = mysql_connect(HOST, BENUTZERNAME, PASSWORT)
	or die ("Fehler - Keine Verbindung (login) möglich");
	
// Auswählen der Datenbank "mySQL-DB"
	$db = mysql_select_db(DATENBANK, $verbindung)
	or die ("Fehler - Keine Verbindung zur Datenbank möglich");
	
// Zugriff auf die Tabelle KOMMENTAR
	$result = mysql_query("SELECT * FROM  KOMMENTAR")
	or die ("Fehler - Keine Verbindung zur Tabelle möglich");
// Systemressourcen wieder freigeben		
	mysql_free_result($result);  }

// neuen Datensatz speichern			
$sql = "INSERT INTO SKBAM_USER (datum,kommentar,vonSeite) VALUES ('$datum','$kommentar','$vonSeite')";	

Dann fügst du an der entsprechenden Stelle auf deiner Seite z.B. noch folgendes ein:

          <table>
                  <!-- Ausgabe der Tabellendaten -->
                  <?PHP	
                   $anzahl = 0;	
/*Ausgabe der Daten aus dem Array $result innerhalb der While-Schleife*/					while ($line = mysql_fetch_array($result)) {
	      if ($line['vonSeite'] == gewünschteSeite) { 
                           $anzahl++; ?>
                     <tr>
                          <td>lfd Nr: <?=$line['lfd_nr']?></td>
                          <td>datum: <?=$line['datum']?></td>
                          <td>Kommentar: <?=$line['kommentar']?></td>
                     </tr>
                          }
                    <?PHP } ?>
            </table>


Ich hoffe, du kommst damit klar. Wenn nicht frag ruhig weiter.

LG Martina

Antwort 5 von Strg_Alt_Entf

Danke, verstehe es noch nicht ganz.

Zitat:
legst dir in der mySQL-Datenbank eine Tabelle mit dem Namen z.B. KOMMENTAR an. In dieser Tabelle legst du dir Spalten für lfd_nr, datum, kommentar, vonSeite ... an. Die Spalte lfd_nr sollte als Autoindex mit automatischer Erhöhung definiert werden.


Bin mir nicht sicher, ob ich es richtig angelegt habe.
>> Hier ist ein Screenshot von PHPadmin.

Den Quellcode den du netterweiße gepostet hast, wo kommt der genau hin? In meine alten Dateien vom Threadbeginn, oder in eine neue Datei.

Wenn ich nämlich eine neue Datei erstelle bekomme ich im Browser immer folgende Meldung:
Parse error: syntax error, unexpected $end in /usr/export/www/vhosts/funnetwork/hosting/jaibee/test/index.php on line 45 (= immer die letzte Zeile)

Das ist der Inhalt:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Kommentar Test-Seite</title>
</head>
<body>
  <?PHP
function VerbindungHerstellen() {      
// Versuch Datenbankverbindung herzustellen, bei Fehlschlag Ausgabe der Fehlermeldung
   $verbindung = mysql_connect(localhost, jaibee_02, ***pwd***)
   or die ("Fehler - Keine Verbindung (login) möglich");
   
// Auswählen der Datenbank "mySQL-DB"
   $db = mysql_select_db(jaibee_02, $verbindung)
   or die ("Fehler - Keine Verbindung zur Datenbank möglich");
   
// Zugriff auf die Tabelle KOMMENTAR
   $result = mysql_query("SELECT * FROM KOMMENTAR")
   or die ("Fehler - Keine Verbindung zur Tabelle möglich");
// Systemressourcen wieder freigeben      
   mysql_free_result($result); }

// neuen Datensatz speichern         
$sql = "INSERT INTO SKBAM_USER (datum,kommentar,vonSeite) VALUES ('$datum','$kommentar','$vonSeite')";  
?>
<p>Kommetar-Box Test-Seite </p>
<table>
<!-- Ausgabe der Tabellendaten -->
<?PHP   
$anzahl = 0;   
/*Ausgabe der Daten aus dem Array $result innerhalb der While-Schleife*/               
	while ($line = mysql_fetch_array($result)) {
    if ($line['vonSeite'] == kommentartest) {
$anzahl++; ?>
<tr>
<td>lfd Nr: <?=$line['lfd_nr']?></td>
<td>datum: <?=$line['datum']?></td>
<td>Kommentar: <?=$line['kommentar']?></td>
</tr>
}
<?PHP } ?>
</table>
</body>
</html>



Danke für die Hilfe

Gruß

Antwort 6 von Martina

Hallochen,

in der Datenbank würde ich mir lfd_nr als Primary anlegen.
Sonst sieht es gut aus.

Versuche es doch dann mal damit:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Kommentar Test-Seite</title>
</head>

<body>
<?PHP
// Versuch Datenbankverbindung herzustellen, bei Fehlschlag Ausgabe der Fehlermeldung
$verbindung = mysql_connect(localhost, jaibee_02, ***pwd***)
or die ("Fehler - Keine Verbindung (login) möglich");

// Auswählen der Datenbank "mySQL-DB"
$db = mysql_select_db(jaibee_02, $verbindung)
or die ("Fehler - Keine Verbindung zur Datenbank möglich");

// Zugriff auf die Tabelle KOMMENTAR
$result = mysql_query("SELECT * FROM KOMMENTAR")
or die ("Fehler - Keine Verbindung zur Tabelle möglich");
?>

<p>Kommetar-Box Test-Seite </p>
<table>
   <!-- Ausgabe der Tabellendaten -->
   <?PHP 
   $anzahl = 0; 
   // Ausgabe der Daten aus dem Array $result innerhalb der While-Schleife
   while ($line = mysql_fetch_array($result)) {
   	if ($line['vonSeite'] == kommentartest) {
   	$anzahl++; ?>
   <tr>
      <td>lfd Nr: <?=$line['lfd_nr']?></td>
      <td>datum: <?=$line['datum']?></td>
      <td>Kommentar: <?=$line['kommentar']?></td>
   </tr>
      <?PHP } 
	} ?>
</table>
<?PHP
// Systemressourcen wieder freigeben 
mysql_free_result($result);
//Datenbank schließen
mysql_close ($db_verbindung);	
?>
</body>
</html>


Dann habe ich noch einen kleinen Fehler bemerkt:
Siehe unterstrichenen Text. Du schreibst kommentartext. Entwerder ist kommentartext eine Variable. Diese musst du dann vorher deklarieren. Dann wird sie so $kommentartext geschrieben. Oder du gibst gleich den richtigen Wert ein. Dann aber eingeschlossen in "kommentartext".

LG Martina

Antwort 7 von Strg_Alt_Entf

Ok, habe es geändert:

Zitat:
// Ausgabe der Daten aus dem Array $result innerhalb der While-Schleife
while ($line = mysql_fetch_array($result)) {
if ($line['vonSeite'] == "kommentartest") {
$anzahl++; ?>


Heißt das dann, das das Kommentar in die Datei kommentartest geschrieben wird? In welchem Ordner liegt diese dann?


Es gibt leider immer noch einen Fehler:
Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource in /usr/export/www/vhosts/funnetwork/hosting/jaibee/test/index.php on line 44
Das fett-geschriebene ist Zeile 44:

Zitat:
<?PHP
// Systemressourcen wieder freigeben
mysql_free_result($result);
//Datenbank schließen
mysql_close ($db_verbindung);
?>


Gruß

Antwort 8 von Martina

Hallochen,

ich habe gerade gesehen, dass du wahrscheinlich noch keine Daten in deiner Tabelle KOMMENTAR zu stehen hast. Es wäre günsig, dort wenigstens einen Datensatz herein zu schreiben. Das kannst du auch erst einmal über phpMyAdmin tun.

Der Kommentar, der vom Nutzer geschrieben wird, wird dann in keine Datei geschrieben, sondern als Datensatz in deine Tabelle KOMMENTAR. Das erfolgt über:
Zitat:
// neuen Datensatz speichern         
$sql = "INSERT INTO SKBAM_USER (datum,kommentar,vonSeite) VALUES ('$datum','$kommentar','$vonSeite')"; 


Hier nun zum Auslesen der Daten aus der mySQL-Datenbank:
Zitat:
// Ausgabe der Daten aus dem Array $result innerhalb der While-Schleife
while ($line = mysql_fetch_array($result)) {
if ($line['vonSeite'] == "kommentartest") {
$anzahl++; ?>


Hier wird mit "kommentartext" die html-Seite gemeint, auf der der Datensatz angezeigt werden soll. Das bedeutet, dass du auf jeder html-Seite eine andere Kennung dafür benutzen musst, wenn du möchtest, dass auf unterschiedlichen Seiten auch unterschiedliche Kommentare stehen.
Wenn du dann immer noch diese Fehlermeldung bekommst, kannst du ja mal versuchen,
Zitat:
 // Datenbank schließen
mysql_close ($db_verbindung); 
wegzulassen.

LG Martina

Antwort 9 von Strg_Alt_Entf

Danke, die Box wird jetzt >> angezeigt.

Habe
Zitat:
// Datenbank schließen
mysql_close ($db_verbindung);

entfernt und auch diese Zeile geändert:
Zitat:
// Ausgabe der Daten aus dem Array $result innerhalb der While-Schleife
while ($line = mysql_fetch_array($result)) {
if ($line['vonSeite'] == $kommentartest) {
$anzahl++; ?>


Jetzt bekomme ich es auch alleine nicht hin, ein Formular zu schreiben, dass die Kommentare erfasst und in die Tabelle schreibt.


Gruß und nochmals vielen Dank!!

Antwort 10 von Martina

Hallochen,

... und so schreibst du die Daten in deine Datenbank:

Du legst dir eine html-Seite an. Sagen wir mal sie heißt seite1.htm.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Kommentar Test-Seite</title>
</head>
<body> 
   <table>
      <tr>
         <td align="right">
            <form method="POST" action="save.php" onSubmit="">
               <table>  	            
                  <tr>
                     <td>Kommentar: 
                     <input type="hidden" name="vonseite" value="zB_Seite1"></td>               
                     <td><textarea name="author" cols="30" rows="5"></textarea></td></tr></table>	
               <br>		
               <input type="submit" 
                      value="Daten speichern" 
                      name="save">	
            </form>
         </td></tr></table>
</body>
</html>

Dann schreibst du in eine php-Datei mit dem Namen save.php folgendes:

<?PHP
	# Eintag übernehmen
		$kommentar = $_POST['kommentar'];
		$vonseite = $_POST['vonseite'];
	
   # aktuelles Datum solltest du in der mySQL-Datenbank so definieren, dass dies automatisch eingetragen wird.		
		
	# Verbindung herstellen
		// Versuch Datenbankverbindung herzustellen, bei Fehlschlag Ausgabe der Fehlermeldung
		$verbindung = mysql_connect(HOST, BENUTZERNAME, PASSWORT)
		or die ("Fehler - Keine Verbindung (login) möglich");
		
		// Auswählen der Datenbank
		$db = mysql_select_db(DATENBANK, $verbindung)
		or die ("Fehler - Keine Verbindung zur Datenbank möglich");
		
		// Zugriff auf die Tabelle "KOMMENTAR"
		$result = mysql_query("SELECT * FROM KOMMENTAR")
		or die ("Fehler - Keine Verbindung zur Tabelle möglich");
				
		mysql_free_result($result);  # Systemressourcen wieder freigeben
		
	# Einträge speichern	(Datum und lfd_nr werden automatisch in die DB eingetragen )
      $sql = "INSERT INTO KOMMENTAR (kommentar,vonseite) 
             VALUES ('$kommentar','$vonseite')";         
      $result = mysql_query($sql);		      
      if($result==1){
         #echo "<br> $result Datensatz abgespeichert<br><br>"; # hier musst du dir noch eine geeignete Ausgabe einfallen lassen
      } else {
         #echo "<br><br>keine Daten abgespeichert<br><br>";	# hier musst du dir noch eine geeignete Ausgabe einfallen
      }
							
	# Datenbankverbindung trennen (oder lässt es wieder weg)
		mysql_close();
		
		include ("seite1.htm");	
?>		


LG Martina

Antwort 11 von Strg_Alt_Entf

Danke für den Quellcode. Vorhin hat es funktioniert - dann hab ich irgendwas verändert (u.a. Feld für Name) und jetzt geht es plötzlich wieder nicht.... Vielleicht findest du ja den Fehler.

index.php (enthält Ausgabe der Kommentare und Formular zum schreiben):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Kommentar Test-Seite</title>
</head>

<body>
<?PHP
// Versuch Datenbankverbindung herzustellen, bei Fehlschlag Ausgabe der Fehlermeldung
$verbindung = mysql_connect(localhost, jaibee_02, *passwort*)
or die ("Fehler - Keine Verbindung (login) möglich");

// Auswählen der Datenbank "mySQL-DB"
$db = mysql_select_db(jaibee_02, $verbindung)
or die ("Fehler - Keine Verbindung zur Datenbank möglich");

// Zugriff auf die Tabelle KOMMENTAR
$result = mysql_query("SELECT * FROM KOMMENTAR")
or die ("Fehler - Keine Verbindung zur Tabelle möglich");
?>

<p>Kommetar-Box Test</p>
<!-- Ausgabe der Tabellendaten -->
<?PHP
$anzahl = 0;
// Ausgabe der Daten aus dem Array $result innerhalb der While-Schleife
while ($line = mysql_fetch_array($result)) {
   if ($line['vonSeite'] == $kommentartest) {
   $anzahl++; ?>
(Nr.: <?=$line['lfd_nr']?>)<b><?=$line['name']?> schrieb am <?=$line['datum']?></b><br><?=$line['kommentar']?><br><br>
<?PHP }
   } ?>
   
<?PHP
	// Systemressourcen wieder freigeben
	mysql_free_result($result);
	//Datenbank schließen
	//mysql_close ($db_verbindung);   
?>
<p>&nbsp;</p>
<p>Kommentar schreiben (Test)</p>
<table style="background-color:#0066CC">
<tr>
<td align="right"><form method="POST" action="save.php" onSubmit="">
<table style="background-color:#FF9900">
<tr>
	<td>Name:<input type="hidden" name="vonseite" value="kommentartest"></td>
	<td><input name="name" type="text" value="" size="20">
</tr>
<tr>
	<td>Kommentar:<input type="hidden" name="vonseite" value="kommentartest"></td>
	<td><textarea name="kommentar" cols="30" rows="5"></textarea>
</td></tr></table>   
<br>      
<input type="submit"
value="Kommentar speichern"
name="save">   
</form></td></tr></table>
</body>
</html>


------------


und save.php:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Kommentar Test-Seite</title>
</head>
<body>
<?PHP
# Eintag übernehmen
$name = $_POST['name'];
$kommentar = $_POST['kommentar'];
$vonseite = $_POST['vonseite'];

# aktuelles Datum solltest du in der mySQL-Datenbank so definieren, dass dies automatisch eingetragen wird.

# Verbindung herstellen
// Versuch Datenbankverbindung herzustellen, bei Fehlschlag Ausgabe der Fehlermeldung
$verbindung = mysql_connect(localhost, jaibee_02, *passwort*)
or die ("Fehler - Keine Verbindung (login) möglich");

// Auswählen der Datenbank
$db = mysql_select_db(jaibee_02, $verbindung)
or die ("Fehler - Keine Verbindung zur Datenbank möglich");

// Zugriff auf die Tabelle "KOMMENTAR"
$result = mysql_query("SELECT * FROM KOMMENTAR")
or die ("Fehler - Keine Verbindung zur Tabelle möglich");

mysql_free_result($result); # Systemressourcen wieder freigeben

# Einträge speichern (Datum und lfd_nr werden automatisch in die DB eingetragen )
$sql = "INSERT INTO KOMMENTAR (name,kommentar,vonseite)
VALUES ('$name','$kommentar','$vonseite',)";
$result = mysql_query($sql);
if($result==1){
#echo "<br> $result Datensatz abgespeichert<br><br>"; # hier musst du dir noch eine geeignete Ausgabe einfallen lassen
} else { echo "Dein Kommentar wurde gespeichert"; }

#echo "<br><br>keine Daten abgespeichert<br><br>"; # hier musst du dir noch eine geeignete Ausgabe einfallen
// } else { echo "Senden des Kommentares fehlgeschlagen"; }

# Datenbankverbindung trennen (oder lässt es wieder weg)
mysql_close();

include ("index.php");
?>
</body>
</html>



Bei 2 Dingen bin ich mir noch nicht sicher, ob ich es richtig gemacht habe:
1. Bestätigung, nach Senden
2. Aktuelles Datum einfügen:
Dafür habe ich im Netz verschieden Möglichkeiten gefunden. Ich habe bei PHPmyadmin dem Feld datum den Typ timestamp und als Standard current_timestamp. Format ist aber nicht so schön.

Vielen Dank und Gruß

Antwort 12 von Martina

Hallochen,

du schreibst:
Zitat:
<input name="name" type="text" value="" size="20">

Ich glaube, das solltest du lieber so schreiben:
<input name="name" type="text" size="20">


Dann sollte es funktionieren.

LG Martina

Antwort 13 von Strg_Alt_Entf

Zitat:
Ich glaube, das solltest du lieber so schreiben:
<input name="name" type="text" size="20">

Danke, aber es geht leider immer noch nicht.

Gruß

Antwort 14 von Martina

Hallochen,

du hattest geschrieben:
Zitat:
Danke für den Quellcode. Vorhin hat es funktioniert - dann hab ich irgendwas verändert (u.a. Feld für Name) und jetzt geht es plötzlich wieder nicht....

Versuche doch mal diesen Zustand wieder herzustellen.
Oder geb mir mal den Link auf deine Seite, Was bekommst du für eine Fehlermeldung?

LG Martina

Antwort 15 von Strg_Alt_Entf

Zitat:
Versuche doch mal diesen Zustand wieder herzustellen.

Habe ich natürlich schon probiert.

Eine Fehlermeldung bekomme ich nicht. Im Gegenteil: Es wird bestätigt, dass das Kommentar erfolgreich gesendet wurde.

>> Hier ist die Seite, um die es geht.

Gruß

Antwort 16 von Martina

Hallochen,

Ich habe es mal ausprobiert. Es wird nach dem Abschicken folgendes angezeigt: Dein Kommentar wurde gespeichert .
Siehe mal hier muss der Fehler sein:

if($result==1) {
#echo "<br> $result Datensatz abgespeichert<br><br>"; # hier musst du dir noch eine geeignete Ausgabe einfallen lassen
} else { echo "Dein Kommentar wurde gespeichert"; }

#echo "<br><br>keine Daten abgespeichert<br><br>"; # hier musst du dir noch eine geeignete Ausgabe einfallen
// } else { echo "Senden des Kommentares fehlgeschlagen"; }


Richtig muss es heißen:

if($result==1) {
     echo "<br> $result Datensatz abgespeichert<br><br>";
     echo "Dein Kommentar wurde gespeichert"; 
     
} else {  
     echo "<br><br>keine Daten abgespeichert<br><br>";     
     echo "Dein Kommentar wurde nicht gespeichert"; 
}

Zur Kontrolle könntest du ja noch unter
# Eintag übernehmen
    $name = $_POST['name'];
$kommentar = $_POST['kommentar'];
$vonseite = $_POST['vonseite'];

folgendes einfügen:
print_r ("<br>name: ". $name. " * kommentar: ".$kommentar. " * vonseite: ".$vonseite);


LG Martina

Antwort 17 von Strg_Alt_Entf

Danke
Zitat:
Richtig muss es heißen:

if($result==1) {
echo "<br> $result Datensatz abgespeichert<br><br>";
echo "Dein Kommentar wurde gespeichert";

} else {
echo "<br><br>keine Daten abgespeichert<br><br>";
echo "Dein Kommentar wurde nicht gespeichert";
}


Jetzt wird immerhin angezeigt, dass es nicht geht.


Zitat:
Zur Kontrolle könntest du ja noch unter
# Eintag übernehmen
$name = $_POST['name'];
$kommentar = $_POST['kommentar'];
$vonseite = $_POST['vonseite'];

folgendes einfügen:
print_r ("<br>name: ". $name. " * kommentar: ".$kommentar. " * vonseite: ".$vonseite);

Entschuldigung, dummer Frage, aber wie muss ich es drunter setzen? Einfach reinkopieren geht ja nicht, da noch irgendwelche Tags fehlen..

Gruß

Antwort 18 von Martina

Hallochen,

kannst statt print_r() auch echo nehmen.

Eigentlich sollte da nichts fehlen,
Dir sollen dann die übergebenen Werte für $name, $kommentar und $vonseite angezeigt werden .

schreibst also so:

# Eintag übernehmen
$name = $_POST['name'];
$kommentar = $_POST['kommentar'];
$vonseite = $_POST['vonseite'];
# Ausgabe der Werte zum Test
print_r ("<br>name: ". $name. " * kommentar: ".$kommentar. " * vonseite: ".$vonseite);


Ab hier geht der Quellcode wie gehabt weiter.

LG Martina

Antwort 19 von Strg_Alt_Entf

Ok die Probe klappt jetzt. Also liegt es irgendwie am schrieben in die DB.

Ich habe nochmal einen >> Screenshot von PHPmyAdmin gemacht. und hier
>> die Seite mit dem Kommentar.

Ich weiß wirklich nicht, wo das Problem liegt. Zugangsdaten habe ich auch schon überprüft.
Habe noch den >> Quellcode von save.php und den >> Quellcode von index.php hochgeladen.

Vielleicht siehst du (oder jmd. anderes) den Fehler.

Vielen Dank und Gruß

Antwort 20 von Martina

Hallochen,

du schreibst in Zeile 36 deiner save.php:
Zitat:
VALUES ('$name','$kommentar','$vonseite',)";


richtig muss es heißen:
VALUES ('$name','$kommentar','$vonseite')";


Kannst es ja noch mal versuchen.

LG Martina

Antwort 21 von Strg_Alt_Entf

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

Antwort 22 von 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 ;-))

Antwort 23 von Strg_Alt_Entf

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

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

Antwort 25 von Strg_Alt_Entf

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
	$result = mysql_query("SELECT * FROM KOMMENTAR ORDER BY lfd_nr DESC")
	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

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

Antwort 27 von Strg_Alt_Entf

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

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

Antwort 29 von Strg_Alt_Entf

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

Hallochen!

Welches Datum ist in deiner Datenbank gespeichert? Schreibe es mal im genauen Format auf.

LG Martina

Antwort 31 von Strg_Alt_Entf

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

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

Antwort 33 von Strg_Alt_Entf

Super, es geht. Muss es jetzt nur noch richtig anordnen!

Vielen Dank

Antwort 34 von Martina

Das freut mich.
Wünsche dir dann noch viel Spaß.

LG Martina
http://www.top-hp.de

Antwort 35 von Strg_Alt_Entf

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

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

Antwort 37 von Strg_Alt_Entf

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'] == $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ß

Antwort 38 von Strg_Alt_Entf

Ich habe den fetten Teil auch angepasst.
Wenn er fett wäre... ich meinte diesen Teil:

if ($line['[b]vonseite'] == $vonseite) {


Antwort 39 von Strg_Alt_Entf

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

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

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: