NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: PHP uložení textu tak aby se pri ukladani ulozila hodnota promenne

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Mario Brunmayr:4.8.2016 2:46

Dobry den, omlouvam se ze zase pisu sem na forum ale zas jsem se zasekl pri psani PHP kodu. De facto je jiz PHP kod funkcni ale je tu jedna vec na kterou nemuzu prijit. Pri vykonani PHP kodu se mi do prom. menu.php vypise vse co chci ale i cela promnena menu jako text ale ja chci vypsat do dokumentu jeji hodnotu. "" mi to neresi a ja fakt nevim cim by to melo byt ikdyz je to urcite neco jednoducheho.

kompletni kod.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Přihlášení</title>
  </head>
  <body>
<?php
if (isset($_POST['menu']) AND !empty($_POST['menu'])) {
  $menu = $_POST['menu'];
} else {
  $menu = null;
}

$soubor = fopen("./odkazy.txt", "a+");
if (!$soubor) {
  die("Soubor se nepodařilo otevřít (1).");
}
fwrite($soubor, '<a href="'. $menu .'.php"><button> '. $menu .'</button> </a>');
fclose($soubor);

$soubor = fopen("./$menu.php", "a+");
if (!$soubor) {
  die("Soubor se nepodařilo otevřít (2).");
}
fwrite($soubor,'
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <link rel="stylesheet" type="text/css" href="pokus/css/style1.css" />
    <link rel="stylesheet" href="PC-CSS.css">
    <title>Proč tady nic není?</title>
  </head>
  <body>
    <div id="pozadi">             <!-- blok se stankou -->
    <div id="body"></div>
    <div id="menu">        <!-- menu stranky  -->
    <!-- <ul><li><a>Default Button</a></li></ul> -->


<?php include ("./odkazy.txt"); ?>

      </div>
      <div id="hlavicka">
        <div class="css-slideshow">
          <figure><img src="images\1.jpg" /></figure>
          <figure><img src="images\2.jpg" /></figure>
          <figure><img src="images\3.jpg" /></figure>
          <figure><img src="images\4.jpg" /></figure>
          <figure><img src="images\5.jpg" /></figure>
          <figure><img src="images\6.jpg" /></figure>
          <figure><img src="images\3.jpg" /></figure>
          <figure><img src="images\5.jpg" /></figure>
        </div>
        <!--<img src="sorrento.jpg" width="100%"> -->
      </div>     <!-- hlavička stránky -->
      <div id="obsaho"></div>
      <div id="obsah">                        <!-- obsah stránky -->

<?php include ("./$menu.txt"); ?>


      </div>
      <div id="patka">Copyright 2014, &copy; Něco tam dám</div>
    </div>
  </body>
</html>'

    );
?>
 </body>
 </html>

problematicka cast: promenou nechci ulozit ve tvraru $menu ale jako hodnotu promenne.

<?php include ("./$menu.txt"); ?>

Predem dekuji za pomoc a omlouvam se za svoji neznalost ale bohuzel nevim jak to resit, protoze google taky nepomohl a ja nevim jak by jsem tento problem mel nazvat, takze to hledani je o to komplikovanejsi.

 
Odpovědět
4.8.2016 2:46
Avatar
Ondřej Štorc
Tvůrce
Avatar
Odpovídá na Mario Brunmayr
Ondřej Štorc:4.8.2016 4:26

Vytáhni si ten text z $menu.txt do nějaké proměně a pak ji tam jen do toho textu přidej...
Problém je v tom ze ty ulozis do HTML souboru kód který by se měl vykonat na serveru, ale asi jak jistě víš tak bez speciálního nastavení se na serveru "spustí" jen soubory s koncovkou PHP (+ par dalších)

Nahoru Odpovědět
4.8.2016 4:26
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Mario Brunmayr:4.8.2016 20:20

asi sem nebyl plně pochopen. Mám na řádku 26 tento kod

