ugrás a tartalomhoz

Parse error: syntax error, unexpected '"'

mauladam · 2013. Dec. 22. (V), 19.02
Sziasztok!

Sajnos már mindent átnéztem, de nem tudok rájönni a hiba okára.
Hiba: Parse error: syntax error, unexpected '"'

Kód:

$file = $folder_pages.$folder_titles.$epage."_titles.php";
unlink($file);
fopen($file, "w");
fwrite($file, "<?php\n\n");
$sql = "SELECT * FROM ".$mysql_table_pages." WHERE id = '".$epage."'";
$query = mysql_query($sql);
if(mysql_num_rows($query) == 1){
        unlink($file);
	$lang_prefix = explode(",", $row["available_languages"]);
	fwrite($file, "<?php\n\n");
	fwrite($file, "$$titles = array();\n");
	for($i = 0; $i<count($lang_prefix); $i++){
	        fwrite($file, "$$titles[".$lang_prefix[$i]."] = '".$_POST["title_".$lang_prefix[$i]]."';\n");
	}
        fwrite($file, "\n\n?>");
	fclose($file);
}

$folder_pages = "pages/";
$folder_titles = "titles/";
$epage = 5 /* Nem mindig 5 | Ez egy id ami sessionben utazott át az előző oldalról. */
/* Az available
_languages nevü mező ilyenekt tárol pl.: hu,eng */
A sor amire az errort írja:
fwrite($file, "$$titles[".$lang_prefix[$i]."] = '".$_POST["title_".$lang_prefix[$i]]."';\n");
Köszönöm a segítséget!
 
1

Változók string interpolációban

complex857 · 2013. Dec. 22. (V), 19.54
Ha csak literál "$" -t akartál a "$titles" változó tartalma elé tenni az interpolációban akkor rakd külön konkatenációba, mert így a [ -t a változó részének nézi:

fwrite($file, "$".$titles."[" ...
Vagy rakhatsz köré {} -ket, hogy megmagyarázd PHPnak, hol végződik:

fwrite($file,"${$titles}[" ...
(Biztos kellett 3 is ebből a topicból?)
2

Nekem viszont az az érzésem,

kuka · 2013. Dec. 22. (V), 20.01
Nekem viszont az az érzésem, hogy árnyékolni kellene inkább a dollár jelet:

fwrite($file, "\$titles[".$lang_prefix[$i]."] = '".$_POST["title_".$lang_prefix[$i]]."';\n");
És hasonlóan 2 sorral fennebb is:

fwrite($file, "\$titles = array();\n");
3

Csak az utolsó, hibás sort

Szabimaci · 2013. Dec. 22. (V), 20.01
Csak az utolsó, hibás sort nézve, hiányzik egy pont a .$_POST["title résznél az " előtt.
4

Akkor rajtam is alaposan

kuka · 2013. Dec. 22. (V), 20.12
Akkor rajtam is alaposan kifogott, mert nem találom, honnan hiányzik. Akkor sem ha felaprítom átlátható darabokra:

fwrite(
  $file,

  "$$titles[" .
  $lang_prefix[$i] .
  "] = '" .
  $_POST["title_" . $lang_prefix[$i]] .
  "';\n"
);
5

7. sor első idézőjel elől

Szabimaci · 2013. Dec. 22. (V), 20.49
7. sor első idézőjel elől
$_POST["title_" . $lang_prefix[$i]] .
helyett:
$_POST[ . "title_" . $lang_prefix[$i]] .
8

Ott egy pont

Pepita · 2013. Dec. 22. (V), 21.07
Ezt én sem vettem észre.

Viszont nemigazán értem, hogy
- mi akar lenni ez a PHP-ból írunk _POST-kezelő másik PHP-t;
- tényleg miért 3-szoros a téma (ha sürgős, ezzel csak árt magának is).

SZERK.: Nem-nem, nem nyertél, mert éppen most POSTolt adat kell neki oda, nem szövegesen írta a "$_POST"-ot sem! Bocsi, simán nincs ott pont!
11

Jobban megnéztem

Szabimaci · 2013. Dec. 23. (H), 11.53
Jobban megnéztem, és lehet, hogy kezdem érteni, mi is akar lenni.
De a sok idézőjel keverése akkor sem igazán jó, szívtam ilyennel én is sokat.
Tapasztalatom szerint szerencsésebb és kevesebb hibalehetőséggel jár inkább több sorban, akár több változóval is összerakni egy ilyen összetett sztringet, és a függvényhívásba már csak egy változót tenni. (Illetve az aposztróf is használható, csak akkor is jól oda kell figyelni a különbségekre.)
(Bocs, de nincs igazán időm - az igazat megvallva most kedvem sem - jobban belemászni, mi lenne az igazán helyes megoldás, a fentiek csak segítségképpen.)
12

Tapasztalatom szerint

bamegakapa · 2013. Dec. 23. (H), 12.41
Tapasztalatom szerint szerencsésebb és kevesebb hibalehetőséggel jár inkább több sorban, akár több változóval is összerakni egy ilyen összetett sztringet, és a függvényhívásba már csak egy változót tenni.

Ott a pont. Oda kéne figyelni az olvashatóságra, mint a mellékelt ábra is mutatja, a hozzáértők is nehezen bogarásszák ki, mi a franc akar ez lenni :).

Az általad említetteken kívül én a sprintf függvényt szoktam még használni a káosz csökkentésére, alapesetben szigorúan szimpla aposztrófokkal.
13

+1

Pepita · 2013. Dec. 23. (H), 16.33
Gondolatolvasó... :)
6

Hát az bizony nem való oda.

bamegakapa · 2013. Dec. 22. (V), 21.03
Hát az bizony nem való oda.
7

Az ilyen kérdéseknél azt is

bamegakapa · 2013. Dec. 22. (V), 21.05
Az ilyen kérdéseknél azt is érdemes lenne leírni, hogy mit is kéne ennek csinálnia és miért, mert hogy nem mindegy. Bevallom, semmi kedvem fejtegetni.
9

Oknyomozó

Pepita · 2013. Dec. 22. (V), 21.09
Pedig baromi érdekes oknyomozó-riportert játszani, hogy megtudd, mi is a kérdés valójában! :)
10

$foo = 'bar'; $bar =

tgr · 2013. Dec. 22. (V), 23.47
$foo = 'bar';
$bar = array('baz' => 'boom');
echo "$$foo['bar']"; // 'boom'
A "$$foo[" sztringnél panaszkodni fog a PHP, hogy elkezdtél egy sztringbe interpolált változóhivatkozást, de félúton abbahagytad.

Ettől nagyrészt függetlenül akkora biztonsági rés van ebben a kódban, mint egy ház.