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:
1            if (!file_exists("../fotogalerie")) {
2                mkdir("../fotogalerie", 0777);
3            }
4            if (!file_exists("../fotogalerie/".$group)) {
5                fopen("../fotogalerie/".$group.".php", "w");
6            }
7            $zapis = fopen("../fotogalerie/".$group.".php", "a");
8            fwrite($zapis, /* A TADY CHCI VLOŽIT TEN CODE */);
9            fclose($zapis);
            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:
1            if (!file_exists("../fotogalerie")) {
2                mkdir("../fotogalerie", 0777);
3            }
4            if (!file_exists("../fotogalerie/".$group)) {
5                fopen("../fotogalerie/".$group.".php", "w");
6            }
7 
8            $soubor = fopen("fotogalerie_vypis.php", "r");
9            $vypis = fread($soubor, 100000);
10            fclose($soubor);
11 
12            $zapis = fopen("../fotogalerie/".$group.".php", "a");
13            fwrite($zapis, $vypis);
14            fclose($zapis);
            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($soubor100000);
            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);
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
1            require_once "../include/db.php";
2            mysql_query("INSERT INTO `gallery_basic` (`group`, `headline`) VALUES ('".$group."', '".$headline."')");
3 
4            $soubor = fopen("fotogalerie_vypis.php", "r");
5            $vypis = fread($soubor, 100000);
6            fclose($soubor);
7 
8            $zapis = fopen("../fotogalerie/".$group.".php", "a");
9            fwrite($zapis, $vypis);
10            fclose($zapis);
            require_once "../include/db.php";
            mysql_query("INSERT INTO `gallery_basic` (`group``headline`VALUES ('".$group."''".$headline."')");
 
            $soubor fopen("fotogalerie_vypis.php""r");
            $vypis fread($soubor100000);
            fclose($soubor);
 
            $zapis fopen("../fotogalerie/".$group.".php""a");
            fwrite($zapis$vypis);
            fclose($zapis);
fotogalerie_vypis.php
1// získání proměnné group z aktuální adresy
2                       $group_url2 = $_SERVER['PHP_SELF'];
3                       $group_url1 = explode(".", $group_url2);
4                       $group_url = explode("/", $group_url1[0]);
5                       $group_normal = $group_url[2];
6                       //echo $group_normal; // kontrola pro vypsání aktuální proměnné $group
7                       require_once "../include/db.php";
8                       $dotaz = mysql_query("SELECT * FROM `gallery_basic` WHERE `group` = '$group_normal' LIMIT 1");
9                       while ($promenne = mysql_fetch_assoc($dotaz)) {
10                           $headline = $promenne['headline'];
11                           $group = $promenne['group'];
12                       }
13                       //echo $group." - ".$headline; // kontrola proměnných $group a $headline
// 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 ;)
Toto vlákno je staré, již dlouho do něj nikdo nepřispíval.

Informace a odkazy zde uváděné už nemusejí být aktuální. Nechcete-li řešit zde uvedenou konkrétní otázku, založte si vlastní vlákno, nepište do tohoto. Vložíte-li sem nyní příspěvek, upoutáte pozornost mnoha lidí a někteří z nich si jen kvůli vám přečtou i všechny předcházející příspěvky. Předpokládáte-li, že váš text skutečně bude hodnotný, stiskněte následující tlačítko:


Běda vám, jestli to bude blábol.

0