Een onbekende "." op regel 82

Status
Niet open voor verdere reacties.

BeoWolff

Gebruiker
Lid geworden
17 jun 2009
Berichten
6
Hallo,

Ik ben bezig met het bouwen van een site in html/css en PHP. Nu geeft de browser de volgende foutmelding:

Parse error: syntax error, unexpected '.' in /var/www/vhosts/silascon.nl/httpdocs/test/admin/functions/add_work.php on line 82

Nu heb ik de PHP code gekopieerd vanaf regel 63 tot 99.

Het gaat dus om regel 82, die heb ik gemarkeerd met [[[ .... ]]] (<-- LET OP!)
Code:
<?PHP

			$placedate = date("d-m-Y / H:i");   

	If($actie == "schrijven"){  

		  $bestand = fopen("work.txt", "a");   
		  $information = str_replace("\n","<br>",$information);   
		  $information = str_replace("|","",$information);   
		  $typework = str_replace("|","",$typework);  
		  $date = str_replace("|","",$date);   
		  $customer = str_replace("|","",$customer);  
		  $supplier = str_replace("|","",$supplier); 

		  fwrite($bestand, "$supplier|$typework|$date|$customerl|$placedate|$REMOTE_ADDR|$information\n");   
		
		  fclose($bestand);   

		  echo "Het werk is goegevoegd<br>";   
	[[[	  echo "<a href="../../work_archive.php" target="blank">Bekijk toegevoegd werk</a>";   ]]]

        }  

	else{  

		  echo "<form method="post" action=add_work.php?actie="schrijven">";  
	          echo "<b>Leverancier:</b><br><input type="text" name="supplier" value="Simon Fikkert"><br>";
		  echo "<b>Type werk:</b><br><input type="text" name="typework" value="Hekwerk-Constructies-Voertuigen-Scheepsbouw"><br>";  
		  echo "<b>Datum:</b><br><input type="text" name="date"><br>";   
		  echo "<b>Klant:</b><br><input type="text" name="customer"><br>";  
		  echo "<b>Informatie:</b><br><textarea cols="30" rows="10" name="information"></textarea><br>";   
		  echo "<input type="submit" value="Verstuur">";   
 		  echo "</form>";   
				
	}  

?>

Is er iemand die snapt waar die onbekende . zich bevind en die mij daarmee helpen kan??


Met vriendelijke groet,

Dick Wolff
 
Laatst bewerkt:
Alle "-tekens binnen de echo moet je escapen. Anders denkt 'ie dat de echo daar ophoudt.
Een " escapen doe je door er een backslash voor te zetten.
Voorbeeld:
echo "dat heet een \"koe\" in de biologie"

Bij HTML kun je trouwens vaak de " veranderen in een ' . Die hoef je niet te escapen.

Op dit moment denkt 'ie dat 'ie moet stoppen met echoën bij a href=".
De punt daarna bij .php valt dus buiten de echo. Een punt heeft binnen php een eigen functie welke volgens de syntax niet klopt. Daarom zegt 'ie dat 'ie niet weet wat 'ie moet doen met de onverwachte "." .
 
Laatst bewerkt:
Vlgs. mij moet het zó zijn:
echo "<a href=\"../../work_archive.php\" target=\"blank\">Bekijk toegevoegd werk</a>";

Hopelijk reageert een echte crack ook nog even ter bevestiging of correctie van wat ik hierboven geschreven heb.

Tijs.
 
Laatst bewerkt:
Moet dat alleen bij Echo?

Dus dan word
echo "<form method="post" action=add_work.php?actie="schrijven">";

echo "<form method=\"post\" action=add_work.php?actie=\"schrijven\">"; ??

Of zit ik nu verkeerd...:o
 
Vlgs. mij moet het zó zijn:
echo "<a href=\"../../work_archive.php\" target=\"blank\">Bekijk toegevoegd werk</a>";

