Falls du da tatsaechlich blablabla reinschreiben moechtest (beziehungsweise irgend eine andere Zeichenkette) und das nicht als Platzhalter fuer einen nicht-text-Wert steht, dann musst du darum entweder ' oder " setzen.VALUES (blablabla)
Apache - MySql - PHP - phpMyAdmin
-
- Süßwasserpirat
- Beiträge: 344
- Registriert: 26.07.2006, 03:57
- Wohnort: Dresden-Südvorstadt
- Fightmeyer
- Riesiger Roboteraffe
- Beiträge: 7309
- Registriert: 16.12.2004, 22:51
- Wohnort: Potsdam
- Kontaktdaten:
Das war es: ' hat gefehlt. Ich dachte, das ' muß nur rum, wenn es sich um eine Variable handelt.
Wie auch immer. Jetzt funzt es.
Danke.
EDIT: Gibt es eigentlich ne kostenslose brauchbare IDE für PHP?
Das ständige Klammer-Hochstrich-Anführungszeichen-Semikolon-Gesetze lädt sehr zu Fehlern ein.
Da wäre es nicht schlecht, wenn ein Programm, einem da die Kontrolle abnehmen würde.
EDIT2:
Neues Problem:
Hier mal ein Codeauszug:
Das funzt an sich prima. Ich habe ein Formularbutton in meinem HTML-Bereich und sobald ich den drücke, soll er mir den Text aus einem Textfel(Textarea) zusammen mit dem aktuellen Datum in die Datenbankschreiben.
Das Problem ist allerdings, daß die Buttoneigenschaft nicht wieder zurückgesetzt wird. Das heißt, wenn ich nach dem Buttondrücken F5 drücke, um die Seite nochmal zu aktualisieren, trägt er den Text wieder ein. Und wieder, und wieder und wieder.
Ich vermute also mal, daß man den Button irgendwie zurücksetzen muß, oder sehe ich das falsch?
Wie auch immer. Jetzt funzt es.
Danke.
EDIT: Gibt es eigentlich ne kostenslose brauchbare IDE für PHP?
Das ständige Klammer-Hochstrich-Anführungszeichen-Semikolon-Gesetze lädt sehr zu Fehlern ein.
Da wäre es nicht schlecht, wenn ein Programm, einem da die Kontrolle abnehmen würde.
EDIT2:
Neues Problem:
Hier mal ein Codeauszug:
Code: Alles auswählen
if($_POST['Btn_save'] != "")
{
$neuenachricht=$_POST['Text'];
$datum = date("Y.m.d",time());
mysql_query("insert into nachrichten (newseintrag, datum) values ('$neuenachricht', '$datum')");
unset($_POST['Btn_save']);
}
Das Problem ist allerdings, daß die Buttoneigenschaft nicht wieder zurückgesetzt wird. Das heißt, wenn ich nach dem Buttondrücken F5 drücke, um die Seite nochmal zu aktualisieren, trägt er den Text wieder ein. Und wieder, und wieder und wieder.
Ich vermute also mal, daß man den Button irgendwie zurücksetzen muß, oder sehe ich das falsch?
- DasJan
- Adventure-Treff
- Beiträge: 14683
- Registriert: 17.02.2002, 17:34
- Wohnort: London
- Kontaktdaten:
Willkommen in der Welt der Programmierer.Fightmeyer hat geschrieben:EDIT: Gibt es eigentlich ne kostenslose brauchbare IDE für PHP?
Das ständige Klammer-Hochstrich-Anführungszeichen-Semikolon-Gesetze lädt sehr zu Fehlern ein.

Eine IDE wüsste auch nicht, ob blablabla eine Variable ist oder als String betrachtet werden soll, daher kann sie dir das Setzen von Anführungsstrichen nicht wirklich abnehmen.
Das Jan
"If you are the smartest person in the room, you are in the wrong room."
- Fightmeyer
- Riesiger Roboteraffe
- Beiträge: 7309
- Registriert: 16.12.2004, 22:51
- Wohnort: Potsdam
- Kontaktdaten:
Bei VB ist das einfacher...DasJan hat geschrieben: Willkommen in der Welt der Programmierer.
Eine IDE wüsste auch nicht, ob blablabla eine Variable ist oder als String betrachtet werden soll, daher kann sie dir das Setzen von Anführungsstrichen nicht wirklich abnehmen.
Das Jan

