Autor Zpráva
pávek
Profil *
Ahoj, prosím o radu.
Potřebuji po vyplnění formuláře vytvořit novou stránku (soubor.php).
Zkoušel jsem to přes:
$soubor = fopen("soubor.php", "w+");
fwrite($soubor, $text);
Kde $text je načtený jakoby mustr té nové stránky.

Nová stránka jde otevřít a funguje do doby než načte značku <?php a dál mě to nepustí.

Je nějaká možnost, jak napsat do nového souboru celý kód?

Děkuji za rady
Str4wberry
Profil
Ano, třeba pomocí toho:
$text = "<h1>Test je <?php echo 'OK';?>.</h1>";
$soubor = fopen("soubor.php", "w+");
fwrite($soubor, $text);
To vám nefunguje?
NouF
Profil
Práva u adresaře? 777 ?
pávek
Profil *
děkuji, ale práva mám nastavený. Teď jsem se s tím pral a zjistil jsem, že to nekončí značkou <?php ale připojením k databázy.

Pokud tam není tento kus kódu, tak to funguje:

   <?php

$db_spojeni=require_once ('../php/mysql_spojit.php');
if (!$db_spojeni)
{
  echo 'Připojení se nepodařilo<br />Popis chyby: ', mysql_connect_error();
 }
 $vysledek = mysql_query('SET NAMES 'utf8'');
 if (!$vysledek)
 {
 echo 'Poslání SQL příkazu se nepodařilo, <br />
 Popis chyby: ', mysql_error();
    exit();
 }

  

  $vysledek = mysql_query('SELECT * FROM novinky ORDER BY dat DESC');
  
  if (!$vysledek)
  {
  echo 'Poslání SQL příkazu se nepodařilo, <br />
 Popis chyby: ', mysql_error($db_spojeni);
 exit();
  }
   $ne='ano';
  while ($radek = mysql_fetch_array($vysledek))
  {  
    echo '<table ><tr>
    <td  colspan='2'> Akce: ',$radek['nazev'],' </td></tr>
    <tr>  <td  colspan='2'>Datum a čas: ',$radek['den'],' ',$radek['datum'],' </td> </tr>
    
     <tr>
       <td  width='150px'>';
       $foto = $radek['foto'];
   if ($foto != false)
   {echo '
<img src='../images/akce/',$radek['foto'],''  width='200px' alt='',$radek['nazev'],''>';

}else{
echo'obrázek není k dispozici';
}
echo'</td>
      <td >  ',$radek['text'],'</td>
      </tr> ';
  
  
 
   if($_SESSION['admin']=='$ne'){
    echo' <tr> <td  colspan='2'>
    <form action='../php/delete_novinky.php' method='post'>
<input type='hidden' name='smazat' value=',$radek['id'],' /> 
<input type='submit' name='submit' value='smazat' />
</form></td></tr> ';}
Tori
Profil
Syntaktické chyby (ř.8 - tam zrovna být vnitřní uvozovky nemusí; všechny hodnoty atributů HTML na řádcích 30,31,34 apod.).
Na ř.49 nemají být apostrofy okolo proměnné. Koukněte se na vlákno Jaký editor pro PHP (přehled editorů) a pište PHP v něčem, co vám tyhle chyby najde nebo aspoň zvýrazní syntax. A s jednotným způsobem psaní podmínek a odsazování řádků se to bude líp číst i vám.

Jinak pokud v tom includovaném mysql_spojit.php nemáte na konci souboru něco jako return $dbConnection;, tak nemůžete pracovat s návratovou hodnotou require tak jako na ř.4 a hlavně 23. Ale i tak by asi bylo obvyklejší přesunout ř.4-7 do includ.skriptu a proměnnou $db_spojeni definovat taky tam.
pávek
Profil *
Děkuji za ochotu, už jsem to rozchodil.
pávek
Profil *
Ahoj, ještě se vracím k tomuto tématu.
Chyby jsem opravil, rozchodil jsem to tím, že jsem celý kód viz příspěvek 4 nahrál do jiného souboru a do mého souboru jsem ho vkládal pomocí require.

Jenže problém je v tom, že bych potřeboval mít při výběru tabulky z databáze proměnnou, která je definovaná v mém souboru.

Upřenění:
při vyplnění formuláře se vytvoří nový soubor.php ve kterým se dají nahrávat data do databáze a pomocí while se zobrazují na stránce.
jenže když chci dát do proměnný kód stránky, který se má uložit do toho souboru.php, tak tento kód viz příspěvek 4 nefunguje.

Myslím si, že když definuji proměnnou celým kódem té stránky, tak nastane problém když jsou v kódu tyto znaky: " a ' .
Dál se proměnná neuloží.
Doufám, že jsem to napsal pochopitelně.
děkuji
pávek
Profil *
Ahoj, zeptám se ještě jednou,
je možné nějakým způsobem zapsat do souboru.php script, který po odkázání na něj bude vypisovat data z databáze?
Zbztek už bych nějak doladil.
děkuji
Davex
Profil
pávek:
Myslím si, že když definuji proměnnou celým kódem té stránky, tak nastane problém když jsou v kódu tyto znaky: " a ' .
Dál se proměnná neuloží.
Kód zapisovaný dovnitř uvozovek se asi bude muset ošetřit escapováním uvozovek pomocí funkce addslashes().

je možné nějakým způsobem zapsat do souboru.php script, který po odkázání na něj bude vypisovat data z databáze?
Nešlo by to udělat jinak a vyhnout se vytváření skriptu skriptem? To se snad používá jenom při vytváření konfiguračních souborů a ne k chodu webu.
pávek
Profil *
Davex:
Nešlo by to udělat jinak a vyhnout se vytváření skriptu skriptem? To se snad používá jenom při vytváření konfiguračních souborů a ne k chodu webu.
To právě nevím, jestli je nějaký jiný způsob, jak zapsat skript do souboru, aby fungoval.
Když už se mi to povede zapsat, tak to zapíše tento kód:

  <?php

Resource id #5 = require ('../php/mysql_spojit.php');
if (!Resource id #5)
{
  echo 'Připojení se nepodařilo<br />Popis chyby: ', mysql_connect_error();
 }

  

  1 = mysql_query('SELECT * FROM novinky ORDER BY dat DESC');
  
  if (!1)
  {
  echo 'Poslání SQL příkazu se nepodařilo, <br />
 Popis chyby: ', mysql_error(Resource id #5);
 exit();
  }

       ?> 

Kód by měl vypadat viz příspěvek 4.

Proměnný mi zmizí a místo nich mi to vypíše 1.

Pokud někdo víte o nějaké variantě, jak dosáhnout toho zápisu, aby script fungoval byl bych Vám vděčný, zkouším všemožné varianty a už jsem s rozumem v koncích.

Děkuji
Davex
Profil
Pokud máš tento kód v řetězci, tak musíš před všechny uvozovky a dolary dát zpětné lomítko (escapovat).

Stále mám ale pocit, že na to jdeš od začátku špatně, a že by bylo lepší používat require() společně s funkcí pro výběr dat z databáze.

Jenže problém je v tom, že bych potřeboval mít při výběru tabulky z databáze proměnnou, která je definovaná v mém souboru.
To znamená co? Co je konkrétním cílem snažení?
pávek
Profil *
require už používám pro připojení k databázi, to funguje perfektně.
Vypisování pomocí while by mělo také fungovat, ale já potřebuji při výběru tabulky mít proměnnou.
ukázka:

Takhle bych to potřeboval mít uložené v souboru:
 $vysledek = mysql_query('SELECT * FROM novinky ORDER BY dat DESC');
  
  if (!$vysledek)
  {
  echo 'Poslání SQL příkazu se nepodařilo, <br />
 Popis chyby: ', mysql_error($db_spojeni);
 exit();
  }


A takhle s proměnnou bych to potřeboval ukládat:
  $vysledek = mysql_query('SELECT * FROM '$odkaz' ORDER BY dat DESC');
  
  if (!$vysledek)
  {
  echo 'Poslání SQL příkazu se nepodařilo, <br />
 Popis chyby: ', mysql_error($db_spojeni);
 exit();
  }


Jde o to že si vypíšu formulář a po odeslání se mi založí nová tabulka v databázi a nový soubor (o kterém se tady bavíme), kde se budou zobrazovat data z databáze a zase pomocí formuláře se z toho souboru budou moci nahrávat data do databáze.

Děkuji
Davex
Profil
V naprosté většině případů nepotřebuješ pro každou tabulku v databázi samostatný skript. V souboru vkládaném přes require() si udělej funkci pro výpis dat z jakékoliv tabulky a řetězec s SQL příkazem zapiš s dvojitými uvozovkami, aby se do příkazu vepsala hodnota proměnné.

  $vysledek = mysql_query("SELECT * FROM $odkaz ORDER BY dat DESC");
jenikkozak
Profil
pávek:
Bude lépe, pokud konkrétněji popíšete, čeho chcete dosáhnout. Mně se ani moc nelíbí, že se snažíte vytvářet více tabulek. To sice nemusí být, ale pravděpodobně je chybným uspořádáním databáze.
pávek
Profil *
Davex:
V naprosté většině případů nepotřebuješ pro každou tabulku v databázi samostatný skript. V souboru vkládaném přes require() si udělej funkci pro výpis dat z jakékoliv tabulky a řetězec s SQL příkazem zapiš s dvojitými uvozovkami, aby se do příkazu vepsala hodnota proměnné.


děkuji, už jsem to vyřešil. Co šlo, tak jsem vložilpřes require a zbytek jsem musel použít ty zpětný lomítka.
Všem moc děkuji za pomoc.

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:

0