| 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: 14 let
|
|||
0