Autor Zpráva
Vilak
Profil
Zdravím. Zase jsem tu :/
Mám soubor, který jsem přímo vytvořil pomocí fopen($group.".php", "w") a chci do tohoto souboru vložit code, který obsahuje html, php, mysql (v budoucnu by mohl i css i js). Samotný code (co tam chci vkládat) nemám ještě tak úplně sepsaný. Můj code vypadá takto a nevím, jak udělat daný zápis:
            if (!file_exists("../fotogalerie")) {
                mkdir("../fotogalerie", 0777);
            }
            if (!file_exists("../fotogalerie/".$group)) {
                fopen("../fotogalerie/".$group.".php", "w");
            }
            $zapis = fopen("../fotogalerie/".$group.".php", "a");
            fwrite($zapis, /* A TADY CHCI VLOŽIT TEN CODE */);
            fclose($zapis);
Pozn.: Chtěl jsem to tam nějak includnůt, ovšem nevím, jak. Samotný code, který budu chtít kopírovat ("originál"), je v souboru fotogalerie_vypis.php
Camo
Profil
Vilak:
K tomu potrebuješ fread() na prečítanie súboru. Alebo file_get_contents() a file_put_contents().
Vilak
Profil
Ano, došel jsem (po přečtení několika fór) ke stejnému názoru. Teď code (funkční) vypadá takto:
            if (!file_exists("../fotogalerie")) {
                mkdir("../fotogalerie", 0777);
            }
            if (!file_exists("../fotogalerie/".$group)) {
                fopen("../fotogalerie/".$group.".php", "w");
            }

            $soubor = fopen("fotogalerie_vypis.php", "r");
            $vypis = fread($soubor, 100000);
            fclose($soubor);

            $zapis = fopen("../fotogalerie/".$group.".php", "a");
            fwrite($zapis, $vypis);
            fclose($zapis);
Stále mám ale problém - tato část code je z fotogalerie_create.php, ve které mám proměnné $headline a $group. A potřebuji tyto 2 proměnné dostat do toho $vypis, tedy to potřebuji dostat do fotogalerie_vypis.php. Nebo jednoduše potřebuji ty 2 proměnné dostat sem:
fwrite($zapis, /*buď je nějak připojit tady a nebo do proměné $vypis, ale nevím jak - potřebuji s nimi pak dál pracovat*/$vypis);
Jak to udělat?
Alphard
Profil
Tento způsob generování kódů zdá se mi poněkud nešťastným.
Co kdyby se z kódu v fotogalerie_create.php vytvořila funkce s parametry $headline a $group? Pak by stačilo tuto funkci volat.
Vilak
Profil
Alphard:
Promiň, ale nevím, jak to myslíš. V code, který chci vkládat, se mi několikrát objevuje <?php ?>, což celý přenos code stěžuje. Jak by měla daná funkce asi vypadat?
Alphard
Profil
Vilak [#5]:
To zas takový problém není, i tělo funkce lze přerušit a něco vypsat. Dobrý návrh to není, ale víc teď zřejmě nezvládnete.

Jak by měla daná funkce asi vypadat?
Nevím jak vypadá součaný kód. Ani by to nemusela být funkce, stačilo by použít třeba include, ale neměl by se generovat nový kód. Měla by existovat jediná verze kódu, která se bude volat opakovaně.
Vilak
Profil
Já to vyřešil jiným, asi příliš zbytečně složitým způsobem.
Vytvořil jsem si další tabulku v databázi (gallery_basic), kde se mi zapíší proměnné $headline a $group z fotogalerie_create.php. Poté ve fotogalerie_vypis.php získám $group z url adresy (protože $group mi slouží jako "rozdělovač"). Pomocí $group najdu v gallery_basic i proměnnou $headline, kterou poté vypíšu, a tak získám obě proměnné, které potom můžu zapsat do klasické databáze (gallery) při nahrávání obrázku. A vkládání code do souboru jsem nechal tak, jak bylo, tedy pomocí fopen.
Takže to vypadá takto:
fotogalerie_create.php
            require_once "../include/db.php";
            mysql_query("INSERT INTO `gallery_basic` (`group`, `headline`) VALUES ('".$group."', '".$headline."')");

            $soubor = fopen("fotogalerie_vypis.php", "r");
            $vypis = fread($soubor, 100000);
            fclose($soubor);

            $zapis = fopen("../fotogalerie/".$group.".php", "a");
            fwrite($zapis, $vypis);
            fclose($zapis);
fotogalerie_vypis.php
// získání proměnné group z aktuální adresy
                       $group_url2 = $_SERVER['PHP_SELF'];
                       $group_url1 = explode(".", $group_url2);
                       $group_url = explode("/", $group_url1[0]);
                       $group_normal = $group_url[2];
                       //echo $group_normal; // kontrola pro vypsání aktuální proměnné $group
                       require_once "../include/db.php";
                       $dotaz = mysql_query("SELECT * FROM `gallery_basic` WHERE `group` = '$group_normal' LIMIT 1");
                       while ($promenne = mysql_fetch_assoc($dotaz)) {
                           $headline = $promenne['headline'];
                           $group = $promenne['group'];
                       }
                       //echo $group." - ".$headline; // kontrola proměnných $group a $headline
Potom se celý code z fotogalerie_vypis.php vloží do nově vytvořeného souboru.php
Pozn.: Vím, že získání proměnné group takto není ideální, protože kdyby se tam přidala někde další složka apod., tak by to logicky nefungovalo. Ovšem s tím, že by se tam přidávala kdykoliv jakákoliv další složka nepočítám.
Keeehi
Profil
To je tak moc špatně až to bolí. Předně generovat spustitelné soubory je blbost. Proč to nemáte jen jednou jako galerie_vypis.php?group=jméno-skupiny? Nelíbí se vám tato URL? To se dá klidně změnit (mod_rewrite) ale vespod to bude fungovat pořád jen s jedním souborem. A na co se to dá změnit? No třeba na www.example.com/fotogalerie/jméno-skupiny. To už i vypadá dobře, nebo ne?
Camo
Profil
Vilak:
Neboj sa zahodiť blbé nápady.
Vilak
Profil
Keeehi:
Díky, to mě nenapadlo. Říkám, že jsem nevěděl, a tak jsem to udělal způsobem, který funguje, ale vážně není pěkný...
Btw. parametry v url (jestli je to dobře) mě nenapadly také z toho důvodu, že s tím moc neumím. Byl by někde nějaký odkaz, kde by to bylo lépe vysvětlené?
Keeehi
Profil
Vilak:
Nějaký základ najdeš na www.pehapko.cz/zakladni-kurz/12-predani-dat
Vilak
Profil
Díky moc, podívu se na na to ;)

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: