Nix für ungut, aber auf mich macht es einfach den Eindruck, als hättest Du nur keinen Bock Dir die Doku durchzulesen. gerold hat Dir echt jede Menge Ansätze geliefert und dabei auch viel Hintergrundwissen vermittelt, das weit über das Thema Python hinaus geht; vom Thema Datenbanken ganz zu schweigen.BoOnOdY hat geschrieben: Ich hab gerade nicht so viel zeit werde mir aber heute abend ma ganz in ruhe alles über CGI sowohl von dir als auch aus dem Forum durchlesen.
[...]
Nur ich will halt schon mal ein bisschen Informationen sammeln, die ich dann heute Abend verarbeiten kann.
Is bei mir immer so( nur zur erklärung)
Ich denk mir was aus, frag leute wie sie es lösen würden oder was sie für Erfahrungen gemacht haben
(Sehr gerne auch ein fertiger Quelltext)
Dann arbeite ich mich Abends da ein und eigne mir die Befehle die im Quelltext und die logigen die benutzt wurden an.
Eine kleine Kundendatenbank
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.
Wie man Fragen richtig stellt
Außerdem gibt es eine irrationale.
Wie man Fragen richtig stellt
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Tim!BoOnOdY hat geschrieben:wenn ich das mal in Zope importiere dann:
[...]
erkennt er wohl net ??
Oder hab ich was nicht berücksichtigt??
Viel schlimmer. Du hast die Unterschiede nicht verstanden.
Lies diesen, kompletten Thread doch bitte noch einmal aufmerksam durch. Es wurde bereits alles erklärt. ``CGI != Zope``
lg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
So weit, so gut.
Also Brauche ich
-Meine HTML oberfläche
-Ein Python Script
- Zope
(ich will das alles mit zope gleich machen)
So weit richtig?
Ich füge meine HTML datei in Zope ein und den Script auch als "Python datei"
?
Gibts irgendwo ein paar tutorials, in denen beschrieben wird, wie die variable an Zope und und von Zope wieder zurück gegeben wird?
gehe ich recht in der Anname, dass ich dann ein "psycopg2" Importieren kann in Zope und eine dauerhafte Verbindung mit der Datenebank dadurch herstellen kann? und das nicht jedes mal im Python script erwähnen muss?
Find ich auch ein gutes Python-Zope-HTML tutorial irgenwo?
Liebe Grüße Tim
Also Brauche ich
-Meine HTML oberfläche
-Ein Python Script
- Zope
(ich will das alles mit zope gleich machen)
So weit richtig?
Ich füge meine HTML datei in Zope ein und den Script auch als "Python datei"
?
Gibts irgendwo ein paar tutorials, in denen beschrieben wird, wie die variable an Zope und und von Zope wieder zurück gegeben wird?
gehe ich recht in der Anname, dass ich dann ein "psycopg2" Importieren kann in Zope und eine dauerhafte Verbindung mit der Datenebank dadurch herstellen kann? und das nicht jedes mal im Python script erwähnen muss?
Find ich auch ein gutes Python-Zope-HTML tutorial irgenwo?
Liebe Grüße Tim
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.
Wie man Fragen richtig stellt
Außerdem gibt es eine irrationale.
Wie man Fragen richtig stellt
*PLONK*
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.
Wie man Fragen richtig stellt
Außerdem gibt es eine irrationale.
Wie man Fragen richtig stellt
Du solltest besser erst ein wenig Python üben bevor Du Dich an so ein grosses Framework wie Zope heranwagst.
Eine wichtige Sache beim Entwurf von Programmen ist, dass man unabhängige Ebenen nicht vermischt. Zum Beispiel sollte man immer versuchen die Benutzeroberfläche von der Programmlogik zu trennen und manchmal ist es auch sinnvoll Programmlogik und Datenhaltung wirklich streng zu trennen. Vor allem wenn Du mit einer Datenbank arbeiten willst. Dann ist die Datenhaltung von der Natur der Sache her schon etwas externes, eigenes.
Ich würde folgendes Vorgehen vorschlagen: Entwirf die Datenbank. Also mach Dir Gedanken was für Daten für Deine Anwendung wichtig sind und in welchen Tabellen sie gespeichert werden sollen.
Dann brauchst Du Code der diese Daten in die Datenbank schreibt, von dort ausliest und bestimmte Operationen wie suchen oder löschen erlaubt. Schreibe dazu Klassen und Funktionen die Du dann erst einmal mit Testcode und oder in der Python-Shell ausprobieren kannst.
Dann kannst Du auf diesen Funktionen und Klassen Code aufsetzen, der das ganze mit einer Benutzeroberfläche verbindet. Hier sollten Dir jetzt alle Möglichkeiten offen stehen. Einfache Textoberfläche, Tkinter, eines der externen GUI Frameworks, CGI. usw.
Oder Du arbeitest Dich in Zope ein. Das ist eine Welt für sich und da bietet es sich wahrscheinlich auch an die mitgelieferte objektorientierte Datenbank (zodb) zu benutzen. Die kann man übrigens auch einzeln installieren und ausserhalb von Zope verwenden.
Eine wichtige Sache beim Entwurf von Programmen ist, dass man unabhängige Ebenen nicht vermischt. Zum Beispiel sollte man immer versuchen die Benutzeroberfläche von der Programmlogik zu trennen und manchmal ist es auch sinnvoll Programmlogik und Datenhaltung wirklich streng zu trennen. Vor allem wenn Du mit einer Datenbank arbeiten willst. Dann ist die Datenhaltung von der Natur der Sache her schon etwas externes, eigenes.
Ich würde folgendes Vorgehen vorschlagen: Entwirf die Datenbank. Also mach Dir Gedanken was für Daten für Deine Anwendung wichtig sind und in welchen Tabellen sie gespeichert werden sollen.
Dann brauchst Du Code der diese Daten in die Datenbank schreibt, von dort ausliest und bestimmte Operationen wie suchen oder löschen erlaubt. Schreibe dazu Klassen und Funktionen die Du dann erst einmal mit Testcode und oder in der Python-Shell ausprobieren kannst.
Dann kannst Du auf diesen Funktionen und Klassen Code aufsetzen, der das ganze mit einer Benutzeroberfläche verbindet. Hier sollten Dir jetzt alle Möglichkeiten offen stehen. Einfache Textoberfläche, Tkinter, eines der externen GUI Frameworks, CGI. usw.
Oder Du arbeitest Dich in Zope ein. Das ist eine Welt für sich und da bietet es sich wahrscheinlich auch an die mitgelieferte objektorientierte Datenbank (zodb) zu benutzen. Die kann man übrigens auch einzeln installieren und ausserhalb von Zope verwenden.
Hy,
also der erste Punkt:
Ich brauche 2 tabellen:
1. Kontakttabelle
Kontaktnummer
Vorname
Nachname
Straße+nummer
Ort mit PLZ
Telefonnummer
Mobilnummer
Emailadresse
Ereignisverzeichnis (ne nummer der Ereignisse die mit der Person gelplant sind aus Tabelle2 die immer mit einem Komma abgetrennt werden)
2.Ereignistabelle
Ereignisnummer
Kontaktnummer
Ereignis name
Freie Beschreibung
So weit so gut, werd mich dann ma die Tage drann machen den Code von Gerold zu verstehen und ihn für meine Anwendungen selbst zu schreiben.
Werd ihn dann hier reinstellen und dann könnt ihr ja mal nach Denkfehlern gucken.
Wenn jemandem ein Denkfehler in den beiden Tabellen auffällt, bitte auch anmerken,
Danke
gruß Tim
also der erste Punkt:
Ich brauche 2 tabellen:
1. Kontakttabelle
Kontaktnummer
Vorname
Nachname
Straße+nummer
Ort mit PLZ
Telefonnummer
Mobilnummer
Emailadresse
Ereignisverzeichnis (ne nummer der Ereignisse die mit der Person gelplant sind aus Tabelle2 die immer mit einem Komma abgetrennt werden)
2.Ereignistabelle
Ereignisnummer
Kontaktnummer
Ereignis name
Freie Beschreibung
So weit so gut, werd mich dann ma die Tage drann machen den Code von Gerold zu verstehen und ihn für meine Anwendungen selbst zu schreiben.
Werd ihn dann hier reinstellen und dann könnt ihr ja mal nach Denkfehlern gucken.
Wenn jemandem ein Denkfehler in den beiden Tabellen auffällt, bitte auch anmerken,
Danke
gruß Tim
- DatenMetzgerX
- User
- Beiträge: 398
- Registriert: Freitag 28. April 2006, 06:28
- Wohnort: Zürich Seebach (CH)
1. Kontakttabelle
Kontaktnummer
Vorname
Nachname
Straße+nummer
Ort mit PLZ
Telefonnummer
Mobilnummer
Emailadresse
2.Ereignistabelle
Ereignisnummer
Kontaktnummer
Ereignis name
Freie Beschreibung
Sollte so genügen... WEnn du alle Ereignisse von einem Benutzer willst (oder Kontakt) machst du ein "Select from * from Ereignisstabelle where Kontaktnummer = %id" % aktuelleid
Kontaktnummer
Vorname
Nachname
Straße+nummer
Ort mit PLZ
Telefonnummer
Mobilnummer
Emailadresse
2.Ereignistabelle
Ereignisnummer
Kontaktnummer
Ereignis name
Freie Beschreibung
Sollte so genügen... WEnn du alle Ereignisse von einem Benutzer willst (oder Kontakt) machst du ein "Select from * from Ereignisstabelle where Kontaktnummer = %id" % aktuelleid
keine sql-injection, bitte
erst gar nicht damit anfangen...
erst gar nicht damit anfangen...
http://www.cs.unm.edu/~dlchao/flake/doom/
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Tim!
Ich habe auch noch einen Rat für dich:
Verwende bei Tabellennamen und Feldnamen keine Umlaute, keine Leerzeichen und keine Sonderzeichen. Idealerweise auch keine Großschreibung.
lg
Gerold
Ich habe auch noch einen Rat für dich:
Verwende bei Tabellennamen und Feldnamen keine Umlaute, keine Leerzeichen und keine Sonderzeichen. Idealerweise auch keine Großschreibung.
lg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
So die erste Tabelle
der id serial wird dann zur Kundennumer/Kontaktnummer
Hier das leicht abgeänderte HTML
Und da noch der leicht abgeänderte Script der ursprünglich von Gerold kam
Fehler suchen erwünscht
Das wäre die Datei zum Kunden anlegen so weit.
Kleine Frage, es gibt doch so ein Zope Modul zur Suche von Daten
Würde das auch mit einer Maske funktionieren die man als "Kundensuche" ausbaut ?
Weil man muss ja als nächstes die eingetragenen Daten verwalten und suchen.
Ich mach mich jetzt drann die Sachen für den Ereignis bereich zu machen, das kann ich ja auch noch mit den Sachen die ich jetzt schon von euch gelernt hab.
Wie würde man es machen auf die Daten in der Datenbank zuzugreifen mit python script und HTML?
Wir sagen jetzt z.B.:
Ich gebe in ein HTML feld eine Kundennummer ein, und will dann die Daten zu dem Kunden agezeigt bekommen.
Danke schon ma
Tim
der id serial wird dann zur Kundennumer/Kontaktnummer
Code: Alles auswählen
CREATE TABLE Kunden (
Kundennummer serial PRIMARY KEY,
vorname text,
zuname text,
Strasse text,
ort text,
telefon text,
mobil text,
email text,
info text,
historie text,
) WITHOUT OIDS;
Hier das leicht abgeänderte HTML
Code: Alles auswählen
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<title>Kleine Adressdatenbank</title>
</head>
<body>
<h1>Füllen sie bitte folgende Felder aus</h1>
<p>Bitte füllen sie alle Felder rücksichstvoll aus</p>
<form action="add_address.py">
<table border="0" cellpadding="5" cellspacing="0" bgcolor="#E0E0E0">
<tr>
<td align="right">Vorname:</td>
<td><input name="vorname" type="text" size="30" maxlength="30"></td>
</tr>
<tr>
<td align="right">Nachname:</td>
<td><input name="zuname" type="text" size="30" maxlength="40"></td>
</tr>
<tr>
<td align="right">Straße:</td>
<td><input name="strasse" type="text" size="30" maxlength="40"></td>
</tr>
<tr>
<td align="right">Ort:</td>
<td><input name="ort" type="text" size="30" maxlength="40"></td>
</tr>
<tr>
<td align="right">Telefonnummer:</td>
<td><input name="telefon" type="text" size="30" maxlength="40"></td>
</tr>
<tr>
<td align="right">Handynummer:</td>
<td><input name="mobil" type="text" size="30" maxlength="40"></td>
</tr>
<tr>
<td align="right">E-mail Adresse:</td>
<td><input name="email" type="text" size="30" maxlength="40"></td>
</tr>
<tr>
<td align="right" valign="top">Zusätzliche Informationen:</td>
<td><textarea name="info" rows="10" cols="50"></textarea></td>
</tr>
<tr>
<td align="right">Kunde eintragen:</td>
<td>
<input type="submit" value=" Eintragen ">
<input type="reset" value=" Abbrechen">
</td>
</tr>
</table>
</form>
</body>
</html>
Code: Alles auswählen
print "Content-Type: text/html;charset=iso-8859-1"
print
import cgi
import cgitb; cgitb.enable()
import psycopg2
# Connection öffnen
conn = psycopg2.connect(
user = "Import", password = "Import", database = "GBC"
)
cur = conn.cursor()
# Feldwerte ermitteln
fs = cgi.FieldStorage()
vorname = fs.getvalue("vorname", None)
zuname = fs.getvalue("zuname", None)
strasse = fs.getvalue("strasse", None)
ort = fs.getvalue("ort", None)
telefon = fs.getvalue("telefon", None)
mobil = fs.getvalue("mobil", None)
email = fs.getvalue("email", None)
info = fs.getvalue("info", None)
# Neuen Datensatz anlegen
sql = """
INSERT INTO Kunden (
vorname,
zuname,
strasse,
ort,
telefon,
mobil,
email,
info,
) VALUES (
%(vorname)s,
%(zuname)s,
%(strasse)s,
%(ort)s,
%(telefon)s,
%(mobil)s,
%(email)s,
%(info)s
);
"""
cur.execute(sql, locals())
conn.commit()
# Meldung zurück geben
print """<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<title>Kleine Adressdatenbank</title>
</head>
<body>
<h1>Fertig</h1>
<p>
Die neue Adresse wurde erstellt.
</p>
<p>
<strong>Vorname:</strong> %(vorname)s <br>
<strong>Nachname:</strong> %(zuname)s
</p>
</body>
</html>""" % locals()
# Connection schließen
cur.close()
conn.close()
Das wäre die Datei zum Kunden anlegen so weit.
Kleine Frage, es gibt doch so ein Zope Modul zur Suche von Daten
Würde das auch mit einer Maske funktionieren die man als "Kundensuche" ausbaut ?
Weil man muss ja als nächstes die eingetragenen Daten verwalten und suchen.
Ich mach mich jetzt drann die Sachen für den Ereignis bereich zu machen, das kann ich ja auch noch mit den Sachen die ich jetzt schon von euch gelernt hab.
Wie würde man es machen auf die Daten in der Datenbank zuzugreifen mit python script und HTML?
Wir sagen jetzt z.B.:
Ich gebe in ein HTML feld eine Kundennummer ein, und will dann die Daten zu dem Kunden agezeigt bekommen.
Danke schon ma
Tim
Zuletzt geändert von BoOnOdY am Montag 14. August 2006, 14:34, insgesamt 2-mal geändert.
So hier das gleiche noch ma für die ereignisse, ich nenn se standesgemäß ma Tickets:
Ich würds gerne so machen:
Man sucht sich einen Kunden, dann wird der angeziegt, über nen Button kommt man dann auf diese Seite und hat die Kundendaten angezeigt ( hab da ma im HTML code nen Platzhalter hin gemacht)
Hab mir das so ausgedacht:
Mit der Implementierung in Zope zum suchen von Datensätzen, kann man über eine Oberfläche den Kunden suchen, dann gehen seine Daten auf und dann gibts auf der seite halt den kleinen Button.
Hier dann schon ma die seite und der script für diese Seite.
Viele Grüße
Tim
Ich würds gerne so machen:
Man sucht sich einen Kunden, dann wird der angeziegt, über nen Button kommt man dann auf diese Seite und hat die Kundendaten angezeigt ( hab da ma im HTML code nen Platzhalter hin gemacht)
Hab mir das so ausgedacht:
Mit der Implementierung in Zope zum suchen von Datensätzen, kann man über eine Oberfläche den Kunden suchen, dann gehen seine Daten auf und dann gibts auf der seite halt den kleinen Button.
Hier dann schon ma die seite und der script für diese Seite.
Viele Grüße
Tim
Code: Alles auswählen
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<title>Kleine Adressdatenbank</title>
</head>
<body>
<h1>Füllen sie bitte folgende Felder aus</h1>
<p>Bitte füllen sie alle Felder rücksichstvoll aus</p>
************** PLATZ FÜR DEN KUNDENBEZUG, DATEN AUS DER TABELLE KUNDEN AUSLESEN UND HIER HEREINSCHREIBEN***********
<form action="Ticket.py">
<table border="0" cellpadding="5" cellspacing="0" bgcolor="#E0E0E0">
<tr>
<td align="right">Kundennummer:</td>
<td><input name="Kundennummmer" type="text" size="30" maxlength="30"></td>
</tr>
<tr>
<td align="right">Betriebssystem:</td>
<td><input name="OS" type="text" size="30" maxlength="30"></td>
</tr>
<tr>
<td align="right" valign="top">Beschreibung:</td>
<td><textarea name="details" rows="10" cols="50"></textarea></td>
</tr>
<tr>
<td align="right">Auftrag:</td>
<td>
<input type="submit" value=" Entgegen nehmen ">
<input type="reset" value=" Verwerfen">
</td>
</tr>
</table>
</form>
</body>
</html>
Code: Alles auswählen
print "Content-Type: text/html;charset=iso-8859-1"
print
import cgi
import cgitb; cgitb.enable()
import psycopg2
# Connection öffnen
conn = psycopg2.connect(
user = "Import", password = "Import", database = "GBC"
)
cur = conn.cursor()
# Feldwerte ermitteln
fs = cgi.FieldStorage()
Kundennummer = fs.getvalue("Kundennummer", None)
OS = fs.getvalue("OS", None)
details = fs.getvalue("details", None)
# Neuen Datensatz anlegen
sql = """
INSERT INTO Ticket (
Kundennummer,
OS,
details,
) VALUES (
%(Kundennummer)s,
%(OS)s,
%(details)s,
);
"""
cur.execute(sql, locals())
conn.commit()
# Meldung zurück geben
print """<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<title>Kleine Adressdatenbank</title>
</head>
<body>
<h1>Fertig</h1>
<p>
Die neue Anfrage wurde erstellt.
</p>
<p>
<strong>Kundennummer:</strong> %(Kundennummer)s
</p>
</body>
</html>""" % locals()
# Connection schließen
cur.close()
conn.close()
Code: Alles auswählen
CREATE TABLE Ticket (
Ereignisnummer serial PRIMARY KEY,
Kundennummer int4,
OS text,
details text,
) WITHOUT OIDS;