PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP SQLite Datenbank (für Gästebuch)



Bluescreen
01.02.2006, 15:53
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!

lizard
01.02.2006, 16:01
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. ;)

Bluescreen
01.02.2006, 17:25
Mit folgendem Code wollte ich die Datenbank generieren:


<?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...

Chocwise
01.02.2006, 17:46
...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. ;)

rgb
01.02.2006, 20:06
Mit folgendem Code wollte ich die Datenbank generieren:


<?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.

Hisoka
03.02.2006, 20:00
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


<?
$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.

Dingsi
04.02.2006, 13:29
Oehm.. ne?
$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.

Bluescreen
04.02.2006, 14:57
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!

Chocwise
04.02.2006, 18:04
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:


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.

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. :D
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. :D
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. ;)

dead_orc
06.02.2006, 13:55
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 ;)

Bluescreen
06.02.2006, 15:40
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]

Chocwise
06.02.2006, 16:02
@ Putten Ork & Erik:
Uhm...
Lest beide nochmal ganz aufmerksam meinen Beitrag, da steht alles was ihr wissen wollt. ;)