Zum Inhalt springen

Gästebuch mit mysql und php


Empfohlene Beiträge

Hallo Leute !

Ich habe versucht ein Gästebuch zu erstellen aber irgendwie klappt das nicht.

Ich habe mit phpmyadmin eine Tabelle in einer Datenbank erstellt und dann mit vi diese phpseite:

<html>

<head><title>gaestebuch</title></head>

<body bgcolor="3333FF" text="FFFFFF">

<?php

define ( 'MYSQL_HOST', 'localhost' );

define ( 'MYSQL_BENUTZER', 'root' );

define ( 'MYSQL_KENNWORT', '' );

define ( 'MYSQL_DATENBANK', 'homepageanwendungen' );

$db_link = @mysql_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);

if ( ! $db_link )

$db_sel = mysql_select_db( MYSQL_DATENBANK )

or die("Auswahl der Datenbank fehlgeschlagen");

$sql = "SELECT*FROM Gaestebuch

ORDER BY datum";

$db_erg = mysql_query( $sql );

if (! $db_erg)

{

die('Ungültige Abfrage:' . mysql_error());

}

$anzahl_eintraege = mysql_num_rows($db_erg);

echo "<p>Anzahl der Gästebuch-Einträge: $anzahl_eintraege </p>";

?>

</html>

Ich möchte, dass mir erstmal nur die Anzahl der Einträge angezeigt wird aber er zeigt mir immer den Fehler: Ungültige Abfrage: no database selectet. Habe jetzt versucht den Fehler zu beheben aber egal was ich mache, es funktioniert einfach nicht. :(

Kann mir irgendjemand weiterhelfen ??

Danke schonmal

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also du solltest die Datenbank zählen lassen "Select count(*)". Dein mysql_select_db liefert Dir ein Handle für die Verbindung zurück, das Du an mysql_query übergeben kannst (gleiches gilt für das Handle von mysql_connect).

Ich schätze einmal, dass die Zuordnung über welche Verbindung die Anweisungen ausgeführt werden, nicht korrekt sind. Weiterhin solltest Du Dich entscheiden ob Du mit if-then Deine Handles prüft oder mit einem die() direkt abbrichst. Es sollte konsistent sein.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...

Hey,

Danke für die schnelle Antwort aber jetzt hab ich neue Probleme.

Also an sich funktioniert jetzt alles, wenn ich die php seite mit localhost/gaestebuch.php aufrufe, dann sehe ich das Gästebuch und kann auch einträge machen.

Wenn ich jetzt einen Eintrag mache werden aber direkt zwei einträge gespeichert.

Ein leerer und der richtige, den ich grade gemacht habe.

Was soll das ?

Mein zweites problem ist, das wenn ich auf meiner Homepage auf gästebuch klicke, die fehlermeldung: "Fehler: Datei nicht gefunden" angezeigt wird.

er zeigt mir auch einen ganz falschen pfad an wo er die seite sucht.

Ich muss die phpseite aber in einen bestimmten ordner speichern, da ich sie sonst mit localhost nicht anzeigen kann.

Weis irgenwer wie ich das hin kriege ?

Danke schonmal

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ein leerer und der richtige, den ich grade gemacht habe.

Was soll das ?

Woher soll das jemand wissen, wenn Du den (relevanten) Code nicht zeigst !?

Mein zweites problem ist, das wenn ich auf meiner Homepage auf gästebuch klicke, die fehlermeldung: "Fehler: Datei nicht gefunden" angezeigt wird.

er zeigt mir auch einen ganz falschen pfad an wo er die seite sucht.

Ohne Code, keine Möglichkeit etwas zu sagen, ich tippe darauf, dass eben das HTML Dokument, dass das Skript aufruft falsch ist, sprich der Link ist falsch

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das ist der Quelltext von der php seite, auf der man die einträge macht:

<html>

<head><title>Eintrag</title></head>

<body>

<form name="" action="<?php echo $_SERVER['PHP_SELF']; ?>"

method="POST" enctype="text/html">

<p>Ihr Name:<br />

<input type="text" name="Name" value="" size="50" maxlength="150" />

</p>

<p>Gaestebucheintrag:<br />

<textarea name="Text" rows="10" cols="50"></textarea>

</p>

<input type="Submit" name="" value="speichern" />

</form>

<?php

$sql = " INSERT INTO Gaestebuch ";

$sql .= " SET ";

$sql .= " Name ='". $_POST['Name'] ."', ";

$sql .= " Datum ='". date("Y-m-d H:i:s") ."', ";

$sql .= " Text='". $_POST['Text'] ."' ";

define ( 'MYSQL_HOST', 'localhost' );

define ( 'MYSQL_BENUTZER', 'root' );

define ( 'MYSQL_KENNWORT', '' );

define ( 'MYSQL_DATENBANK', 'homepageanwendungen' );

$db_link = @mysql_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);