Hopelijk reageert een echte crack ook nog even ter bevestiging of correctie van wat ik hierboven geschreven heb.

Tijs.


Ik heb jouw code alleen ingevoerd en dan zegt hij:

arse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /var/www/vhosts/silascon.nl/httpdocs/test/admin/functions/add_work.php on line 88

Die andere code heb ik nog niks aan gedaan:p
 
Ik heb jouw code alleen ingevoerd en dan zegt hij:

arse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /var/www/vhosts/silascon.nl/httpdocs/test/admin/functions/add_work.php on line 88

Die andere code heb ik nog niks aan gedaan:p

dat komt omdat je ook dit moet veranderen op dezelfde manier:

PHP:
echo "<form method="post" action=add_work.php?actie="schrijven">";
Doe dit met alles. Eigenlijk moet dat met alle php, die backslashes. Het hoeft alleen als je bijv dubbelquotes gebruikt in dubbelquotes. wat je ook kan doen is die van echo veranderen in een '. Dat lost ook het probleem op.
je krijgt dan de volgende totale code:
PHP:
<?PHP

			$placedate = date("d-m-Y / H:i");   

	If($actie == "schrijven"){  

		  $bestand = fopen("work.txt", "a");   
		  $information = str_replace("\n","<br>",$information);   
		  $information = str_replace("|","",$information);   
		  $typework = str_replace("|","",$typework);  
		  $date = str_replace("|","",$date);   
		  $customer = str_replace("|","",$customer);  
		  $supplier = str_replace("|","",$supplier); 

		  fwrite($bestand, "$supplier|$typework|$date|$customerl|$placedate|$REMOTE_ADDR|$information\n");   
		
		  fclose($bestand);   

		  echo "Het werk is goegevoegd<br>";   
	          echo '<a href="../../work_archive.php" target="blank">Bekijk toegevoegd werk</a>';

        }  

	else{  

		  echo '<form method="post" action=add_work.php?actie=schrijven">';  
	          echo '<b>Leverancier:</b><br><input type="text" name="supplier" value="Simon Fikkert"><br>';
		  echo '<b>Type werk:</b><br><input type="text" name="typework" value="Hekwerk-Constructies-Voertuigen-Scheepsbouw"><br>';  
		  echo '<b>Datum:</b><br><input type="text" name="date"><br>';   
		  echo '<b>Klant:</b><br><input type="text" name="customer"><br>';  
		  echo '<b>Informatie:</b><br><textarea cols="30" rows="10" name="information"></textarea><br>';   
		  echo '<input type="submit" value="Verstuur">';   
 		  echo '</form>';   
				
	}  

?>
Je hoef trouwens ook niet alles te echoen hoor. Je kan ook dit doen:
PHP:
<?PHP

			$placedate = date("d-m-Y / H:i");   

	If($actie == "schrijven"){  

		  $bestand = fopen("work.txt", "a");   
		  $information = str_replace("\n","<br>",$information);   
		  $information = str_replace("|","",$information);   
		  $typework = str_replace("|","",$typework);  
		  $date = str_replace("|","",$date);   
		  $customer = str_replace("|","",$customer);  
		  $supplier = str_replace("|","",$supplier); 

		  fwrite($bestand, "$supplier|$typework|$date|$customerl|$placedate|$REMOTE_ADDR|$information\n");   
		
		  fclose($bestand);   
?>
		  Het werk is goegevoegd<br>
	         <a href="../../work_archive.php" target="blank">Bekijk toegevoegd werk</a>
<?php
        }  

	else{  
?>
		  <form method="post" action=add_work.php?actie=schrijven">
	          <b>Leverancier:</b><br><input type="text" name="supplier" value="Simon Fikkert"><br>
		  <b>Type werk:</b><br><input type="text" name="typework" value="Hekwerk-Constructies-Voertuigen-Scheepsbouw"><br>
		  <b>Datum:</b><br><input type="text" name="date"><br>  
		 <b>Klant:</b><br><input type="text" name="customer"><br>
		  <b>Informatie:</b><br><textarea cols="30" rows="10" name="information"></textarea><br> 
		 <input type="submit" value="Verstuur">
 		 </form>  
<?php
	}  

