Autor | Zpráva | ||
---|---|---|---|
pávek Profil * |
#1 · Zasláno: 17. 12. 2012, 13:59:19
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); 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 |
#2 · Zasláno: 17. 12. 2012, 15:56:49
Ano, třeba pomocí toho:
$text = "<h1>Test je <?php echo 'OK';?>.</h1>"; $soubor = fopen("soubor.php", "w+"); fwrite($soubor, $text); |
||
NouF Profil |
#3 · Zasláno: 17. 12. 2012, 18:14:25
Práva u adresaře? 777 ?
|
||
pávek Profil * |
#4 · Zasláno: 17. 12. 2012, 23:48:46
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 |
#5 · Zasláno: 18. 12. 2012, 08:13:46
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 * |
#6 · Zasláno: 18. 12. 2012, 12:23:55
Děkuji za ochotu, už jsem to rozchodil.
|
||
Časová prodleva: 4 dny
|
|||
pávek Profil * |
#7 · Zasláno: 22. 12. 2012, 15:55:54
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 |
||
Časová prodleva: 5 dní
|
|||
pávek Profil * |
#8 · Zasláno: 27. 12. 2012, 23:29:00
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 * |
#10 · Zasláno: 29. 12. 2012, 23:47:55
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 * |
#12 · Zasláno: 30. 12. 2012, 12:56:01
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 |
#14 · Zasláno: 30. 12. 2012, 15:24:58
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 * |
#15 · Zasláno: 31. 12. 2012, 20:59:52
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. |
||
Časová prodleva: 11 let
|
0