Apache - MySql - PHP - phpMyAdmin

Multimedia pur!
td
Süßwasserpirat
Süßwasserpirat
Beiträge: 344
Registriert: 26.07.2006, 03:57
Wohnort: Dresden-Südvorstadt

Beitrag 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.
I will not be broken, though I am the one that bleeds.
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7309
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Beitrag 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?
Benutzeravatar
DasJan
Adventure-Treff
Adventure-Treff
Beiträge: 14683
Registriert: 17.02.2002, 17:34
Wohnort: London
Kontaktdaten:

Beitrag 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
"If you are the smartest person in the room, you are in the wrong room."
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7309
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Beitrag 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:
TentakelTommy
Tastatursteuerer
Tastatursteuerer
Beiträge: 736
Registriert: 26.12.2005, 12:33
Wohnort: Villa des Tentakels
Kontaktdaten:

Beitrag 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?
Benutzeravatar
max_power
Zombiepirat
Zombiepirat
Beiträge: 10065
Registriert: 16.04.2002, 20:30
Wohnort: Uppsala
Kontaktdaten:

Beitrag 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.
„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)
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7309
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Beitrag 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.
Benutzeravatar
DasJan
Adventure-Treff
Adventure-Treff
Beiträge: 14683
Registriert: 17.02.2002, 17:34
Wohnort: London
Kontaktdaten:

Beitrag 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
"If you are the smartest person in the room, you are in the wrong room."
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7309
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Beitrag von Fightmeyer »

Na das sollte mir auf alle Fälle schonmal weiterhelfen.
Danke.
Benutzeravatar
max_power
Zombiepirat
Zombiepirat
Beiträge: 10065
Registriert: 16.04.2002, 20:30
Wohnort: Uppsala
Kontaktdaten:

Beitrag 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
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)
Benutzeravatar
zeebee
Adventure-Treff
Adventure-Treff
Beiträge: 4335
Registriert: 07.06.2002, 00:00
Wohnort: Scummland
Kontaktdaten:

Beitrag von zeebee »

Ich arbeite mit PSPad: http://www.pspad.com/de/
Ohne Syntax-Highlighting gehts ja wirklich nicht 8)
Wer glaubt, ein Christ zu sein, weil er die Kirche besucht, irrt sich. Man wird ja auch kein Auto, wenn man in eine Garage geht.
Albert Schweitzer
Benutzeravatar
Persisteus
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 177
Registriert: 20.06.2002, 16:43
Wohnort: Vluyn
Kontaktdaten:

Beitrag 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:
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7309
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Beitrag von Fightmeyer »

Stimmt schon. Aber gerade bei den SQL-Anweisungen ist es ja eindeutig, welche Syntax da von Nöten ist.
Benutzeravatar
Persisteus
Hobby-Archäologe
Hobby-Archäologe
Beiträge: 177
Registriert: 20.06.2002, 16:43
Wohnort: Vluyn
Kontaktdaten:

Beitrag 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.
Benutzeravatar
Fightmeyer
Riesiger Roboteraffe
Riesiger Roboteraffe
Beiträge: 7309
Registriert: 16.12.2004, 22:51
Wohnort: Potsdam
Kontaktdaten:

Beitrag 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.
Antworten