Autor Zpráva
marek888
Profil
Dobrý den. Mám tento PHP kod:
<?php
                                $db_host = "mysql.webzdarma.cz";
                                $db_username = "---------------";
                                $db_pass = "--------------";
                                $db_name = "---------";

                                @mysql_connect("$db_host", "$db_username", "$db_pass") or die("nepripojeno k databazi");
                                @mysql_select_db("$db_name") or die("Nespravna databaze, či tabulka!!");

                                echo "<div id='autor'>";
                                $q = mysql_query("SELECT * FROM `prispevky` WHERE `obsah` IS NOT NULL ORDER BY `id`") or die(mysql_error());
                                while ($r = mysql_fetch_array($q)) {
                                    echo$r['autor'];
                                }
                                echo "</div>";

                                echo "<div id='titulek'>";
                                $q = mysql_query("SELECT * FROM `prispevky` WHERE `obsah` IS NOT NULL ORDER BY `id`") or die(mysql_error());
                                while ($r = mysql_fetch_array($q)) {
                                    echo$r['titulek'];
                                }
                                echo "</div>";
                                echo "<br>";

                                echo "<div id='obsah'>";
                                $q = mysql_query("SELECT * FROM `prispevky` WHERE `obsah` IS NOT NULL ORDER BY `id`") or die(mysql_error());
                                while ($r = mysql_fetch_array($q)) {
                                    echo$r['obsah'];
                                }
                                echo "</div>";
                                ?>
V prakxi to funguje tak, že autor, titulek a obsah mám každý rozdělený každý do svých divů, díky kterejm to můžu pozicovat. Pozicování mám udělané přes main.css.Můj problém je ten, že nevím jak udělat, když někdo napíše nový příspěvek, tak že se nenapíše stále na to jedno místo, ale že se napíše nad starý příspěvek, který má nižší ID. Děkui vám všem za odpovědi. Marek
han5vk
Profil
Robíš to nejako naopak. Vypisuješ zaradom všetkých autorov, potom všetky nadpisy a potom všetky texty. Ty ale potrebuješ vypísať po jednom, celé príspevky. Takto hrozne plytváš prostriedkami, zakaždým ťaháš novú query.

Takto nejako by som to riešil ja:
$q = mysql_query("SELECT * FROM `prispevky` WHERE `obsah` IS NOT NULL ORDER BY `id`DESC") or die(mysql_error());
                                while ($r = mysql_fetch_array($q)) {
                                    // Obalový div
                                    echo "<div class='prispevok'>;
                                    
                                    //nadpisok
                                    echo "<h1>".$r['titulek']."</h1>";
                                    
                                    // autor
                                    echo "<small>.$r['autor']."<small>";
                                    
                                    //text
                                    echo "<p>".$r['obsah']."</p>";
                                    
                                    //koniec obalu jednotlivého príspevku
                                    echo "</div class='prispevok'>;
                                }

Všimni si DESC v query, to je tam preto, aby ti vypisovalo od najvyššieho id /najnovší článok/, nie od najstaršieho.

Takto sa ti vypíše každý jeden príspevok do samostatného divu prispevok a bude mať svoj nadpis autora, aj obsah. Samozrejme, tagy si uprav aké chceš, podobne aj CSS, ale používať na všetko divy je dosť prasárna, pozri si Fekální styl..

Toto je ako to robím ja, npotrebujem nič pozicovať, len nastavím marginy a funguje to. Neviem ale, akú štruktúru sa snažíš dosiahnuť, takže by bola dobrá živá ukážka, nech vieme, ako to má vlastne nakoniec byť zoradené a vyzerať.
marek888
Profil
Díky, ale když sem si to upravil do své formy, tak mi to napsalo sintax error na řádce 153, která neexistuje a že je tam nějakej problém s $end . Pokud bys nalezl problém, budu moc rád. Marek. Zde je dištak kod:
@mysql_connect("$db_host", "$db_username", "$db_pass") or die("nepripojeno k databazi");
                                @mysql_select_db("$db_name") or die("Nespravna databaze, či tabulka!!");

                                $q = mysql_query("SELECT * FROM `prispevky` WHERE `obsah` IS NOT NULL ORDER BY `id`DESC") or die(mysql_error());
                                while ($r = mysql_fetch_array($q)) {

                                    echo "<div id='comentare'>";
                                    echo "<h1>". $r['titulek']. "</h1>";
                                    echo "<p>".$r['autor']."</p>";
                                    echo "<p>". $r['obsah']."</p>";
                                    echo "</div>";
                                    ?>
                                   
pcmanik
Profil
marek888:
1. Skús sa zahladieť, či ti tam niekde nechýba uzatváracia značka cyklu.
2. Nepoužívaj rozhranie mysql je zastaralé a v budúcnosti bude zmazané, prejdi na mysqli alebo PDO.
3. Nepotlačuj chybové hlášky pomocou @. Nepoužívaj or die. Hneď tvoje druhé or die je hlúposť vyberáš databázu takže je asi nezmysel do chyby napisať že zlá tabuľka.
4. Používaj vystižné názvy premenných $q a $r rozhodne niesu výstižné.
5. Parametre pripojenia a výberu databázy sa nedávajú do úvodzoviek keď sú to premenné.
marek888
Profil
Díky za rady, už sem to vyřešil, byla to pouze moje nepozornost. Jinak díky za typy, co mám jak předělat.
juriad
Profil
marek888:
Tím se ti PHP snaží říct, že něco není uzavřené. Nejspíše by mohlo stačit přidat za 11. řádku ukončovací závorku (konec cyklu while)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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