fwrite($soubor,'

za tímto kodem se vse az na posledni 3 radky uklada do $menu.php. Problem je ten ze na 13 radku od spoda mam tento kod

<?php include ("./$menu.txt"); ?>

a ja by jsem chtel aby se mi ten kod neulozil v podobe v jake ho tam mam napsany ale misto $menu se mi ulozila hodnota dane promene.

 
Nahoru Odpovědět
4.8.2016 20:20
Avatar
Odpovídá na Ondřej Štorc
Mario Brunmayr:5.8.2016 3:54

Uz chapu jak to myslis a toto reseni mi nevyhovuje proto protoze tento PHP script se bude pouzivat opakovane vzdy s jinou hodnotou promene menu, takze se tam napevno nazev textoveho dokumentu nelze vlozit.

 
Nahoru Odpovědět
5.8.2016 3:54
Avatar
David Hynek
Tvůrce
Avatar
Odpovídá na Mario Brunmayr
David Hynek:5.8.2016 7:05

tak tu proměnou v místě kde potřebuješ prostě vypiš, tedy:

echo file_get_contents("./odkazy.txt");

nebo

echo file_get_contents("./{$menu}.txt");
Editováno 5.8.2016 7:08
Nahoru Odpovědět
5.8.2016 7:05
Čím víc vím, tím víc věcí nevím.
Avatar
Odpovídá na David Hynek
Mario Brunmayr:5.8.2016 8:19

Po vygenerovani stranky mam v ni zase

$soubor = fopen("./$menu.php", "a+");

Kdyz to zjednodusim tak potrebuji

<?php echo file_get_contents("./{$menu}.txt"); ?>
fwrite($soubor,' nejaky text $menu (tuto promenou $menu chci ulozit jako hodnotu promenne a ne jako promenou) text text text ');
 
Nahoru Odpovědět
5.8.2016 8:19
Avatar
David Hynek
Tvůrce
Avatar
Odpovídá na Mario Brunmayr
David Hynek:5.8.2016 8:31

Tak na to asi mé mozkové buňky nestačí... ale jestli soubor uložíš jako TXT, tak se nediv, že se v takovém souboru kod v PHP nechová jako kod v PHP, ale jako prostý text...

Nahoru Odpovědět
5.8.2016 8:31
Čím víc vím, tím víc věcí nevím.
Avatar
Odpovídá na David Hynek
Mario Brunmayr:5.8.2016 9:03

Nevim jak je to myšleno ale po vykonání prvního PHP scripu se mi proměná nikam neukládá, takže úplně nechápu jak ji tam mám vypsat aby ve vygenerovaném souboru nebyla proměná ale pouze její hodnota. Asi jsem navrdlej ale nic mě prostě nenapadá až na řešení uložit hodnotu proměné do databáze ale této variantě se chci vyvarovat.

 
Nahoru Odpovědět
5.8.2016 9:03
Avatar
katrincsak
Člen
Avatar
Odpovídá na Mario Brunmayr
katrincsak:8.8.2016 0:32

Nezkoušel jsem.
Vzhledem k tomu, že vkládání textu za pomocí proměnné je celkem běžná věc, tak by tohle mohlo fungovat.

<?php echo file_get_contents("./{$menu}.txt"); ?>
fwrite($soubor," nejaky text".$menu."(tuto promenou $menu chci ulozit jako hodnotu promenne a ne jako promenou) text text text");

Jinak řečeno vyhodíš proměnnou z části textu a vypíšeš ji zvlášť a opět to spojíš.

fwrite($soubor,"něco".$promena."pokračujeme ve větě");
Editováno 8.8.2016 0:32
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
8.8.2016 0:32
Avatar
Odpovídá na katrincsak
Mario Brunmayr:8.8.2016 0:37

funguje narozdíl od 'text text ' použil jsem to o pár kroků předtim a nějak mi vůbec nedošlo že ' a " nejsou stejné značky, jediné co mě štve že všude kde mám v textu " to budu muset ošetřit, takže docela dobrá pakárna ale co už :D. Kdyby jste někdo věděl jak vložit proměnou mezi ' ' tak dejte vědět. Docela by mě zajímalo.

 
Nahoru Odpovědět
8.8.2016 0:37
Avatar
katrincsak
Člen
Avatar
Odpovídá na Mario Brunmayr
katrincsak:8.8.2016 3:03

Obávám se, že bohužel nijak. V tom je právě jeden z rozdílů jednoduchých a dvojitých uvozovek. Pravděpodobně můj uvedený příklad by měl fungovat i s jednoduchými uvozovkami.

 
Nahoru Odpovědět
8.8.2016 3:03
Avatar
Odpovídá na katrincsak
Mario Brunmayr:8.8.2016 15:12

nefunguje, při spuštění scriptu je klasický eror za špatnou syntaxi.

 
Nahoru Odpovědět
8.8.2016 15:12
Avatar
David Hynek
Tvůrce
Avatar
Odpovídá na Mario Brunmayr
David Hynek:8.8.2016 19:41

Tak to zkus takto a pak se koukni, zda je v souboru co potřebuješ :)

<?php

$nazev = "test-stranka";

$menu = <<<EOT
<ul id="polozky">
  <li><a href="/neco.html">Něco</a></li>
  <li><a href="/nekam.html">Někam</a></li>
  <li><a href="/nekdo.html">Někdo</a></li>
</ul>
EOT;

$obsah = <<<EOT
<h1 class="nadpis">Nadpis</h1>
<p>Lorem ipsum dolor sit amet consectetuer eu non turpis netus Mauris. Nam semper magna semper Morbi enim Pellentesque hendrerit id nec Quisque. Lorem Praesent ipsum tempor Quisque vitae at volutpat pretium hendrerit elit. Amet tincidunt Vestibulum dui.
</p>
EOT;

$stranka = <<<EOT
<!doctype html>
<html lang="cz">
<head>
  <meta charset="utf-8">
  <title>The HTML5 Herald</title>
  <meta name="description" content="stranka">
  <meta name="author" content="autor">
  <link rel="stylesheet" href="css/style.css">
</head>
<body>
  <div id="menu">
  {$menu}
  </div>
  <div id="obsah">
  {$obsah}
  </div>
</body>
</html>
EOT;
echo "Soubor $nazev.txt ";
if(!file_put_contents("{$nazev}.txt", $stranka)) { echo "ne";}
echo "vytvořen";

?>
Nahoru Odpovědět
8.8.2016 19:41
Čím víc vím, tím víc věcí nevím.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 13 zpráv z 13.