if ( ! $db_link )

$db_sel = mysql_select_db( MYSQL_DATENBANK )

or die("Auswahl der Datenbank fehlgeschlagen");

$db_erg = mysql_query( $sql );

if ( ! $db_erg )

{

die('Ungültige Abfrage: ' . mysql_error());

}

echo '<p><a href="gaestebuch.php">Gästebuch anzeigen</a></p>';

exit;

// variablen bereinigen

array_walk ( $_POST, 'eingabebereinigen' );

array_walk ( $_GET, 'eingabebereinigen' );

array_walk ( $_REQUEST, 'eingabebereinigen' );

function eingabebereinigen(&$value, $key)

{

$value = htmlspecialchars($value, ENT_QUOTES);

$value = trim($value);

}

?>

</body>

</html>

Das ist der Quelltext von meinem Gästebuch :

<html>

<head><title>gaestebuch</title></head>

<body bgcolor="3333FF" text="FFFFFF">

<?php

define ( 'MYSQL_HOST', 'localhost' );

define ( 'MYSQL_BENUTZER', 'root' );

define ( 'MYSQL_KENNWORT', '' );

define ( 'MYSQL_DATENBANK', 'homepageanwendungen' );

$db_link = @mysql_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);

if ( ! $db_link )

{

die ('keine Verbindung zur Zeit möglich - später probieren ');

}

$db_sel = mysql_select_db( MYSQL_DATENBANK )

or die("Auswahl der Datenbank fehlgeschlagen");

$sql = "SELECT*FROM Gaestebuch

ORDER BY datum";

$db_erg = mysql_query( $sql );

if ( ! $db_erg )

{

die('Ungültige Abfrage: ' . mysql_error());

}

$anzahl_eintraege = mysql_num_rows($db_erg);

echo "<p>Anzahl der Gästebuch-Einträge: $anzahl_eintraege </p>";

while ($daten = mysql_fetch_array( $db_erg, MYSQL_ASSOC))

{

echo "ID: ";

echo $daten['ID'];

echo "<br />";

echo "Name: ";

echo $daten['Name'];

echo "<br />";

echo "Datum: ";

echo $daten['Datum'];

echo "<br />";

echo "Gästebucheintrag: ";

echo $daten['Text'];

echo "<br />";

}

mysql_free_result( $db_erg );

?>

</body>

</html>

Auf meiner Homepage habe ich auf einer Seite diesen link :

<p><a href="gaestebuch.php"TARGET="rechts"><img src="gb.bmp"></a><br></p>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bitte verwende Code-Tages, der Code lässt sich so schlecht lesen !

Dein PHP Script lässt sich leicht korrumpieren, da die Eingaben, die in das SQL Statement übernommen werden ungefilter / ungeprüft eingehen.

Der Syntax für das SQL Statement ist meiner Ansicht nicht ganz korrekt MySQL :: MySQL 5.1 Reference Manual :: 12.2.5 INSERT Syntax

Die Methode zum bereinigen ist aus meiner Sicht völlig überflüssig, da sie für das Script oder die Daten keinen Einfluss hat. Sie wird zum Ende einmal ausgeführt und vorher wird das Script via Exit eh beendet.

Das mehrfache Eintragen wird daher kommen, dass bei jedem Aufruf des Scriptes ein Insert statt findet, d.h. auch wenn kein Formular abgesendet wurde. Sprich sobald die PHP Datei aufgerufen wird, erfolgt der Insert. Gleichzeitig lässt das Einfügen von leeren Datensätzen darauf schließen, dass Dein Tabellenlayout ziemlich schlecht ist, denn Datensätze mit NULL sollten nicht eingefügt werden können.

Zu der fehlerhaften Verlinkung sind die Informationen nicht ausreichend. Das Script muss passend (relativ) verlinkt werden. Weiterhin lässt Dein HTML Excerpt darauf schließen, dass Du Frames verwendest. Dies solltest Du aus mehreren Gründen nicht mehr machen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...