Autor Zpráva
slovacik
Profil *
ahoj zasa som tu.. Sorrač , že zasa otravujem .. ale toto je fakt maličkosť. Normálne nájdem vela veci na google ale toto neviem ani ako by som tam mal hladat.. tak vám skusim vysvetliť o čo asi ide...
Mám formulár, ktorý keď odošlem má zapísať do .txt dokumentu nejaký text... A teraz ten problem: vždy ked refresh-nem stránku ten text sa mi zapíše znova do dokumentu... Malo by to vyriešit hlavičky resp hlavička .. lenže neviem ako ju v tomto prípade využiť...
Ďakujem za reakcie.
kvoky
Profil
Nejjednodussi je po odeslani formuláře přesměrovat stránku na nějakou stránku, na které bude hláška že se vše odeslalo, popřípadě na sebe samotnou před odesláním.
asi takhle:

header("location:".$url);
slovacik
Profil *
prave tu je ten problem.. ja chcem aby ho poslalo na tu istú stránku..
kvoky
Profil
jestli chces pred odesláním tak není nic jednoduššího než tohle:

header("location:".$_SERVER["PHP_SELF"]);


tak trochu ale tusim, ze pouzivas klasiku:

if (!$POST){
 //Ukážeme formulář
}else{
 //Zápis do souboru
 echo "Do souboru bylo zapsáno";
}


V tom případě nejde rozlišit jestli si refreshoval nebo ne, asi to budes muset trochu predelat.
slovacik
Profil *
Prosim ťa mohol by si mi to ošetriť nejak? Lebo už sa s tym hram dlho a stále to isté... Alebo i keby niekto iný poradil budem len rád..
 <?
if(isset($_POST['odoslat'])==0){
	echo"Nevyplnili ste spravu <br />";
			
				$subor= fopen("text.txt","r");
					$txt=fgets($subor);
						$citaj=readfile("text.txt");
							echo $citaj;
							fclose($subor);
									
			}
						else if
						(isset($_POST['odoslat'])==1) {
		echo "<h3> odoslané</h3>";
		$farba='<bgcolor="#CCCCCC">';
			$subor= fopen("text.txt","a+");
				$txt=fgets($subor);
					$medzera="&nbsp;"."&nbsp;";
 						$cas = "<b>".date("H:i:s")."</b>";
							fwrite($subor,$cas.$medzera."{$_SESSION['meno']}"."<b>:</b>".$medzera.$sp.'<br />');
								$citaj=readfile("text.txt");
									echo $citaj;
										fclose($subor);
		
		} 


?>
AM_
Profil
slovacik:
isset($_POST['odoslat'])==0
funkce isset vrací true nebo false. porovnání s 0 funguje stejně jako s false, ale je to trošku vepřový zápis. Celkově ten kód je trochu hrozný, pokusil jsem se ti ho trochu opravit. Hlavně proboha to odsazování kódu, kde jsi přišel na to, že se odsazuje každý řádek o kus víc?

<?php //Nevynechávat!!!
if(!isset($_POST['odoslat'])){ //vykřičník znamená NOT            
      if (!empty($_GET['sent'])){
          echo "Zprava odeslana";
      } else {
          echo"Nevyplnili ste spravu <br />"; //Dobrý zvyk je nejdřív výkonný kód, potom výstup, proto jsem výpis přesunul sem
      }
      readfile("text.txt");//ČTE SOUBOR PŘÍMO NA VÝSTUP, TAKŽE ŽÁDNÉ FOPEN, ŽÁDNÉ FGETS, ŽÁDNÉ ECHO
}
else {
 // toto vyhoď úplně, je to tam zcela nesmyslně, prostý else stačí: if (isset($_POST['odoslat'])==1) {
// žádný výstup nebude, potřebujeme přesměrování        echo "<h3> odoslané</h3>";
//k čemu je tohle? nevidím, že by se někde dál tahle proměnná využila:        $farba='<bgcolor="#CCCCCC">';
        $medzera="&nbsp;"."&nbsp;";
        $cas = "<b>".date("H:i:s")."</b>";
        fwrite($subor,$cas.$medzera."{$_SESSION['meno']}"."<b>:</b>".$medzera.$sp.'<br />');
//Tohle vyhodit, nic vypisovat nebudeme, přesměrujeme se. Nicméně i tak je to špatně, funkce readfile()
//vypisuje rovnou na výstup a vrací integer, takže tím echem vypisuješ pouze číslo reprezentující výsledek funkce readfile
//        $citaj=readfile("text.txt");
//        echo $citaj;
        fclose($subor);
        header("location: {$_SERVER['PHP_SELF']}?sent=1"); //jádro pudla jest zde
        die(); //nemá smysl dál něco vykonávat
} 
slovacik
Profil *
Diky už to šlape.. len stáale to ma zádrhel.. ako sa zbavím toho čisla v tom dokumente ? vždy po odoslaní novej správy sa to čislo zvýši.. Dá sa to zaolat i inak teda ako je funkcia
 read_file() 
?
AM_
Profil
Opravil jsem to přímo v minulém příspěvku. Nic proti, ale na php.net je velice kvalitní referenční příručka k PHP, kde si může každý sám zjistit, jak se která funkce používá. Náhodné zkoušení funkcí, které jsi někde okoukal, nevede k dobrým výsledkům.
slovacik
Profil *
lenže mne to stále vypisuje to číslo i ked presne skopčím ten skript od teba... Btw toto co som pisal bol môj script.. kedže som začiatočník tak bolo aj videt ten chaotický zápis..
nightfish
Profil
slovacik:
lenže mne to stále vypisuje to číslo i ked presne skopčím ten skript od teba
to bude tím, že ti AM_ ten skript i okomentoval
co se vypisovaného čísla týká, doporučuji přečíst komentáře na řádcích 17 a 18 v [#6]
slovacik
Profil *
oke vyriešene.. ako som opravoval script prave tie dva riadky som tam nejak vsunul.. Diky moc

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: