Autor Zpráva
Adela
Profil
Ahoj,
omlouvám se za dotaz pro lamy :-)

Jak by měl vypadat jednoduchý php script, když si chci ve formuláři změnit data v nějaké proměnné.

Např.:

config.php
<?php 
$nadpis =  "Nějaký nadpis";
$text =  "Nějaký text";
?>


form.php
<?php include "config.php"; ?>
<form action="funkce.php" method="GET">
  <input type="text" name="configNadpis" value="<?php echo "$nadpis"; ?>" />
  <input type="text" name="configText" value="<?php echo "$text"; ?>" />
  <input type="submit" value="Odeslat" />
</form>


funkce.php
<?php


?>


Určitě budete vědět jednoduchou možnost.
děkuji
Adéla
SwimX
Profil
Adela:
když nějaká data odešleš do souboru funkce.php přes GET tak v souboru funkce.php máš:

$_GET['configNadpis'] a $_GET['configText'].

Jaký význam má, zapisovat je do configu? proč nepracuješ dál s těmito proměnnými? ALe kdyby si mermommocí chtěla:

funkce.php


<?php

$file = fopen('config.php','w'); //otevře soubor config.php a smaže všechno uvnitř něj
fwrite($file, '<?php $nadpis = "'.$_GET['configNadpis'].'";');
fwrite($file, '$text = "'.$_GET['configText'].'"; ?>');
fclose($file);

?>


P.S.
<input type="text" name="configNadpis" value="<?php echo "$nadpis"; ?>" /> Ty uvozovky jsou nesmyslné
panther
Profil
Adela:
pořádně jsem nepochopil, co že to vlastně chceš, ale co třeba:
if (isset($_GET['submit'])) { //je-li odesláno
    $nadpis = $_GET['configNadpis'];
    $text = $_GET['configText'];
}


a ve formuláři bude u odesílacího tlačítka atribut „name“ se stejnou hodnotou, jakou testuji v podmínce pomocí isset, tedy:
<input type="submit" value="Odeslat" name="submit" />
Adela
Profil
Smysl? Chci aby si uživatel mohl ty proměnné měnit pode sebe. nechci použít nějaký CMS kanón na komára, když jde jen o pár dat.

//otevře soubor config.php a smaže všechno uvnitř něj

No to bych tučně nerada :-)

jde něco jako :-):

//otevře soubor config.php
//najde proměnnou $nadpis a tu změní


?????
Adela
Profil
No jo no: <?php echo $nadpis; ?>

PHP neumím ani zapsat :-)
Adela
Profil
panther:
Nějak se tím nic nevyřešilo v config.php je stále:

$nadpis =  "Nějaký nadpis";
$text =  "Nějaký text";


a ne to co jsem zadala do formuláře :-)
SwimX
Profil
Adela:
jde něco jako :-):
>
//otevře soubor config.php
//najde proměnnou $nadpis a tu změní

Jistě. Ale
Chci aby si uživatel mohl ty proměnné měnit pode sebe.

a kolik jich bude? Pokud víc, pak by se hodila databáze. Těžko bude mít každý uživatek své dvě proměnné zapsané v souboru. :)

Pokud jen jeden, pak ano něco jako:

skript upraven do finální podoby, podle následujících příspěvků

$f = file_get_contents('config.php', 'r'); //načte obsah souboru
$f = preg_replace('~\$nadpis\s*=\s*".*";~', '$nadpis = "'.$_GET['configNadpis'].'";', $f); //nahradí všemezi uvozovkama u nadpisu.
$f = preg_replace('~\$text\s*=\s*".*";~', '$text = "'.$_GET['configText'].'";', $f); //nahradí všemezi uvozovkama u nadpisu.
$file = fopen('config.php','w'); //otevře soubor config.php a smaže všechno uvnitř něj
fwrite($file, $f); //zapíše do něj upravený obsah
fclose($file); // zavře



panther mění obsah proměnné, nikoli obsah souboru config, myslel to jinak :)
Adela
Profil
SwimX

Děkuju .... chybu to nevypíše žádnou ale v config.php to taky nic nezmění :-)
SwimX
Profil
Adela:
:) moje chyba.
Zvýrazněné mají být apostrofy, ne uvozovky
$f = preg_replace('~\$nadpis = \"(.*)\";~', '$nadpis = "'.$_GET['configNadpis'].'";', $f); //nahradí všemezi uvozovkama u nadpisu.
$f = preg_replace('~\$text = \"(.*)\";~', '$text = "'.$_GET['configText'].'";', $f); //nahradí všemezi uvozovkama u nadpisu.
Adela
Profil
SwimX

Pořád nic :-(
SwimX
Profil
Adela:
není možné :) ukaž část skriptu. Jaká jsou práva na souboru?
Adela
Profil
SwimX

form.php
<?php include "config.php"; ?>
<form action="funkce.php" method="GET">
  <input type="text" name="configNadpis" value="<?php echo "$nadpis"; ?>" />
  <input type="text" name="configText" value="<?php echo "$text"; ?>" />
  <input type="submit" value="Odeslat" name="submit" />
</form>


funkce.php
<?php
$f = file_get_contents('config.php', 'r'); //načte obsah souboru
$f = preg_replace('~\$nadpis = \"(.*)\";~', '$nadpis = \"'.$_GET['configNadpis'].'\";', $f); //nahradí všemezi uvozovkama u nadpisu.
$f = preg_replace('~\$text = \"(.*)\";~', '$text = \"'.$_GET['configText'].'\";', $f); //nahradí všemezi uvozovkama u nadpisu.
$file = fopen('config.php','w'); //otevře soubor config.php a smaže všechno uvnitř něj
fwrite($file, $f); //zapíše do něj upravený obsah
fclose($file); // zavře
?>


config.php
<?php 
$nadpis =  "Nějaký nadpis";
$text =  "Nějaký text";
?>


Tohle mi nefunguje. Když mám config.php otevřený v Pspadu, tak ten mi hlásí že byl config.php změněn, ale nic se nezmění.
SwimX
Profil
Adela:
protože já tím regulárem měním $nadpis[mezera]=[mezera]"cokoli"; a ty máš za rovnáse dvě mězery. Je to takové trochu naprd uznávám, ale buď jednu mezeru smaž, nebo uprav regulár na:

$f = preg_replace('~\$nadpis\s*=\s*\"(.*)\";~', '$nadpis = \"'.$_GET['configNadpis'].'\";', $f); //nahradí všemezi uvozovkama u nadpisu.
$f = preg_replace('~\$text\s*=\s*\"(.*)\";~', '$text = \"'.$_GET['configText'].'\";', $f); //nahradí všemezi uvozovkama u nadpisu.
Adela
Profil
Už o jede díky SwimX

Ještě jsem teda musela změnit:

'$nadpis = \"'.$_GET['configNadpis'].'\";'
'$text = \"'.$_GET['configText'].'\";'


na

'$nadpis = "'.$_GET['configNadpis'].'";'
'$text = "'.$_GET['configText'].'";'


Není to na prd... přesně tohle jsem potřebovala.

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: