T_ENCAPSED_AND_WHITESPACE - bekomme ich nicht ausgemerzt

Lichtpilger

Erfahrenes Mitglied
Hullo,
Das komische an diesem hier ist auch, das dieser Code durchlaufen wird obwohl ich noch garkeine Varible übergeben habe um die IF abfrage anzusprechen :eek:

PHP:
$partyname = $_POST[partyname];
$partydatum = $_POST[partydatum];
$partyort = $_POST[partyort];


if ($_POST[todo] == "A") {
                     include("include/mysql_connect.php");
                     $neu = mysql_query("UPDATE partys SET partyname = '$partyname',partydatum = '$partydatum',partyort = '$partyort' WHERE zaehler = $party_edit");
	 			 if ($_FILES['flyer']['name'] != ""){
						  //hochladen - kopieren
	      		         $screen_verz = "gallerie/partys/".$_FILES['flyer']['name'];
						   move_uploaded_file($_FILES['flyer']['tmp_name'],$screen_verz);

						  // DB Updaten
                    				  include("include/mysql_connect.php");
                    				  $neuB = mysql_query("UPDATE partys SET flyer = '$_FILES['flyer']['name']' WHERE zaehler = $party_edit");
					     			    }

                    }

Die Fehlermeldung ist:
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /srv/www/htdocs/web354/html/intern/party_edit.php on line 20


Line 20 ist wie oben:

PHP:
$neuB = mysql_query("UPDATE partys SET flyer = '$_FILES['flyer']['name']' WHERE zaehler = $party_edit");

Ich hatte vor, wenn ich mit einem Submit $todo mit "A" übergebe das obige ausgeführt wird.
Mysql soll ein paar Variablen speichern und wenn aus dem Formular eine Datei mit hochgeladen wird, eine weiter Variable gespeichert wird.

Nur, wird nicht mehr als die Fehlermeldung angezeigt ?!

Das ganze ist gaaanz oben im PHP Blatt.
Der Server läuft im save-mode.

Es scheint irgendwo ein Leerzeichen oder so zu sein was nicht gewollt ist.
Nur find ich absolut keine unstimmigkeit :confused:
Vorallem das er das durchläuft, nur beim alleinigen aufruf der Seite ist seltsam.

Hat jemand evtl einen Tip was das vor sich geht?
Danke schonmal fürs durchlesen :)

Grüße,
Lichtpilger
 
Hi,
versuch's mal mit
PHP:
 $neuB = mysql_query("UPDATE partys SET flyer = '" . $_FILES['flyer']['name'] . "' WHERE zaehler = " . $party_edit);

Gruß
Marvin
 
Zuletzt bearbeitet:
Hullo,
jup, das hat geklappt, danke :)

Ich werde das jetzt auch in die andren $_POST und $_FILES eingeben.
Er übergeht mein geschriebenes als ob es garnicht da wäre wenn ich das "A" übermittle.

In dem fall habe ich Leerzeichen davor und dahinter eingefügt, sehe ich das richtig?
Warum ist es nötig es so zu schreiben?

Danke vielmals :)

Lichtpilger
 
Ok, das war keine gute Idee das jetzt überall einzufügen *g
Ich warte evtl besser auf eine erklärung bevor ich das weiter rumfrosche :D

Danke aber erstmal das ich die Seite wenigstens wieder geladen bekomme :)

Grüße,
Lichtpilger
 
Probier mal Folgendes:
PHP:
<?php

	$partyname = $_POST[partyname];
	$partydatum = $_POST[partydatum];
	$partyort = $_POST[partyort];


	if( isset($_POST['todo']) && $_POST['todo'] == 'A' ) {

		include 'include/mysql_connect.php';
		$query = "
			UPDATE
			        `partys`
			  SET
			        `partyname`  = '".mysql_real_escape_string($_POST['partyname'])."',
			        `partydatum` = '".mysql_real_escape_string($_POST['partydatum'])."',
			        `partyort`   = '".mysql_real_escape_string($_POST['partyort'])."'
			  WHERE
			        `zaehler` = '".mysql_real_escape_string($zaehler)."'
			";
		$result = mysql_query($query)
			// or-die-Zusatz zu Fehlerdiagnose
			or die('<p><strong>Datenbankabfrage schlug fehl:</strong>'.htmlspecialchars(mysql_error()).'</p><pre>'.htmlspecialchars($query).'</pre>');

		if( isset($_FILES['flyer']) && $_FILES['flyer']['name'] != '' ) {
			// hochladen - kopieren
			move_uploaded_file($_FILES['flyer']['tmp_name'], 'gallerie/partys/'.$_FILES['flyer']['name']);
			// DB Updaten
			$query = "
				UPDATE
				        `partys`
				  SET
				        `flyer` = '".mysql_real_escape_string($_FILES['flyer']['name'])."'
				  WHERE
				        `zaehler` = '".mysql_real_escape_string($party_edit)."'
				";
			$result = mysql_query($query)
				// or-die-Zusatz zur Fehlerdiagnose
				or die('<p><strong>Datenbankabfrage schlug fehl:</strong>'.htmlspecialchars(mysql_error()).'</p><pre>'.htmlspecialchars($query).'</pre>');
		}

	}

?>
 
Hullo,
das klappt nun.
Ich sehe ein, welchen massiven Vorteil die übersichtliche und vorallem
noch ausführlichere schreibweise bringt (kontrollen mit Fehlermeldungen / dessen Abfrage).


Ich danke vielmals für das neu schreiben meines "Gekritzels" *g, und deiner mühe natürlich.
Ich habe mir neue Funktionen wie "mysql_real_escape_string" angeschaut und werde sie weiterhin verwenden.
Genauso werde ich "isset" fest einsetzen :D

Eine Frage hätte ich noch:

Welchen Vorteil hat es, einfache Anführungszeichen anstatt dem doppelten zu nutzen?
Oder, nach was muss ich schaun, um das irgendwo nachzuschlagen?

Grüße alle :)
Lichtpilger
 
Mit einfachen Anführungszeichen (U+0027) ausgezeichnete Zeichenketten haben den Vorteil, dass sie im Gegensatz zu mit doppelten Anfürhungszeichen (U+0022) ausgezeichnete Zeichenketten vom PHP-Interpreter direkt als Zeichenketten übernommen werden und nicht weiter verarbeitet werden, um beispielsweise eingebettete Variablen durch ihre Werte zu erstzen. Dieses Verhalten kann – wenn auch nur geringe – Geschwindigkeitsvorteile bei der Verarbeitung eines Skriptes bringen.
 

Neue Beiträge

Zurück