azubi1 Geschrieben 14. Oktober 2010 Teilen Geschrieben 14. Oktober 2010 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 14. Oktober 2010 Teilen Geschrieben 14. Oktober 2010 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
azubi1 Geschrieben 26. Oktober 2010 Autor Teilen Geschrieben 26. Oktober 2010 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 26. Oktober 2010 Teilen Geschrieben 26. Oktober 2010 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
azubi1 Geschrieben 26. Oktober 2010 Autor Teilen Geschrieben 26. Oktober 2010 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> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 26. Oktober 2010 Teilen Geschrieben 26. Oktober 2010 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.