Autor Zpráva
Many
Profil *
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 *
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
Spíš chybí endwhile. Kdybyste rozumně odsazoval bloky kódu a používal dobrý editor, nemusíte tyto problémy řešit.
Many
Profil *
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
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
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
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 *
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
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.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: