Autor Zpráva
hitny14
Profil *
Dobrý den, Vytvořil sem si jednoduchou administraci přidávání článků na stránky, která obsahuje formulář pro nadpis a text článku pomocí php scriptu se zapíše do db. Já bych ale potřeboval aby se mi rovnou při vložení stránku na web vytvořil automaticky nový odkaz např: example.cz/novy-clanek.php Poradil by mi prosím vás někdo jak na to?
nounejm
Profil *
prostě bude nový odkaz třeba example.cz/index?clanek=2 a z toho se pomocí .htaccess udělají pěkné url - např. example.cz/clanky/nove-povidani-o-rikani.html
viz třeba: tady
jinak hledat .htaccess pěkné url mod_rewrite


oprava: example.cz/index.php?clanek=2
Hitny14
Profil *
A jak dcílím toho example.cz/index.php?clanek=2? Já mám totiž pak ještě script který mi vypisuje všechny články pod sebe na adrese třeba example.cz/clanky.php.
nounejm
Profil *
Tak to je chyba - musí být skript, který vypíše jeden článek.
Pokud se vypisují všechny články na jednu stránku, tak přece ani nemusí být víc odkazů - stačí jeden, ale to je špatné řešení - co když bude článků časem sto?
Prostě to nejde obejít. Ten skript na výpis konkrétního článku tam být musí. A pod článkem nebo vedle mohou být odkazy na další články.
Pokud někdo umí vypsat z databáze všechny články, nemůže být pro něj problém vypsat pouze jeden.
hitny14
Profil *
Už mám skript který mi vytvoří dovou url třeba example.cz/clanek.php. ale když ten odkaz vytvořím tak mi to jako by stránku neodevře a potřebovak bych vědět jak vytvořit stránku clanek.php se vzhledem jako je na každé stránce?
nounejm
Profil *
weby se dělají tak, že se skládají ze třeba hlavičky, menu, těla a patičky
volá se vždy jeden soubor třeba index.php a v něm se to skládá - např.:
include('hlavicka.php');
include('telo.php');
include('paticka.php');

example.cz/index.php?clanek=2
example.cz/index.php?clanek=13
example.cz/index.php?clanek=25

volá vždycky ten stejný soubor - pouze s jiným parametrem, takže vzhled bude vždy stejný
ten parametr clanek předaný v url v php zjistím pomocí $_GET['clanek']

musí teda existovat nějaký soubor telo.php nebo clanek.php a ten podle toho parametru předaného v url zobrazí správný obsah - např. vybere z databáze požadovaný článek "SELECT * FROM clanky WHERE id='".addslashes($_GET['clanek']) ."'" a ten potom zobrazí - tudíž vzhled bude vždy stejný

Už mám skript který mi vytvoří dovou url - jakým způsobem vytvoří novou url?
když ten odkaz vytvořím tak mi to jako by stránku neodevře - ta stránka asi neexistuje
hitny14
Profil *
Celý kod pro přidání článku a vytvoření url vypadá takto:

<?php 
    include 'config.php';

        if (isset($_POST['uloz'])) 
            {
                $nadpis = $_POST['nadpis'];
                $clanek = $_POST['text'];
                $datum = date("d.m.Y");
                $autor = $_SESSION['UserLogin'];
                $url = $_POST['url'];

                $sql = "INSERT INTO clanky (nadpis, clanek, datum, autor) VALUES ('$nadpis', '$clanek', '$datum', '$autor')";

                    if (mysql_query($sql)) 
                        {
                            echo "<strong>Článek byl uspěšně nahrán! Pro další editaci máčkněte <a href=".$url.'.php'">zde</a>.</strong>";
                        }
                        else
                            {
                                echo "<strong>Článek se nepovedlo nahrát zkuste to prosím později nebo kontaktujde správce!</strong>";
                            }
            }
?>

Jestli je to nějak špatně mohl by jsi mi prosím poradit už si nevím rady =(
abc
Profil
1) sloupec datum rychle změň na typ datetime, dokud je čas
2) „Jestli je to nějak špatně mohl by jsi mi prosím poradit už si nevím rady =(“ není popís problému
2) co nefunguje? nějaká chybová hláška?
Hitny14
Profil *
Nahoře je to popsaný co potřebuju. Tímto kodem vložímk článek do db a vytvořím si nový okdkaz např: example.cz/clanek1.php. A já bych potrěboval aby se mi vytvořila na serveru stránka clanek1.php se stejným vzhledem jako mím trěba na indexu.
nounejm
Profil *
Hitny14:
takto se to dělá: [#6] nounejm
nejdřív udělej soubor třeba test.php, který dokáže vypsat 1 článek z databáze (a je jedno jestli vypíše článek s id=1 nebo id=5) potom změň databázový dotaz tak, aby uměl zobrazit článek s id v url example.cz/test.php?clanek=2 - to id se z url předá do php pomocí $_GET['clanek']

Neustále na to jdeš tvrdohlavě odzadu - nejřív si vymyslíš nějaké url a potom chceš něco vytvářet. Nejdřív vytvoř soubor, který umí zobrazit 1 článek podle parametru z url a potom lehce vytvoříš odkazy
hitny14
Profil *
kod pro zápis vypadá takto:
<?php 
    include 'config.php';

        if (isset($_POST['uloz'])) 
            {
                $nadpis = $_POST['nadpis'];
                $clanek = $_POST['text'];
                $datum = date("d.m.Y");
                $autor = $_SESSION['UserLogin'];

                $sql = "INSERT INTO clanky (nadpis, clanek, datum, autor) VALUES ('$nadpis', '$clanek', '$datum', '$autor')";

                    if (mysql_query($sql)) 
                        {
                            echo '<strong>Článek byl uspěšně nahrán! Pro další editaci máčkněte <a href="clanky.php?clanek=">zde</a>.</strong>';
                        }
                        else
                            {
                                echo "<strong>Článek se nepovedlo nahrát zkuste to prosím později nebo kontaktujde správce!</strong>";
                            }
            }
?>


a kod pro zobrazení:

    <?php
            include 'config.php';

                //$sql =  "SELECT * FROM clanky order by id desc";
                $sql = "SELECT * FROM clanky WHERE id=" . (int) $_GET["idClanek"];
                    $query = mysql_query($sql);

            while($row = mysql_fetch_array($query))
                {
                    echo "<h3>".$row["nadpis"]."</h3>";
                    echo "<p>".$row["clanek"]."</p>";
                    echo "<p>".$row['datum']."</p><p class='autor'>".$row['autor']."</p>";
                    echo "<p><a href='?smazat=1&idClanek=".$row["id"]."'>Smazat článek</a> <a href='uprava_clanku.php?edit=1&idClanek=".$row["id"]."'>Uprav článek</a></p>";
                    echo "<hr>";
                }
                if ($_GET["smazat"] && $_GET["idClanek"])
                    {
                    mysql_query("DELETE FROM clanky WHERE id = " . (int) $_GET["idClanek"]);
                    }
            mysql_close();
        ?>



Už nevím jak na to =(
nounejm
Profil *
vidím, že jsem to asi špatně pochopil :-)
jinak pozor na example.cz/admin.php?smazat=1&idClanek=2 - toto by mohl někdo zavolat z prohlížeče (ale možná je před tím kontrola, jestli je přihlášený admin)
hitny14
Profil *
Je tam kontrola to mam vyzkouseny. A jak by jsi mi stim poradil?

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: