Seite 2 von 4

Verfasst: 03.05.2007, 23:57
von td
VALUES (blablabla)
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.

Verfasst: 04.05.2007, 08:06
von Fightmeyer
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:

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

Verfasst: 04.05.2007, 15:39
von DasJan
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.
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

Verfasst: 04.05.2007, 16:01
von Fightmeyer
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
Bei VB ist das einfacher...:-)

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... :roll:

Verfasst: 04.05.2007, 16:29
von TentakelTommy
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?

Verfasst: 04.05.2007, 16:37
von max_power
Fightmeyer hat geschrieben:Ich vermute also mal, daß man den Button irgendwie zurücksetzen muß, oder sehe ich das falsch?
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.

Es gibt übrigens PHP-Plugins für Eclipse, vielleicht können die sowas? Bei Java ist Eclipse ja sehr leistungsstark.

Verfasst: 04.05.2007, 17:10
von Fightmeyer
TentakelTommy hat geschrieben: [add] Aber Syntax-Highlighting hast du an?
???

Ich arbeite zur Zeit mit dem stinknormalen Windowseditor.

Deswegen ja meine Frage nach ner IDE.

Verfasst: 04.05.2007, 17:35
von DasJan
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

Verfasst: 04.05.2007, 18:05
von Fightmeyer
Na das sollte mir auf alle Fälle schonmal weiterhelfen.
Danke.

Verfasst: 04.05.2007, 20:19
von max_power
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

Verfasst: 05.05.2007, 11:14
von zeebee
Ich arbeite mit PSPad: http://www.pspad.com/de/
Ohne Syntax-Highlighting gehts ja wirklich nicht 8)

Verfasst: 05.05.2007, 12:06
von Persisteus
@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:
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.
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 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.
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... :roll:

Verfasst: 05.05.2007, 12:11
von Fightmeyer
Stimmt schon. Aber gerade bei den SQL-Anweisungen ist es ja eindeutig, welche Syntax da von Nöten ist.

Verfasst: 05.05.2007, 14:03
von Persisteus
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:

Code: Alles auswählen

$sql="INSERT INTO table1 (Titel) VALUES (blablabla)";

$result = mysql_query($sql);
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:

Code: Alles auswählen

INSERT INTO tbl_name (col1,col2) VALUES(15,col1*2);
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:

Code: Alles auswählen

INSERT INTO tbl_name (col1,col2) VALUES(col2*2,15);
Wenn du col1 auf col2 * 2 setzen willst, ist der Wert von col2 ja noch gar nicht gesetzt worden => Fehler.

Verfasst: 07.05.2007, 12:54
von Fightmeyer
max_power hat geschrieben:
Fightmeyer hat geschrieben:Ich vermute also mal, daß man den Button irgendwie zurücksetzen muß, oder sehe ich das falsch?
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.
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.

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>
Ich hab mir das so vor gestellt:
- 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.