• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Kleines Gästebuch

Wikinger75

Neues Mitglied
Hey Leute!
Ich habe grad ein kleines GB geschrieben.
Am anfang gings noch, aber das habe ich 2mal die Datenbank geöffnet und geschlossen. Um, dass aber profesioneller zu machen will ich sie nur einmal öffnen und erst am ende schließen, doch da macht er nicht mit.

Mein Code:
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
  <head>
    <title>Das MiniGästebuch</title>
    
    <style type="text/css"><!--
      body { background:#333333; text-align:center; }
      div#Eintragungs-Bereich { color:#FFFFFF; background:#333333; }
      div#Ausgabe-Bereich { color:#FF0000; background:#333333; }
      
      .FormularItem { margin:10px; }
    /*-->*/</style>
    
  </head>

  <body>
    <div id="Eintragungs-Bereich">
      <?php
        if(isset($_POST["Sender"]))
        {
          $Name = $_POST["Name"];
          $Nachricht = $_POST["Nachricht"];
          
          ?>
          <form action="MiniGaestebuch.php" method="post">
            <div class="FormularItem">Name : <input type="text" name="Name" value="<?php echo $Name; ?>" /></div>
            <div class="FormularItem">Nachricht : <textarea name="Nachricht"><?php echo $Nachricht; ?></textarea></div>
            <div class="FormularItem"><input type="submit" name="Sender" value="Senden" /></div>
          </form>
          <?php
          // Mit MySQL Datenbank verbinden.
          $DB_Server = mysql_connect("localhost","root","");
          if(!$DB_Server) { die("DB-Serververbindung fehlgeschlagen!"); }
          
          // Datenbank auswählen.
          $DB = mysql_select_db("gästebücher",$DB_Server);
          if(!$DB) { die("DB-Datenbankverbindung fehlgeschlagen!"); }
          
          // In die Tabelle (mini_gästebuch) von der Datenbank schreiben.
          $SQL_Write = "INSERT INTO mini_gästebuch (Name,Nachricht) VALUES ('$Name','$Nachricht')";
          $DB_Tabelle = mysql_query($SQL_Write);
          if(!$DB_Tabelle) { die("SQL-Abfrage fehlgeschlagen!"); }
        }
        else
        {
          ?>
          <form action="MiniGaestebuch.php" method="post">
            <div class="FormularItem">Name : <input type="text" name="Name" /></div>
            <div class="FormularItem">Nachricht : <textarea name="Nachricht"></textarea></div>
            <div class="FormularItem"><input type="submit" name="Sender" value="Senden" /></div>
          </form>
          <?php
        }
      ?>
    </div>
    <hr />
    <div id="Ausgabe-Bereich">
      <?php
        // Aus der Tabelle (mini_gästebuch) lesen.
        $SQL_Read = "SELECT * FROM mini_gästebuch";
        $DB_Tabelle = mysql_query($SQL_Read);
        if(!$DB_Tabelle) { die("SQL-Abfrage fehlgeschlagen!"); }
        
        // Datensätze der Tabelle (mini_gästebuch) ausgeben.
        while( $Datensatz = mysql_fetch_assoc($DB_Tabelle) )
        {
          print "Name: ";
          print $Datensatz["Name"]." | ";
          print "Nachricht: \"";
          print $Datensatz["Nachricht"];
          print "\"";
          print "<br />";
        }
        
        // MySQL verbindung trennen!
        mysql_close($DB_Server);
      ?>
    </div>
  </body>
</html>
Fehlermeldungen:
Warning: mysql_query() [webhosting24 - Login]: Access denied for user 'ODBC'@'localhost' (using password: NO) in F:\Progger's Server\htdocs\X-Lernpfad\MiniGaestebuch\MiniGaestebuch.php on line 61

Warning: mysql_query() [webhosting24 - Login]: A link to the server could not be established in F:\Progger's Server\htdocs\X-Lernpfad\MiniGaestebuch\MiniGaestebuch.php on line 61
SQL-Abfrage fehlgeschlagen!
Habt ihr eine ahnung wo der fehler liegt?
Die kommen aber erst jetzt, wo ich die DB nur einmal öffne, wo ich die zweimal aufgemahct und geschlosen hab gings, also in jedem teil einmal auf und zu und zwar in "Ausgabe-Bereich und "Eintragungs-Bereich", doch sie osll nur im "Eintragungs-bereich" geöffnet werden und im "Ausgabe-bereich" geschlossen werden.

Einen Link gibt es im moment zur Seite nicht, da ich noch keine Webspae hab wo cih es hochladen kann, aber ich werde mit noch bplaced holen^^

Mfg Wikinger75!
 
Zuletzt bearbeitet:
Boar xD
Klar hab den fehler gefunden^^
Danke für deine anmerkung^^

So das hier funktioniert jetzt

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
  <head>
    <title>Das MiniGästebuch</title>
    
    <style type="text/css"><!--
      body { background:#333333; text-align:center; }
      div#Eintragungs-Bereich { color:#FFFFFF; background:#333333; }
      div#Ausgabe-Bereich { color:#FF0000; background:#333333; }
      
      .FormularItem { margin:10px; }
    /*-->*/</style>
    
  </head>

  <body>
    <div id="Eintragungs-Bereich">
      <?php
        // Mit MySQL Datenbank verbinden.
        $DB_Server = mysql_connect("localhost","root","");
        if(!$DB_Server) { die("DB-Serververbindung fehlgeschlagen!"); }
        
        // Datenbank auswählen.
        $DB = mysql_select_db("gästebücher",$DB_Server);
        if(!$DB) { die("DB-Datenbankverbindung fehlgeschlagen!"); }
        
        if(isset($_POST["Sender"]))
        {
          $Name = $_POST["Name"];
          $Nachricht = $_POST["Nachricht"];
          
          ?>
          <form action="MiniGaestebuch.php" method="post">
            <div class="FormularItem">Name : <input type="text" name="Name" value="<?php echo $Name; ?>" /></div>
            <div class="FormularItem">Nachricht : <textarea name="Nachricht"><?php echo $Nachricht; ?></textarea></div>
            <div class="FormularItem"><input type="submit" name="Sender" value="Senden" /></div>
          </form>
          <?php
          // In die Tabelle (mini_gästebuch) von der Datenbank schreiben.
          $SQL_Write = "INSERT INTO mini_gästebuch (Name,Nachricht) VALUES ('$Name','$Nachricht')";
          $DB_Tabelle = mysql_query($SQL_Write);
          if(!$DB_Tabelle) { die("SQL-Abfrage fehlgeschlagen!"); }
        }
        else
        {
          ?>
          <form action="MiniGaestebuch.php" method="post">
            <div class="FormularItem">Name : <input type="text" name="Name" /></div>
            <div class="FormularItem">Nachricht : <textarea name="Nachricht"></textarea></div>
            <div class="FormularItem"><input type="submit" name="Sender" value="Senden" /></div>
          </form>
          <?php
        }
      ?>
    </div>
    <hr />
    <div id="Ausgabe-Bereich">
      <?php
        // Aus der Tabelle (mini_gästebuch) lesen.
        $SQL_Read = "SELECT * FROM mini_gästebuch";
        $DB_Tabelle = mysql_query($SQL_Read);
        if(!$DB_Tabelle) { die("SQL-Abfrage fehlgeschlagen!"); }
        
        // Datensätze der Tabelle (mini_gästebuch) ausgeben.
        while( $Datensatz = mysql_fetch_assoc($DB_Tabelle) )
        {
          print "Name: ";
          print $Datensatz["Name"]." | ";
          print "Nachricht: \"";
          print $Datensatz["Nachricht"];
          print "\"";
          print "<br />";
        }
        
        // MySQL verbindung trennen!
        mysql_close($DB_Server);
      ?>
    </div>
  </body>
</html>

Hab das verbinden mit der datenbank an den anfang gesetzt klar ging das vorhin nit^^ Jetzt muss ich nur noch da reinschreiben dass er prüft ob es die DB gibt und wenn nicht er sie selber anlegt, den per hand ist das des öfteren doof^^

Mfg Wikinger75!
 
Hallo Wikinger,

wenn ich mit Datenbanken arbeite, dann lagere ich das Öffnen der Datenbank immer in eine Include-Datei aus. Diese Datei befindet sich in einem mit .htaccess geschützten Verzeichnis und wird direkt am Anfang der Datei includiert. Dieses vorgehen hat 2 Vorteile. Zum einen die Wiederverwendbarkeit (interessant bei größeren Projekten) zum anderen die Sicherheit. Sollte aus irgendeinem Grunde der PHP-Parser nicht funktionieren, sieht keiner Deine DB-Daten.

Gruß thuemmy
 
Hallo Wikinger,

wenn ich mit Datenbanken arbeite, dann lagere ich das Öffnen der Datenbank immer in eine Include-Datei aus. Diese Datei befindet sich in einem mit .htaccess geschützten Verzeichnis und wird direkt am Anfang der Datei includiert. Dieses vorgehen hat 2 Vorteile. Zum einen die Wiederverwendbarkeit (interessant bei größeren Projekten) zum anderen die Sicherheit. Sollte aus irgendeinem Grunde der PHP-Parser nicht funktionieren, sieht keiner Deine DB-Daten.

Gruß thuemmy
Hmm ja gut danke für den hinweis^^
Soll ich in htdocs einfach einen htaccess ordner machen und da die externe datei die zu includieren ist reinmachen?

Mfg Wikinger75!

Edit:
Noch eine kleine frage?
Wie kann ich vor dem verbinden mit der Datenbank prüfen ob es die datenbank und die Tabelle dadrin gibt? Falls nein sollte das script sie erzeugen...
Wie geht das?
 
Zuletzt bearbeitet:
Wie der Ordner schlussendlich heißt, ist egal (ich nenne ihn include) und diesen Ordner musst du über eine .htaccess-Datei schützen, Dies kannst du normalerweiße über die Kundenoberfläche Deines Webspace-Anbieters machen (ist am einfachsten).

Gruß thuemmy
 
Zurück
Oben