Die könnte das zwar nicht erkennen, die wüßte aber, wann ' anstatt ` erwartet wird.
Bin heute fast verzweifelt, weil mir nicht deutlich wurde, daß PHP auch noch zwischen diesen beiden Symbolen unterscheidet...

-
- Tastatursteuerer
- Beiträge: 736
- Registriert: 26.12.2005, 12:33
- Wohnort: Villa des Tentakels
- Kontaktdaten:
Und ich erachte es als Vorteil, wenn ich einen Backtick (`) setzen kann, um was ganz anderes zu bezwecken und mir keine neue Funktion einprägen muß 
Zu deinem anderen "Problem": Gibst du nach dem Auswerten eine neue Seite aus oder bleibt dein Formularfeld so stehen? "Button rücksetzen" gibts nämlich auch nur bei VB un dnicht bei HTML
Fazit: Hol dir wirklich erstmal ein Buch/Skript, das sich mit den Grundlagen von PHP und HTML vertraut macht.
Oder mach das ganze mit ActiveX und asp(x) - das kann man sich zusammenklicken
[add] Aber Syntax-Highlighting hast du an?

Zu deinem anderen "Problem": Gibst du nach dem Auswerten eine neue Seite aus oder bleibt dein Formularfeld so stehen? "Button rücksetzen" gibts nämlich auch nur bei VB un dnicht bei HTML

Fazit: Hol dir wirklich erstmal ein Buch/Skript, das sich mit den Grundlagen von PHP und HTML vertraut macht.
Oder mach das ganze mit ActiveX und asp(x) - das kann man sich zusammenklicken

[add] Aber Syntax-Highlighting hast du an?
- max_power
- Zombiepirat
- Beiträge: 10065
- Registriert: 16.04.2002, 20:30
- Wohnort: Uppsala
- Kontaktdaten:
In solchen Fällen habe ich es immer so gemacht, dass ich vor dem Schreiben in die DB abfrage, ob der Text schon enthalten ist und in dem Fall nichts dazugespeichert habe. Da der Browser beim Aktualisieren einfach genau das schickt, was er beim letzten Mal auch geschickt hat, befürchte ich, dass ein einfaches Zurücksetzen des Buttons nicht möglich ist.Fightmeyer hat geschrieben:Ich vermute also mal, daß man den Button irgendwie zurücksetzen muß, oder sehe ich das falsch?
Es gibt übrigens PHP-Plugins für Eclipse, vielleicht können die sowas? Bei Java ist Eclipse ja sehr leistungsstark.
„Es müsste immer Musik da sein, bei allem was du machst. Und wenn's so richtig Scheiße ist, dann ist wenigstens noch die Musik da. Und an der Stelle, wo's am allerschönsten ist, da müsste die Platte springen und du hörst immer nur diesen einen Moment.“ (Floyd, Absolute Giganten)
- Fightmeyer
- Riesiger Roboteraffe
- Beiträge: 7309
- Registriert: 16.12.2004, 22:51
- Wohnort: Potsdam
- Kontaktdaten:
- DasJan
- Adventure-Treff
- Beiträge: 14683
- Registriert: 17.02.2002, 17:34
- Wohnort: London
- Kontaktdaten:
Ahhh... da liegt das Problem. 
Bevor du dich in so was Komplexes wie Eclipse einarbeitest, rate ich dir, einfach einen anständigen Texteditor zu nehmen. Das gilt auch für alle anderen Sachen, die du bis jetzt mit Notepad gemacht hast. Ich benutze UltraEdit, der kostet aber Geld. Im kostenlosen Bereich habe ich nicht so viel Erfahrung, aber ich habe von jEdit und Notepad++ Positives gehört. Syntaxhighlighting für PHP unterstützen die jedenfalls alle.
Das Jan

Bevor du dich in so was Komplexes wie Eclipse einarbeitest, rate ich dir, einfach einen anständigen Texteditor zu nehmen. Das gilt auch für alle anderen Sachen, die du bis jetzt mit Notepad gemacht hast. Ich benutze UltraEdit, der kostet aber Geld. Im kostenlosen Bereich habe ich nicht so viel Erfahrung, aber ich habe von jEdit und Notepad++ Positives gehört. Syntaxhighlighting für PHP unterstützen die jedenfalls alle.
Das Jan
"If you are the smartest person in the room, you are in the wrong room."
- Fightmeyer
- Riesiger Roboteraffe
- Beiträge: 7309
- Registriert: 16.12.2004, 22:51
- Wohnort: Potsdam
- Kontaktdaten:
- max_power
- Zombiepirat
- Beiträge: 10065
- Registriert: 16.04.2002, 20:30
- Wohnort: Uppsala
- Kontaktdaten:
Ansonsten kann ich winscite empfehlen. Wenn man bereit ist, in die Config-Dateien reinzuschauen, bietet er sogar noch einige nette Funktionen mehr, ist aber nicht unbedingt nötig.
edit: http://scintilla.sourceforge.net/SciTEDownload.html
edit: http://scintilla.sourceforge.net/SciTEDownload.html
Zuletzt geändert von max_power am 05.05.2007, 11:18, insgesamt 2-mal geändert.
„Es müsste immer Musik da sein, bei allem was du machst. Und wenn's so richtig Scheiße ist, dann ist wenigstens noch die Musik da. Und an der Stelle, wo's am allerschönsten ist, da müsste die Platte springen und du hörst immer nur diesen einen Moment.“ (Floyd, Absolute Giganten)
- zeebee
- Adventure-Treff
- Beiträge: 4335
- Registriert: 07.06.2002, 00:00
- Wohnort: Scummland
- Kontaktdaten:
- Persisteus
- Hobby-Archäologe
- Beiträge: 177
- Registriert: 20.06.2002, 16:43
- Wohnort: Vluyn
- Kontaktdaten:
@zeebee: Ich arbeite auch mit PSPad!
Mir gefällt das Programm sehr gut, vor allem die Anzeige aller Formatierungssymbole (Leerzeichen, Tabs, Zeilenende) ist dort meiner Meinung nach gut gelöst.
@Fightmeyer:

@Fightmeyer:
Normalerweise müsste der Browser vorher eine Warnmeldung anzeigen (irgendso ein Blahblubb mit "Post-Daten"), die darauf hinweist, dass die Daten nochmals übermittelt werden. In vielen Foren (und ich glaube, auch in diesem) ist es ja so gelöst, dass nach dem Übermitteln der Daten (z.B. beim Schreiben eines Beitrags) direkt zu einer anderen Seite weitergeleitet wird, die dann automatisch keine Post-Daten mehr enthält.Das Problem ist allerdings, daß die Buttoneigenschaft nicht wieder zurückgesetzt wird. Das heißt, wenn ich nach dem Buttondrücken F5 drücke, um die Seite nochmal zu aktualisieren, trägt er den Text wieder ein. Und wieder, und wieder und wieder.
Das geht leider nicht. Du musst je nach Verwendungszweck selbst entscheiden können, welche Zeichen gesetzt werden. Ein bisschen Intelligenz und Fleiß muss auch ein Webdesigner mitbringen...Das ständige Klammer-Hochstrich-Anführungszeichen-Semikolon-Gesetze lädt sehr zu Fehlern ein.
Da wäre es nicht schlecht, wenn ein Programm, einem da die Kontrolle abnehmen würde.

- Fightmeyer
- Riesiger Roboteraffe
- Beiträge: 7309
- Registriert: 16.12.2004, 22:51
- Wohnort: Potsdam
- Kontaktdaten:
- Persisteus
- Hobby-Archäologe
- Beiträge: 177
- Registriert: 20.06.2002, 16:43
- Wohnort: Vluyn
- Kontaktdaten:
Ja, da hast du wohl Recht. Aber für alle Editoren, die ich bisher kenne, ist mysql_query eine ganz normale Funktion, und der Übergabeparameter eine ganz normale Zeichenkette wie jede andere auch. Noch schwieriger wirds ja für den Editor, wenn du die Zeichenkette und den Funktionsaufruf trennst, wie in deinem ersten Beispiel:
Und noch ein Problem gibt es: Im obigen Beispiel könnte genauso gut das Feld blablabla gemeint sein, und nicht unbedingt eine Zeichenkette 'blablabla'. Hier ein Beispiel aus der Praxis, das tatsächlich funktionieren würde:
Das Feld col1 wird auf 15 gesetzt, das Feld col2 auf col1 * 2, also 30.
Folgendes funktioniert leider nicht, weil in VALUES nur Felder auftauchen dürfen, die schon vorher gesetzt wurden:
Wenn du col1 auf col2 * 2 setzen willst, ist der Wert von col2 ja noch gar nicht gesetzt worden => Fehler.
Code: Alles auswählen
$sql="INSERT INTO table1 (Titel) VALUES (blablabla)";
$result = mysql_query($sql);
Code: Alles auswählen
INSERT INTO tbl_name (col1,col2) VALUES(15,col1*2);
Folgendes funktioniert leider nicht, weil in VALUES nur Felder auftauchen dürfen, die schon vorher gesetzt wurden:
Code: Alles auswählen
INSERT INTO tbl_name (col1,col2) VALUES(col2*2,15);
- Fightmeyer
- Riesiger Roboteraffe
- Beiträge: 7309
- Registriert: 16.12.2004, 22:51
- Wohnort: Potsdam
- Kontaktdaten:
Ich hab mir Deinen Vorschlag zu Herzen genommen und wollte das nach der Variante umsetzen. Nachdem ich dann über folgendes Codebeispiesl gestolpert bin http://www.selfphp.info/kochbuch/kochbuch.php?code=21 , hatte ich auch ne recht brauchbare Vorlage. Leider hat dieser Code alleine nicht gefunzt, so daß ich also noch ein bißchen dran gedreht habe.max_power hat geschrieben:In solchen Fällen habe ich es immer so gemacht, dass ich vor dem Schreiben in die DB abfrage, ob der Text schon enthalten ist und in dem Fall nichts dazugespeichert habe. Da der Browser beim Aktualisieren einfach genau das schickt, was er beim letzten Mal auch geschickt hat, befürchte ich, dass ein einfaches Zurücksetzen des Buttons nicht möglich ist.Fightmeyer hat geschrieben:Ich vermute also mal, daß man den Button irgendwie zurücksetzen muß, oder sehe ich das falsch?
Code: Alles auswählen
<?php
if(($_POST['Btn_save']!=""))
{
if(empty($_POST['checkID']))
{
$_POST['checkID'] = md5(microtime());
}
$db_host = "localhost"; // MySQL Hostname
$db_name = "news"; // MySQL Datenbankname
$db_user = "datenbankuser"; // MySQL Benutzername
$db_pass = ""; // MySQL Passwort
$link = mysql_connect ($db_host,$db_user,$db_pass ) // Verbindung zum Datenbankserver aufbauen
or die ("Verbindung fehlgeschlagen!"); // wenn fehlgeschlagen
$db = mysql_select_db($db_name,$link) // Datenbank wählen
or die ("Verbindung fehlgeschlagen"); // wenn fehlgeschlagen
echo $_POST['checkID'];
$sqlCheck = @mysql_query("SELECT id FROM formSend WHERE checkID = '".$_POST['checkID']."'");
if(@mysql_num_rows($sqlCheck) == 1)
{
$message = 'Ihre Daten wurden bereits gespeichert!';
}
else
{
$neuenachricht=$_POST['Text'];
$checkID=$_POST['checkID'];
$datum = date("Y.m.d",time());
mysql_query("insert into nachrichten (newseintrag, datum, checkID) values ('$neuenachricht', '$datum', '$checkID')");
}
}
?>
<html>
<form name="Nachrichten" action="<?php $PHP_SELF ?>" method="post">
<table align="center" border=1>
<tr><td><textarea name="Text" rows="6" style="width:500px;""></textarea></td></tr>
<tr><td><input type="hidden" name="CheckID" value="<?PHP echo $_POST['checkID']; ?>"></td></tr>
<tr><td><input type="submit" name="Btn_save" value="Neuen Beitrag"></td></tr>
</table>
</form>
</html>
- der Button wird gedrückt
- daraufhin wird der Code am Anfang ausgeführt
- sofern CheckID leer, wird eine neue vergeben
- anschließend wird geprüft, ob diese ID schon vorhanden ist
- wenn nciht, dann neuer Datenbankeintrag
Klappt aber nicht. Er trägt wieder fröhlich den selben Käse ein.
Mir wird auch gar nicht klar, wann denn mal ne neue CheckID vergeben wird. Theoretisch wird sie ja nur einmal gesetzt und bleibt dann immer gleich. Eigentlich müßte nach dem ersten eingefügten Datensatz doch immer die meldung kommen, daß der Eintrag bereits vorhanden sei.
EDIT: übrigens ist Notepad++ ne echte Hilfe. Die Darstellung ist schöns trukturiert.
EDIT2: Ich konnte es jetzt weiter eingrenzen. Die Variable für die CheckID ist nach dem Aktualisieren der Seite immer wieder leer. Das macht natürlich die Abfrage völlig sinnlos. Ich versteh bloß nicht, warum er sich einerseits den Status des Buttons nach ner Aktualisierung noch merkt, den von der CheckID aber nicht.