Anfänger Fragen :-(
Verena
- php
Hallo und guten Morgen an alle die das hier jetzt noch lesen,
hmm ich weiß nicht ob ich hier richtig bin aber wenn ich mir das alles mal so durchgelesen habe dann denke ich einfach dass mir bestimmt jemand helfen kann. OK ich sag es gleich ich bin noch ganz neu auf dem Gebiet PHP und so viel Zeit habe ich gerade leider auch nicht um das alles zu lernen da ich gerade im Studium stecke :-(
Joa aber jetzt kommt einfach mal meine Frage. Ich will auf einer HP ( genauer gesagt auf meiner die dann ende der nächsten Woche online kommt ) etwas anbieten und da hat jemand zu mir gesagt Verena mach das am besten mit PHP :-(
So hier kommt mal was ich machen will: Ich habe vor wie so eine Art Geschichte schreiben zu lassen. Nee nicht falsch verstehen ich mach nur den Anfang und die User können dann weiter machen. Jetzt habe ich mir das so überlegt:
Ich mach in meiner Datenbank ( PHPMyAdmin und MySQL ) eine Tabelle die heißt Geschichte. Darin mach ich dann wiederum Spalten die folgendermaßen heißen:
Joa dann mach ich auf der WebSeite ein Formular wo der User dann die Daten eintragen kann und auch sein Text. Dann möchte ich aber noch dass immer das was gerade geschrieben worden ist oben angezeigt wird und dann soll erst das Formular kommen.
Kann mir da jemand helfen das umzusetzen? Wie gesagt ich kenne mich gerade mal so weit aus, dass ich weiß wie ich das machen muss, dass ich das Formular dazu bringe die Daten in die Tabelle eintragen zu lassen :-(
Was jetzt kommt weiß ich nicht ob man das machen kann. Da in der Geschichte kein Scheiß geschrieben werden soll also mit Beleidigungen wie z.B. Fick dich oder so wollte ich auch noch das haben dass solche Wörter erst gar nicht genommen wird geht das denn auch ? Oder kann man das eher nicht machen?
Joa jetzt bin ich einfach mal gespannt ob mir jemand helfen kann.
Liebe Grüße und eine gute Nacht,
Verena
hallo Verena,
hmm ich weiß nicht ob ich hier richtig bin
Bist du.
OK ich sag es gleich ich bin noch ganz neu auf dem Gebiet PHP
Dann solltest du dich nicht gleich auf so eine relativ komplexe Aufgabe stürzen.
und so viel Zeit habe ich gerade leider auch nicht um das alles zu lernen da ich gerade im Studium stecke :-(
Wieso? Wenn du eh schon studierst, studierst du halt noch ein bißchen PHP mit, das schadet dir nix.
Ich will auf einer HP ([...] etwas anbieten und da hat jemand zu mir gesagt Verena mach das am besten mit PHP :-(
PHP ist ganz einfach "Mode" für solche Vorhaben - und ja: damit kann man sowas machen. Aber es ist nicht die einzige dafür einsetzbare Technologie.
Ich habe vor wie so eine Art Geschichte schreiben zu lassen. [...] ich mach nur den Anfang und die User können dann weiter machen. Jetzt habe ich mir das so überlegt:
Ich mach in meiner Datenbank ( PHPMyAdmin und MySQL ) eine Tabelle die heißt Geschichte. Darin mach ich dann wiederum Spalten die folgendermaßen heißen:
- ID
- User
- Text
- Zeit
Joa dann mach ich auf der WebSeite ein Formular wo der User dann die Daten eintragen kann und auch sein Text.
Bis dahin ist das was fürs erste Semester, das geht einigermaßen problemlos.
Dann möchte ich aber noch dass immer das was gerade geschrieben worden ist oben angezeigt wird und dann soll erst das Formular kommen.
Da könnte es aber dann losgehen: selbstverständlich kannst du auch sowas einbauen. Dafür gibt es aber unterschiedliche Heransgehensweisen bzw. Methoden. Ich meine (aber da kann es Gegenmeinugen geben), daß es am leichtesten ist, mit einem regulären Ausdruck den <body> der HTML-Ausgabe so zu ersetzen, daß eben daraus <body><p>neuer Text</p> wird. Das ist dann was fürs zweite Semester.
Da in der Geschichte kein Scheiß geschrieben werden soll also mit Beleidigungen wie z.B. Fick dich oder so wollte ich auch noch das haben dass solche Wörter erst gar nicht genommen wird geht das denn auch ?
Selbstverständlich. Das ist dann drittes Semester. Das geht beispielsweise mit einer "badwords"-Liste, die verglichen wird, so daß jemand, der solche Wörter schreibt, ein ganz dickes, fettes "dudu, sowas sagt man nich!" auf seinem Bildschirm findet und sein Text einfach komplett gelöscht wird.
Grüße aus Berlin
Christoph S.
Hello Verena,
du benötigst einfach nur ein Forensystem, so ähnleich wie dieses hier, denn eine Geschichte kann sich ja unterschiedlich entwickeln. Und wenn man das Ganze richtig anfangen will mit dem "Geschichtengenerator", dann muss das Speichermodell als "dehnbares Raumgitter" angelegt werden, denn auch wenn sich eine Geschichte am Anfang nach links bewegt, kann sie ja später wieder an genau demselben Punkt ankommen, wie der Teil der Geschichte, der am Anfang nach rechts gelaufen ist. Ich hoffe, dass Du mir da so ungefähr folgen konnstest
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo Tom,
hmm das habe ich jetzt ehrlich gesagt nicht so ganz verstanden. Hab auch gerade oben schon einen Beitrag geschrieben. Kannst Ihn dir ja mal ansehen aber könntest du mir auch nochmals erklären wie du das meinst ?
LG Verena
hi,
Da in der Geschichte kein Scheiß geschrieben werden soll also mit Beleidigungen wie z.B. Fick dich oder so wollte ich auch noch das haben dass solche Wörter erst gar nicht genommen wird geht das denn auch ?
Selbstverständlich. Das ist dann drittes Semester. Das geht beispielsweise mit einer "badwords"-Liste, die verglichen wird, so daß jemand, der solche Wörter schreibt, ein ganz dickes, fettes "dudu, sowas sagt man nich!" auf seinem Bildschirm findet und sein Text einfach komplett gelöscht wird.
halte ich für zwecklos - eine entsprechende "du pöser pursche!"-meldung fordert doch den benutzer, der dich wirklich mit solchen einträgen ärgern will, erst recht "heraus".
wenn dein script badword nicht akzeptiert - dann versucht er es halt mit bad-word, b-a-d-w-o-r-d, b*a*d*w*o*r*d etc.
und das wirst du m.E. niemals alles filtern können, ohne den nutzungskomfort auch für normale user einzuschränken.
außerdem sehe ich keinen logischen grund, warum ich nicht in einem posting über den film "das kleine arschloch" diskutieren können sollte - obwohl das a-wort sicher in jeder "guten" badword-liste enthalten sein dürfte.
gruß,
wahsaga
yo,
... da hat jemand zu mir gesagt Verena mach das am besten mit PHP :-(
hier sind die zeichen am ende falsch, es muss heissen "...PHP :-)". spass beseite. aller anfang ist schwer, aber mit php kommt man schnell zu ergebnissen. und wenn du dann noch ein wenig html kannst, bist du schon mal gut gerüstet.
- ID
- User
- Text
- Zeit
das könnte so zu problemen führen, zum beispiel wenn zwei poster zur gleichen zeit einen neuen text schreiben. wenn nun beide den text abschicken, dann wird einer zuerst eingetragen werden und der zweite wird sich nun nicht auf den neuen abschnitt beziehen. da muss man sich noch was überlegen, um das zu verhindern.
zum anderen solltest du nicht die zeit als reihenfolge für die texte nehmen, sondern zusätzlich zur zeit noch eine fortlaufende nummerierung. die zeit kann theoretisch auch gleich sein, sprich ist dann nicht mehr eindeutig.
Joa dann mach ich auf der WebSeite ein Formular wo der User dann die Daten eintragen kann und auch sein Text. Dann möchte ich aber noch dass immer das was gerade geschrieben worden ist oben angezeigt wird und dann soll erst das Formular kommen.
das ist sehr einfach zu implementieren, sollte also kein problem darstellen. die schickst die daten über ein formular an eine neue seite und diese zeigt sie dann an. gefällt dem user was er schreibt, dann muss er einfach nur noch einmal auf einen button drücken und die daten werden in die datenbank geschrieben.
Kann mir da jemand helfen das umzusetzen? Wie gesagt ich kenne mich gerade mal so weit aus, dass ich weiß wie ich das machen muss, dass ich das Formular dazu bringe die Daten in die Tabelle eintragen zu lassen :-(
komplette anleitung dafür wirst du hier nicht finden. du musst schon ein wenig zeit investieren. aber bei ganz konkreten fragen und problemen wird dir mit großer wahrscheinlichkeit immer einer helfen.
Was jetzt kommt weiß ich nicht ob man das machen kann. Da in der Geschichte kein Scheiß geschrieben werden soll also mit Beleidigungen wie z.B. Fick dich oder so wollte ich auch noch das haben dass solche Wörter erst gar nicht genommen wird geht das denn auch ? Oder kann man das eher nicht machen?
das zu implementieren ist nicht ganz so einfach. ich würde es erst einmal so lösen, dass du bei jedem neuen beitrag eine e-mail bekommst, um zu checken, was neues gepostet wurde. zusätzlich würde ich jeden user, der mitmachen will, ein passwort vergeben, damit er das formular benutzen kann. wenn nun ein user auffälig wird, dann sperrst du ihn einfach.
Ilja
Guten Morgen euch allen,
joa war schon in der Uni und nun sitze ich wieder hier am Rechner und überlege wie ich das ganze umsetzten kann. Also ein Formular habe ich schon mal gemacht und ich weiß auch, wie man die Daten in eine Datenbank bekommt. Das habe ich in den letzten Tagen mal in Büchern nach gelesen.
Nur jetzt kommt meine Frage wieder:
Kann ich das so mit den Spalten machen oder wurdet Ihr mir da was anderes vorschlagen wenn ja was denn wen?
Joa wenn ich also nichts anderes von euch hör dann leg ich mal die Tabelle so an. Wenn ich das dann habe, dann frage ich wieder weiter.
LG Verena
yo,
Kann ich das so mit den Spalten machen oder wurdet Ihr mir da was anderes vorschlagen wenn ja was denn wen?
das kommt ganz drauf an, welche anderen funktionen du einbauen willst. wenn du zum beispiel erst mal jeden poster ein account vergeben willst, damit nicht jeder einfach mal die story ohne krontrolle weiterführen kann, dann musst du noch ein wenig pfeilen. auch die spalte zeit klingt ein wenig verwirrend, da ja dort sicherlich auch das datum + zeit festgehalten wird. mit anderen worten, den tabellen-design hängt damit zusammen, wie du das ganze aufziehen willst.
Ilja
HuHu Ilja,
hmm die User sind in dem Fall schon Registiert und die werden anhand der Session erkannt.
Ich weiß nicht ist das Datum so wichtig für so etwas? Na ja wenn ja dann mach ich einfach noch eine Spalte mit Datumn und die andere heißt dann eben UhrZeit oder?
LG Verena
yo,
Ich weiß nicht ist das Datum so wichtig für so etwas? Na ja wenn ja dann mach ich einfach noch eine Spalte mit Datumn und die andere heißt dann eben UhrZeit oder?
ob das datum wichtig ist oder nicht, dass ist dir und deinem design überlassen. aber es wäre doch schon interessant, nicht nur zu welcher uhrzeit ein post gemacht wurde, sondern auch an welchem tag. dafür kannst du ruhig auch eine spalte nehmen. je nach dbms gibt es dafür entsprechende datentypen, timestamp wäre so einer.
Ilja
Hi Ilja,
Ok ich habe das jetzt mal geamcht. Hier kommt die Tabelle so wie ich sie angelegt habe.
CREATE TABLE geschichte\_1
(
id
INT( 11 ) NOT NULL AUTO_INCREMENT ,
user
VARCHAR( 30 ) NOT NULL ,
text
TEXT NOT NULL ,
uhrzeit
TIMESTAMP NOT NULL ,
datum
DATE NOT NULL ,
PRIMARY KEY ( id
)
);
LG Verena
Hello Verena,
Ok ich habe das jetzt mal geamcht. Hier kommt die Tabelle so wie ich sie angelegt habe.
CREATE TABLE
geschichte\_1
(
id
INT( 11 ) NOT NULL AUTO_INCREMENT ,
user
VARCHAR( 30 ) NOT NULL ,
text
TEXT NOT NULL ,
uhrzeit
TIMESTAMP NOT NULL ,
datum
DATE NOT NULL ,
PRIMARY KEY (id
)
);
Soll auch editiert werden können?
Dann solltest Du noch einen "Conflict-Counter" oder "Update-Zähler" hinzufügen. Damit kann man besser feststellen, ob der datensatz seit dem Auslesen (von einem anderen User) beeits wieder beschrieben wurde. Bei jedem Update wird der einfach um eins hichgezählt und in der Where-Klausel vorher danach gefragt, ob er noch den bekannten Stand hat. Sonst wird das Update abgelehnt. Dadurch verbessert man die Sicherheit im konkurrierenden Betrieb.
Und wenn ein Post immer die Antwort auf ein anderes ist, und auch Verzweigungen möglich sein sollen, dann wäre die ID_PARENT noch ganz hilfreich. Aber Du hast ja noch nicht gesagt, ob eine Baumstruktur oder nur eine reine lineare Struktur entstehen soll.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo Tom,
Soll auch editiert werden können?
hmm wenn ich ehrlich bin dann habe ich darüber noch gar nicht so richtig nachgedacht. Deshalb kommt mal meine Frage ist das sehr viel mehr Arbeit, wenn man das auch noch editieren kann und wie muss ich das machen. Oder kann man das im nachhinein immer noch einbauen? Oder macht man das immer gleich von anfang an?
Dann solltest Du noch einen "Conflict-Counter" oder "Update-Zähler" hinzufügen.
Hmm was meinst du denn damit? Wie wurde das denn aussehen oder ist das nur eine weitere Spalte in der Tabelle?
Und wenn ein Post immer die Antwort auf ein anderes ist, und auch Verzweigungen möglich sein sollen, dann wäre die ID_PARENT noch ganz hilfreich.
Auch hier verstehe ich nicht ganz was du meinst :-(
Aber Du hast ja noch nicht gesagt, ob eine Baumstruktur oder nur eine reine lineare Struktur entstehen soll.
Nee Nee das soll einfach immer untereinander dagestellt werden. Also wenn einer was geschrieben hat, dann soll das einfach unter das andere kommen usw... verstehst du wie ich das meine?
LG Verena
yo,
Soll auch editiert werden können?
hmm wenn ich ehrlich bin dann habe ich darüber noch gar nicht so richtig nachgedacht. Deshalb kommt mal meine Frage ist das sehr viel mehr Arbeit, wenn man das auch noch editieren kann und wie muss ich das machen. Oder kann man das im nachhinein immer noch einbauen? Oder macht man das immer gleich von anfang an?
ich halte das editieren grundsätzich für sehr kritisch, mit dem was du vor hast. schließlich bauen die beiträge aufeinander auf. und wen dann beiträge nachträglich geändert werden, dann ist chaos angesagt. ich würde diese funktion einfach mal weglassen, macht auch weniger arbeit ;-)
Ilja
Hi Ilja,
ich halte das editieren grundsätzich für sehr kritisch, mit dem was du vor hast. schließlich bauen die beiträge aufeinander auf. und wen dann beiträge nachträglich geändert werden, dann ist chaos angesagt. ich würde diese funktion einfach mal weglassen, macht auch weniger arbeit ;-)
Joa ich denke auch, dass ich das jetzt erst mal weg lassen werde kann das ja dann später immer noch einbauen oder ?
LG Verena
Hello,
Soll auch editiert werden können?
hmm wenn ich ehrlich bin dann habe ich darüber noch gar nicht so richtig nachgedacht. Deshalb kommt mal meine Frage ist das sehr viel mehr Arbeit, wenn man das auch noch editieren kann und wie muss ich das machen. Oder kann man das im nachhinein immer noch einbauen? Oder macht man das immer gleich von anfang an?
Dann solltest Du noch einen "Conflict-Counter" oder "Update-Zähler" hinzufügen.
Hmm was meinst du denn damit? Wie wurde das denn aussehen oder ist das nur eine weitere Spalte in der Tabelle?
Es ist nur eine zusätzliche Spalte, die bei jeder Änderung des Datensatzes incrementiert wird. Das ist die einfachste Methode. Die würde ich im Design schon vorsehen. Die Editierfunktion als solche kannst Du später nachpflegen. Wenn Du Dir den Thread zum Thema Warenkorb anschaust, dort habe iche etwas über die Formularsteuerung geschrieben:
Nee Nee das soll einfach immer untereinander dagestellt werden. Also wenn einer was geschrieben hat, dann soll das einfach unter das andere kommen usw... verstehst du wie ich das meine?
Schon verstanden. dann vergiss die Bäume und die Parents.
Dann ergibt sich das Untereinander einfach aus den incremetierten IDs. Wenn also jemand auf den letzen Beitrag etwas schreibt, holst Du Dir dessen ID und wenn Du nun den neuen (nach Prüfung) einfügst, dann erhöhst Du die gemerkte ID einfach um eins und versuchst das Insert. Wenn Deine ID-Spalte Unique ist, können keine zwei gleichen IDs eingefügt werden. Wenn B also schneller war als A mit dem Antworten, bekommt er den aktuelle letzten Datensatz (und ggf. seine Daten wieder vorgelegt) und eine Fehlermeldung, dass eben jemand anders schneller war.
Damit niemand die IDs manipulieren kann, speicherst Du sie unter einem zufälligen Form-Zertifikat in der Session ab. Wenn nun das Formular ausgefüllt zurückgepostet hat, und das Formular-Zertifikat ist in der Session nicht vorhanden, dann hat der Poster wahrscheinlich versucht zu manipulieren.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
yo,
CREATE TABLE
geschichte\_1
(
id
INT( 11 ) NOT NULL AUTO_INCREMENT ,
user
VARCHAR( 30 ) NOT NULL ,
text
TEXT NOT NULL ,
uhrzeit
TIMESTAMP NOT NULL ,
datum
DATE NOT NULL ,
PRIMARY KEY (id
)
);
nun, so ist das datum doppelt. der datentyp timestamp enthält sowohl die uhrzeit als auch das datum, sprich du kannst die spalte datum weglassen. die id kann man als reihenfolge der beiträge nehmen, ich würde dafür aber noch eine extra spalten einbauen, die kein autoincrement enthält, sondern "per hand" hoch zählt.
Ilja
Hallo Ilja,
nun, so ist das datum doppelt. der datentyp timestamp enthält sowohl die uhrzeit als auch das datum, sprich du kannst die spalte datum weglassen. die id kann man als reihenfolge der beiträge nehmen.
Ok dann nehme ich mal wieder die eine Spalte mit dem Datum raus :-)
ich würde dafür aber noch eine extra spalten einbauen, die kein autoincrement enthält, sondern "per hand" hoch zählt.
Hmm OK dann lass ich die eine Spalte doch einfach drin und nenn sie um in laufende Nummer oder so. Mom ich mal das mal eben kurz.
LG Verena
yo,
Hmm OK dann lass ich die eine Spalte doch einfach drin und nenn sie um in laufende Nummer oder so. Mom ich mal das mal eben kurz.
uhmm nein, eine extra spalte. die alte nicht rausnehmen und nicht umbennnen. die id ist was anderes als die reihenfolge, sprich ich würde beides nehmen...
Ilja
Hello,
CREATE TABLE
geschichte\_1
(
id
INT( 11 ) NOT NULL AUTO_INCREMENT ,
user
VARCHAR( 30 ) NOT NULL ,
text
TEXT NOT NULL ,
uhrzeit
TIMESTAMP NOT NULL ,
datum
DATE NOT NULL ,
PRIMARY KEY (id
)
);nun, so ist das datum doppelt. der datentyp timestamp enthält sowohl die uhrzeit als auch das datum, sprich du kannst die spalte datum weglassen. die id kann man als reihenfolge der beiträge nehmen, ich würde dafür aber noch eine extra spalten einbauen, die kein autoincrement enthält, sondern "per hand" hoch zählt.
Zu erwähnen wäre die Besonderheit des Typs TIMESTAMP bei MySQL. Die erste Spalte dieses Typs wird automatisch auf NOW() gesetzt, wenn man sie beim Update nicht angibt oder mit NULL belegt. Es wäre also ggf. schon besser, zwei Spalten des Typs zu pflegen. Die erste für "Last Updated" (wenn später doch mal die Editierfunktion kommt), die zweite für "First Inserted"
Harzliche Grüße aus http://www.annerschbarrich.de
Tom