?>

echo heb je echt niet nodig voor lange stukken html code. Je kan ook gewoon de php code onderbreken op de manier zoals hierboven en dan is het probleem ook opgelost. En ja, de code werkt dan nog gewoon zoals het zou moeten doen.

Er zat trouwens nog een onnodige " in die regel 88:

echo "<form method="post" action=add_work.php?actie="schrijven">";

die kan ook voor problemen zorgen. Ik heb dat al weggehaald in de codes die ik je heb gegeven.
 
Laatst bewerkt:
Je ziet dat de 'nieuwe' foutmelding slaat op een stuk code verderop, blijkbaar dus
echo "<form method="post" action=add_work.php?actie="schrijven">";

Dat zou dan óók omgeschreven moeten worden, namelijk naar:
echo "<form method=\"post\" action=add_work.php?actie=\"schrijven\">";

Misschien zijn er ook andere methodes voor, maar wat je dus doet is alle dubbele aanhalingstekens (") 'escapen' door er een backslash (\) vóór te zetten op strings die al 'begonnen' (en beëindigd) zijn met een "-teken. Zie dus dat ik de eerste en laatste "-tekens in zo'n php-regel niet escape.

Blijf dat dus overal doen waar je "-tekens binnen een string wilt gebruiken als de string zelf al met "-tekens begint en eindigt. (mogelijk totdat een crack met slimmere tips komt).

EDIT: De slimme tip is al gekomen: de echo regel beginnen en eindigen met een '-teken ipv. een "-teken.
echo '<form method="post" action=add_work.php?actie="schrijven">';


Tijs.
 
Laatst bewerkt:
Je ziet dat de 'nieuwe' foutmelding slaat op een stuk code verderop, blijkbaar dus
echo "<form method="post" action=add_work.php?actie="schrijven">";

Dat zou dan óók omgeschreven moeten worden, namelijk naar:
echo "<form method=\"post\" action=add_work.php?actie=\"schrijven\">";

Misschien zijn er ook andere methodes voor, maar wat je dus doet is alle dubbele aanhalingstekens (") 'escapen' door er een backslash (\) vóór te zetten op strings die al 'begonnen' (en beëindigd) zijn met een "-teken. Zie dus dat ik de eerste en laatste "-tekens in zo'n php-regel niet escape.

Blijf dat dus overal doen waar je "-tekens binnen een string wilt gebruiken als de string zelf al met "-tekens begint en eindigt. (mogelijk totdat een crack met slimmere tips komt).

EDIT: De slimme tip is al gekomen: de echo regel beginnen en eindigen met een '-teken ipv. een "-teken.
echo '<form method="post" action=add_work.php?actie="schrijven">';


Tijs.
en als je nog een keer refreshed kan je zien dat je ook de php code kan onderbreken ipv die echos. Je hoeft trouwens sowieso niet steeds al die code te echoen. Je had ook gewoon heel die html code op een echotje kunnen zetten. Zou wel minder overzichtelijk zijn, maar toch. Ik gebruik zulke onderbrekeningen constant in mijn scripts. Ik heb zo bijvoorbeeld een CMS script geedit voor de iPhone/iPod Touch, een soort van PHPMyAdmin gemaakt (heel erg geminimaliseerd met maar enkele opties). Je kan trouwens mocht je dat willen even naar www.gdscei.com/tp gaan als je mn portofolio wilt bekijken met mijn scripts =) (ze zijn eigenlijk allemaal bedoeld voor de iOS apparaten, ik ben ook iOS Web Developer XD)

edit: volgens mij is de TS nog niet zo lang geleden begonnen met PHP denk ik zomaar? Dit is namelijk basis PHP. En je scripts zien erg uit naar geedite scripts van andere mensen XD
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan