Autor | Zpráva | ||
---|---|---|---|
Many Profil * |
#1 · Zasláno: 15. 4. 2012, 18:42:03
ahoj nevím stránka mi hází tuhle chybu a nevím jak na to dík
Parse error: syntax error, unexpected $end |
||
David Klouček Profil |
Někde ti chybí nebo přebývá znak { nebo }.
|
||
Many Profil * |
#3 · Zasláno: 15. 4. 2012, 18:53:53
myslíš ,že bys ji našel ?? já nějak nemůžu
<?php echo "<table>"; mysql_connect("localhost", "root", "123123"); mysql_select_db("Databaze"); $dotaz = mysql_query("SELECT FROM clanky WHERE autorizace='1' AND smazano='0' ;"); while($zaznam = mysql_Fetch_Array($dotaz)): $id_novinky = $zaznam["id"]; $predmet = $zaznam["predmet"]; $uvod = $zaznam["uvod"]; $datum = $zaznam["datum"]; $id_nicku = $zaznam["id_nicku"]; $smazano = "0"; $autorizace = "1"; $dotaz2 = mysql_query("SELECT * FROM Uzivatel WHERE id='$id_nicku';"); while($vystup = mysql_fetch_object ($dotaz2)): { $nick = $vystup->nick; } echo "<tr><th>$predmet</th></tr> <tr> <td colspan='2'>Uvod</td></tr> <tr><td>$datum</tr><td>$nick</td></tr>"; endwhile; echo "</table>"; ?> |
||
Alphard Profil |
#4 · Zasláno: 15. 4. 2012, 19:00:19
Spíš chybí endwhile. Kdybyste rozumně odsazoval bloky kódu a používal dobrý editor, nemusíte tyto problémy řešit.
|
||
Many Profil * |
#5 · Zasláno: 15. 4. 2012, 19:07:39
jestli jo tak už fakt nevim kde
|
||
Tori Profil |
Hmm, není to duplicita k php fetch?
|
||
Alphard Profil |
Tori:
Dík, nestíhám číst vše. Many: Žádné další duplicity a snažte se volit výstižnější názvy témat. |
||
Hando Profil |
#8 · Zasláno: 15. 4. 2012, 20:23:05
Já bych za sebe doporučil používání syntaxe se složenými závorkami, vyhneš se tím problémům se zapomínáním endwhile a jiných podobných ukončovacích příkazů a hlavně je vidět, co do kterého cyklu patří na první pohled.
Co má dělat ten druhý while? Resp. co má dělat celý ten kód? Vybrat z databáze "clanky" aktuality, které jsou autorizované a zároveň nejsou smazané a vypsat je, že? Druhý cyklus by měl vybrat vše (*) z tabulky "uzivatel" a z toho všeho vybrat nick? Pokud se nevybírá nic jiného, tak bude lepší "SELECT nick FROM uzivatel WHERE atd..." a pak normálně vypsat. Předpokládám tedy, cílem celé práce s $vystup je převedení id_uzivatele na čitelnou podobu nicku. Pak je to ale zbytečné dávat do cyklu a vnořovat na cykly do sebe.
A asi by stálo za úvahu použití JOINování. |
||
Tori Profil |
Many:
Chyba je v tom, že i za druhým while máte dvojtečku - očekává se tedy druhé endwhile. Parser zřejmě dává vyšší priritu syntaxi while (): ... endwhile; , než while () { ... }
(V manuálu se o tom píše, že „Mixing syntaxes in the same control block is not supported.“, ale místo tiché ignorace bych podle toho čekala spíš parse error. Nu což.) |
||
Alphard Profil |
#10 · Zasláno: 15. 4. 2012, 22:13:49
Tori:
„Mixing syntaxes in the same control block is not supported.“ Tím se (myslím) myslí nesmysly jako while ($a = next()): //neco delej } {} je normální označení bloku, zvenku se bere jako jeden příkaz, není nutně vázané na další konstrukty, lze ho použít kdekoliv a libovolně zanořit. { neco } je zpracováno jako příkaz a chybí endwhile; Není to tichá ignorace ani věc priority, vše je tak, jak má být. Many: Vše jsem řekl ve svém první příspěvku. Kdybyste použil editor, který zvýrazňuje párové závorky, nemáte s tím žádné problémy. A kdybyste odsazoval zanořené bloky, nepotřebujete ani zvýraznění závorek. |
||
Tori Profil |
#11 · Zasláno: 15. 4. 2012, 22:31:16
Alphard:
Díky za vysvětlení, o správnosti bloků { } jsem věděla, jen jsem si to nějak nespojila, že parser v tomhle případě vlastně nemá jak rozlišit mezi prostým blokem kódu a chybným zápisem. |
||
Pipaslot Profil * |
#12 · Zasláno: 15. 4. 2012, 22:53:18
PHP vyhazuje takovouto chybu i v případě že za ukončovacími znamy ?> jsou prázdné znaky (není tedy na uplnem konci dokumentu)
Aby se dalo tohoto hlášení zbavit, je potřeba v php.ini nastavit short_open_tag = on Nejsem si ted ale 100% jist, jestli je to přesně tento parametr |
||
Davex Profil |
#13 · Zasláno: 16. 4. 2012, 18:32:20
Pipaslot:
„PHP vyhazuje takovouto chybu i v případě že za ukončovacími znamy ?> jsou prázdné znaky (není tedy na uplnem konci dokumentu)“ Na konci souboru se skriptem je lepší ?> nepsat.
|
||
Časová prodleva: 12 let
|
0