Ergebnis 1 bis 12 von 12

Thema: PHP SQLite Datenbank (für Gästebuch)

  1. #1

    PHP SQLite Datenbank (für Gästebuch)

    Ich möchte ein Gästebuch mit PHP's neuem SQLite machen.

    Bei der Eingabe für ein neues Kommentar werden folgende Daten per POST übergeben:
    $_POST[nickname]
    $_POST[email]
    $_POST[website]
    $_POST[kommentar]

    Ich hab aber weder geschafft, eine PHP SQLite Datenbank mit entsprechender Tabelle zu generieren, noch obigen Werte dort einzutragen.

    Sollte ein Gästebuch jedoch nicht so einfach sein, wie ich mir das hier vorstelle, bitte um Aufklärung!

  2. #2
    Naja, da reicht ja schon ein kleiner Fehler im Code, z.B. bei der Benennung der Variablen und der Tabellen. Vielleicht postest du den Code mal, damit wir drüberschauen können.

  3. #3

    Datenbank generieren

    Mit folgendem Code wollte ich die Datenbank generieren:
    Code:
    <?php
    $gastebuch = sqlite_open('Gaestebuch');
    squlite_query($gastebuch, 'CREATE TABLE Kommentare 
    (Name varchar(30), 
    EMail varchar(30), 
    Website varchar(30), 
    Kommentar varchar(30))');
    ?>
    Allerdings weiß ich nicht was das varchar() bedeutet...

  4. #4
    Zitat Zitat von RPG-Erik
    Code:
    ...squlite_query($gastebuch, ...
    squlite?
    Nimm mal das "u" raus.
    Ansonsten: Achte auf Groß&Kleinschreibung. Das spielt bei SQL-Befehlen auch eine Rolle.
    Wenn alles nichts hilft, versuch sqlite_error(). keine Ahnung obs da auch den Befehl gibt, aber wenn es das mysql-Analog auch gibt, müsste der dann ALLE Fehler ausgeben die beim Query auftraten.

    BTW: Nette Sig.

  5. #5
    Zitat Zitat von RPG-Erik
    Mit folgendem Code wollte ich die Datenbank generieren:
    Code:
    <?php
    $gastebuch = sqlite_open('Gaestebuch');
    squlite_query($gastebuch, 'CREATE TABLE Kommentare 
    (Name varchar(30), 
    EMail varchar(30), 
    Website varchar(30), 
    Kommentar varchar(30))');
    ?>
    Allerdings weiß ich nicht was das varchar() bedeutet...
    Varchar ist ist die Bezeichnung des Tabellenfeldes, könnte man mit variable/various char übersetzten (genau weis ich das nicht), da in diese Felder eigentlich alles an zeichen rein kann.

  6. #6
    varchar lässt sich anders übersetzen, variable langer char(Zeichen), also eine nicht konstant lange Zeichenkette.

    zu deinem code.
    Du stellst keine verbindung zu deiner datenbank her, dazu musst du erstmal deine daten zum sql server angeben
    PHP-Code:
    <?
    $path = realpath('.') . '/data';
    $db = sqlite_open("$path/dbname.db", 0666, $error);
    sqlite_query("query");
    ?>
    also dazu muss an einem bestimmten pfad ne sqlite db existieren damit es geht.

  7. #7
    Oehm.. ne?
    PHP-Code:
    $db sqlite_open("Gaestebuch"); 
    .. müsste vollkommen korrekt sein. ôô
    Das sollte die Datei "Gaestebuch" im aktuellen Verzeichnis erstellen.

    Wobei das nicht wirklich ratsam ist, wenn man vorhat in der Datenbank sensible Dateien (Passwörter, Adressen, etc) zu speichern. Da sollte man das ganze lieber außerhalb des HTTP-Roots speichern.

  8. #8

    "gästebuch" !

    1. Datenbank fuellen
    Und wie werden nach der Erstellung der Datenbank die im ersten Posting durch ein Formular uebergebenen Informationen in die Datenbank gespeichert?

    2. Varchar
    Für was ist das denn nun wichtig, was bringt mir das?
    Ich kann also auch Namen in 'Varchar' eingeben?

    _______________________________________________________
    Ich moechte an dieser Stelle aus gegebenem Anlass mal bemerken,
    das die Datenbank nur für ein Gästebuch bestimmt ist,
    für Daten, die sich jeder reinziehen darf.

    Ich habe (noch nicht) vor ein Forum mit Passwörtern zu entwickeln!

    Geändert von Bluescreen (04.02.2006 um 16:02 Uhr)

  9. #9
    Zitat Zitat von RPG-Erik
    1. Datenbank fuellen
    Und wie werden nach der Erstellung der Datenbank die im ersten Posting durch ein Formular uebergebenen Informationen in die Datenbank gespeichert?
    Öh... ichhab zwar noch nie sqlite benutzt, aber ich denke mal, dass der nun folgende Query genau so ausschaut wie ein (My)SQL-query.
    Deswegen:
    PHP-Code:
    sqlite_query("INSERT INTO $gastebuch (Name, EMail, Website, Kommentar) VALUES ('$_POST[nickname]', '$_POST[email]', '$_POST[website]', '$_POST[kommentar]')"); 
    Am besten lernst du die entspr. Queries aus PHPMyAdmin indem du dort einfach irgendwelche Aktionenmachst und dir anschließend den SQL-Befehl anschaust, den dir PHPMyAdmin nach der Ausführung anzeigt.
    Zitat Zitat von RPG-Erik
    2. Varchar
    Für was ist das denn nun wichtig, was bringt mir das?
    Ich kann also auch Namen in 'Varchar' eingeben?
    ...
    Hajo... die Feldtypen sind teilweise schon nervig.
    Für einen Nur-Mal-Eben-Etwas-Stricken-Anwender ist die Wahl der Feldtypen nicht sonderlich dringend. Im runde kann man überall TEXT nehmen, damit fährt man eigentlich nie falsch. Es wird jedenfalls immer funzen.
    Nur ist es der Performance des MySQL-Servers zuträglich, wenn man die richtigen Feldtypen wählt. Durch optimierte Feldtypen, ist MySQL in der Lage oft schneller seine DB-Operationen auszuführen weil er weis mit waser's zu tun hat.
    Schreibt man also eine Professionelle, große Seite die stark frequentiert sein wird, kann man da einiges an Performance rausholen.

    varchar hab ich bislang nie verwendet. ICh weiß immer recht gut was in welches Feld kommt.
    Felder für Nicknames gibst du einfach den Feldtyp TINYTEXT, welches AFAIR max. 255 Zeichen erlaubt.
    Felder für einfache Zahlenwerte, z.B. id's bekommen INT, also Integer. Wie groß INT werdenkann, weiß ich nu auch nicht so genau... 65000? Nuja, ich hab jedenfalls noch nicht erlebt, dass eine id über 65000 gekommen wäre. Selbst die derzeit höchste USer-ID hier im Forum ist bei 16720. Wenn es eng wird, dreht man halt auf BIGINT auf, was in die Millionen geht, AFAIR.
    Der Vorteil des INT-FEldtypus ist außerdem, dass man das extrem nützliche Feature auto_increment MySQL's anwenden kann, was einem das auslesen der höchsten ID und Iterierung Selbiger per Script erspart. Mit dem Feldtyp VARCHAR geht das AFAIK nicht.
    Für Felder die ein TRUE/FALSE- bzw. 1/0-Duplett enthalten sollen, nimmt man TINYINT der Länge 1 her. Also TINYINT(1).
    Hmjo... was gibts da noch so für... "Geheimnisse"...Nö, ich wüsst grad nüscht mehr.

    Tipp: Spiel mit PHPMySQL rum und les' immer schön die SQL-Befehle mit.

  10. #10
    Zitat Zitat von Chocwise
    Felder für Nicknames gibst du einfach den Feldtyp TINYTEXT, welches AFAIR max. 255 Zeichen erlaubt.
    Hm, das ist natürlich ne Idee...
    Eben für solche Felder wie Nickname, Homepage, E-Mail o.Ä. habe ich bisher immer varchar genommen. Was für einen Vorteil hat in diesem Zusammenhang TINYTEXT gegenüber VARCHAR? Hat es überhaupt welche?

    [EDIT]
    Meine Frage sollte eigentlich heißen, ob es außer der minimal geringeren Serverlast noch andere Vorteile gibt

    Geändert von dead_orc (06.02.2006 um 17:31 Uhr)

  11. #11

    Gut, und jetzt...

    Und jetzt bitte die Datenbank mit den von einem Forumlar übergebenen Parametern (ist das so richtig?) füllen:

    $_POST[nickname]
    $_POST[email]
    $_POST[website]
    $_POST[kommentar]

  12. #12
    @ Putten Ork & Erik:
    Uhm...
    Lest beide nochmal ganz aufmerksam meinen Beitrag, da steht alles was ihr wissen wollt.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •