ďťż
Podstrony
|
telcocafeOtóż mam sobie plik tekstowy z jakimś tekstem i teraz chciałbym, aby za pomocą formularza dodać do niego tekst. Jednak chciałbym, aby tekst został dodany na początku tego pliku a nie na końcu. Czy jest jakaś funkcja, która to umożliwia ?oczywyiście. Podaje ci gotowy plik, który miałem kiedyś na stronie w księdze gości. <?php function info($s,$klasa) { echo ('<div align="center"><p class="'.$klasa.'">'.$s.'</p></div>'); } function konwertuj($s) { $s=strip_tags($s,'<b><i><u>'); $s=stripslashes($s); $s=str_replace('"','"',$s); return ($s); } if (isset($_POST['imie'])) { $_POST['imie']=konwertuj($_POST['imie']); $_POST['email']=konwertuj($_POST['email']); $_POST['klasa']=konwertuj($_POST['klasa']); $_POST['www']=konwertuj($_POST['www']); $_POST['opinia']=konwertuj($_POST['opinia']); $blad=''; if (strlen($_POST['opinia'])<10 || strlen($_POST['opinia'])>1024) $blad='Opinia jest zbyt krótka'; if ($_POST['www']!='') { if (strtolower(substr($_POST['www'],0,7))!='http://') $_POST['www']='http://'.$_POST['www']; if (strlen($_POST['www'])<11) $blad='¬le podano adres strony WWW'; } { if (strlen($_POST['klasa'])<1 || strlen($_POST['klasa'])>3 ) $blad='Żle wprowadziłe¶ numer klasy' ; } if (! ereg ("^.+@.+\..+$", $_POST['email'])) $blad='Podaj poprawny adres e-mail'; if (strlen($_POST['imie'])<3) $blad='¬le wprowadzono imie i nazwisko'; if ($blad!='') info($blad,'blad'); else { //zapisujemy dane do pliku if (file_exists('wpisy.txt')) $dane=file('wpisy.txt'); else $dane=array(); $plik=fopen('wpisy.txt','w'); flock($plik,2); fputs($plik,"<table border='0'>"); fputs($plik,"<tr><td align='right'><b>Data wpisu:</b></td><td>".date('d.m.Y H:i:s')."</td></tr>"); fputs($plik,"<tr><td align='right'><b>Imie i nazwisko:</b></td><td>$_POST[imie]</td></tr>"); fputs($plik,"<tr><td align='right'><b>E-mail:</b></td><td><a href='mailto:$_POST[email]'>$_POST[email]</a></td>< /tr>"); fputs($plik,"<tr><td align='right'><b>Klasa:</b></td><td>$_POST[klasa]< /td></tr>"); if ($_POST['www']!='') fputs($plik,"<tr><td align='right'><b>WWW:</b></td><td><a href='$_POST[www]'>$_POST[www]</a></td></tr>" ); fputs($plik,"<tr><td align='right' valign='top'><b>Opinia:</b></td><td><i>$_POST[opinia] </i></td></tr>"); fputs($plik,"</table><hr />"); for ($i=0;$i<count($dane);$i++) fputs($plik,$dane[$i]."\r\n"); flock($plik,3); fclose($plik); { if (strlen($_POST['klasa'])<1 || strlen($_POST['klasa'])>3 ) $blad='Żle wprowadziłe¶ numer klasy' ; } info('Formularz został zapisany.','ok'); include('lista.php'); return; } } else { $_POST['imie']=''; $_POST['email']=''; $_POST['klasa']=''; $_POST['www']=''; $_POST['opinia']=''; echo '<p>Wypełnij poprawnie poniższy formularz.</p>'; } ?> Wystarczy że odpowiednio go zmienisz. Nie jestem pewien, ale mi się zdaję, że to nie zadziała w ten sposób jakbym chciał. Do zapisu użyłeś tryb w, ale jeżeli istnieje jakiś tekst już w tym pliku to jego zawartość jest kasowana, a ja chcę, żeby dopisało jakiś tekst przed istniejącym tekstem. A sprawdzałeś? Zwróć uwagę, że przed skasowaniem zawartości, pobieramy ją: if (file_exists('wpisy.txt')) $dane=file('wpisy.txt'); else $dane=array(); po czym zapisujemy całość. No tego nie zauważyłem :frusty: Teraz jest OK Mozecie mi powiedziec co TU jest zle?? <html> <head><title>Invite giver v0.1 by Kokoss</title></head> <body> <form> <?php function info($s,$klasa) { echo ('<div align="center"><p class="'.$klasa.'">'.$s.'</p></div>'); } function konwertuj($s) { $s=strip_tags($s,'<b><i><u>'); $s=stripslashes($s); $s=str_replace('"','"',$s); return ($s); } if (isset($_POST['nick'])) { $_POST['nick']=konwertuj($_POST['nick']); $_POST['miesiac']=konwertuj($_POST['miesiac']); $_POST['dzien']=konwertuj($_POST['dzien']); } else { //zapisujemy dane do pliku if (file_exists('inv_furora.txt')) $dane=file('inv_furora.txt'); else $dane=array(); $plik=fopen('inv_furora.txt','w'); flock($plik,2); fputs($plik,"<TR BGCOLOR=#D4C0A1><TD><A HREF="http://www.tibia.com/community/?subtopic=characters&name=[nick]">[ nick]</A></TD>"); fputs($plik,"<TD>[miesiac] [dzien] 2007</TD></TR>"); for ($i=0;$i<count($dane);$i++) fputs($plik,$dane[$i]."\r\n"); flock($plik,3); fclose($plik); info('Formularz został zapisany.','ok'); include('give_invite.php'); return; } } else { $_POST['nick']=''; $_POST['miesiac']=''; $_POST['dzien']=''; echo '<p>Wypełnij poprawnie poniższy formularz.</p>'; } ?> <center>Nick:<input name="nick" /><br><br> Miesiac: <input name="miesiac" maxlengh="3" /> Dzien: <input name="dzien" maxlengh="2" /> <input type="submit" value="Invite" /> </form> <html> Jest to skrypt z pliku give_invite.php Czy moglby ktos poprawic bledy? Użytkownik kokoss15 edytował ten post 04 lipiec 2007, 07:50 jaki błąd otrzymujesz konkretnie, a po drugie umieść to w "codebox" zanim dostaniesz ostrzeżenie. ja już znalazłem błąd: fputs($plik,"<TR BGCOLOR=#D4C0A1><TD><A HREF="http://www.tibia.com/community/?subtopic=characters&name=[nick]">[ nick]</A></TD>"); zamień na fputs($plik,"<TR BGCOLOR=#D4C0A1><TD><A HREF='http://www.tibia.com/community/?subtopic=characters&name=[nick]'>[ nick]</A></TD>"); dałeś cudzysłow i przy odsyłaczu, i na początku, używaj edytora z kolorowaniem składni, to napewno unikniesz takich błędów jaki błąd otrzymujesz konkretnie, a po drugie umieść to w "codebox" zanim dostaniesz ostrzeżenie. Teraz system jest przeciazony i strona nie wchodzi (System overloaded. Please visit us later...) ale wcześniej to był bodajże błąd w 43 linijce. (przed samym kode php sa jeszcze 4 linijki)... było coś ze znakiem ' Po pierwsze zle zamkniete cudzyslowy w 33 linii, a po drugie - balagan w zamknieciach nawiasow klamrowych w okolicach 44 linii usuwając nawias klamrowy w 44 lini wywołałem błąd: Parse error: syntax error, unexpected T_ELSE in ścieżka do pliku/give_invite.php on line 44 a gdy ten nawias jest pojawia się błąd: Parse error: syntax error, unexpected '}' in ścieżka do pliku/give_invite.php on line 44 Jak mam uporządkować nawiasy? (Ilość nawiasów zamykających i otwierających jest równa bez nawiasu w lini 44 więc nie wiem w czym rzecz.. Teraz kod wygląda tak: <html> <head><title>Invite giver v0.1 by Kokoss</title></head> <body> <form> <?php function info($s,$klasa) { echo ('<div align="center"><p class="'.$klasa.'">'.$s.'</p></div>'); } function konwertuj($s) { $s=strip_tags($s,'<b><i><u>'); $s=stripslashes($s); $s=str_replace('"','"',$s); return ($s); } if (isset($_POST['nick'])) { $_POST['nick']=konwertuj($_POST['nick']); $_POST['miesiac']=konwertuj($_POST['miesiac']); $_POST['dzien']=konwertuj($_POST['dzien']); } else { //zapisujemy dane do pliku if (file_exists('inv_furora.txt')) $dane=file('inv_furora.txt'); else $dane=array(); $plik=fopen('inv_furora.txt','w'); flock($plik,2); fputs($plik,"<TR BGCOLOR=#D4C0A1><TD><A HREF='http://www.tibia.com/community/?subtopic=characters&name=[nick]'>[nick] </A></TD>"); fputs($plik,"<TD>[miesiac] [dzien] 2007</TD></TR>"); for ($i=0;$i<count($dane);$i++) fputs($plik,$dane[$i]."\r\n"); flock($plik,3); fclose($plik); info('Formularz został zapisany.','ok'); include('give_invite.php'); return; } } else { $_POST['nick']=''; $_POST['miesiac']=''; $_POST['dzien']=''; echo '<p>Wypełnij poprawnie poniższy formularz.</p>'; } ?> <center>Nick:<input name="nick" /><br><br> Miesiac: <input name="miesiac" maxlengh="3" /> Dzien: <input name="dzien" maxlengh="2" /><br><br> <input type="submit" value="Invite" /> </form> </body> </html> Użytkownik kokoss15 edytował ten post 04 lipiec 2007, 12:01 Po prostu usuwając ten nawias stworzyłeś konstrukcję "if (isset($_POST['nick'])) { ... } else { ... } else { ... }", która nie ma żadnego sensu. Zastanów się co chcesz uzyskać, pomyśl logicznie i popraw. Użytkownik bryn edytował ten post 04 lipiec 2007, 14:15 Po prostu usuwając ten nawias stworzyłeś konstrukcję "if (isset($_POST['nick'])) { ... } else { ... } else { ... }", która nie ma żadnego sensu. Zastanów się co chcesz uzyskać, pomyśl logicznie i popraw. usuwając ostatnią część else uzyskałem: "if (isset($_POST['nick'])) { ... } else { ... }" Teraz widzę następujący błąd: Gdy wchodze na strone zamiast formulaza wyswietla sie bezposrednio "Formulaż został zapisany" a poniżej: Fatal error: Cannot redeclare info() (previously declared in ściezka do pliku/give_invite.php:6) in ściezka do pliku/give_invite.php on line 9 (Kod wygląda teraz następująco: <html> <head><title>Invite giver v0.1 by Kokoss</title></head> <body> <form> <?php function info($s,$klasa) { echo ('<div align="center"><p class="'.$klasa.'">'.$s.'</p></div>'); } function konwertuj($s) { $s=strip_tags($s,'<b><i><u>'); $s=stripslashes($s); $s=str_replace('"','"',$s); return ($s); } if (isset($_POST['nick'])) { $_POST['nick']=konwertuj($_POST['nick']); $_POST['miesiac']=konwertuj($_POST['miesiac']); $_POST['dzien']=konwertuj($_POST['dzien']); } else { //zapisujemy dane do pliku if (file_exists('inv_furora.txt')) $dane=file('inv_furora.txt'); else $dane=array(); $plik=fopen('inv_furora.txt','w'); flock($plik,2); fputs($plik,"<TR BGCOLOR=#D4C0A1><TD><A HREF='http://www.tibia.com/community/?subtopic=characters&name=[nick]'>[nick] </A></TD>"); fputs($plik,"<TD>[miesiac] [dzien] 2007</TD></TR> "); for ($i=0;$i<count($dane);$i++) fputs($plik,$dane[$i]."\r\n"); flock($plik,3); fclose($plik); info('Formularz został zapisany.','ok'); include('give_invite.php'); return; } ?> <center>Nick:<input name="nick" /><br><br> Miesiac: <input name="miesiac" maxlengh="3" /> Dzien: <input name="dzien" maxlengh="2" /><br><br> <input type="submit" value="Invite" /> </form> </body> </html> Jakoś mam wrażenie że próbujesz nie znając PHP na oślep posklejać kawałki kodu w całość :| Po co ten skrypt include'uje samego siebie? Po co zapisujesz do pliku pustą zmienną? Czemu wywołujesz zapis do pliku nie mając wypełnionego formularza? Użytkownik bryn edytował ten post 05 lipiec 2007, 10:48 Trafiłeś w samo sedno... Nie znam się na php a kombinuje. Oto co teraz wymyśliłem: Kod z pliku give_invite.php: <html> <head><title>Invite giver v0.1 by Kokoss</title></head> <body> <form method="post" action="invite1.php"> <center>Nick:<input name="nick" /><br><br> Miesiac: <input name="miesiac" maxlengh="3" /> Dzien: <input name="dzien" maxlengh="2" /><br><br> <input type="submit" value="Invite" /> </form> </body> </html> I kod z pliku invite1.php: <?php function info($s,$klasa) { echo ('<div align="center"><p class="'.$klasa.'">'.$s.'</p></div>'); } function konwertuj($s) { $s=strip_tags($s,'<b><i><u>'); $s=stripslashes($s); $s=str_replace('"','"',$s); return ($s); } if (isset($_POST['nick'])) { $_POST['nick']=konwertuj($_POST['nick']); $_POST['miesiac']=konwertuj($_POST['miesiac']); $_POST['dzien']=konwertuj($_POST['dzien']); } else { //zapisujemy dane do pliku if (file_exists('inv_furora.txt')) $dane=file('inv_furora.txt'); else $dane=array(); $plik=fopen('inv_furora.txt','w'); flock($plik,2); fputs($plik,"<TR BGCOLOR=#D4C0A1><TD><A HREF='http://www.tibia.com/community/?subtopic=characters&name=[nick]'>[nick] </A></TD>"); fputs($plik,"<TD>[miesiac] [dzien] 2007</TD></TR> "); for ($i=0;$i<count($dane);$i++) fputs($plik,$dane[$i]."\r\n"); flock($plik,3); fclose($plik); info('Formularz został zapisany.','ok'); return; } ?> Ok. wyswietla sie formularz ale gdy klikne invite przechodzi do invite.php i nie zapisuje do pliku... Gdy było tak jak poprzednio za każdym razem do pliku dopisywał się tekst ale oczywiście bez odpowiednich zmiennych (czyli zamiast nicku było [nick] itd... Czy mógłbyś mi jakoś pomóc? Użytkownik kokoss15 edytował ten post 05 lipiec 2007, 15:17 <? //ustaw sciezke do pliku: $filename = ""; //zdefiniuj nowy wiersz $nowy = "..."; $plik = file($filename); $plik = implode("",$plik); $plik = $nowy."\r\n".$plik; $fp = fopen($filename , "w"); flock($fp,2); fputs( $fp , $plik); flock($fp,3); fclose($fp); ?> z http://forum.webhelp...aqforum.php?f=1 powinno dizalac :> <? //ustaw sciezke do pliku: $filename = ""; //zdefiniuj nowy wiersz $nowy = "..."; $plik = file($filename); $plik = implode("",$plik); $plik = $nowy."\r\n".$plik; $fp = fopen($filename , "w"); flock($fp,2); fputs( $fp , $plik); flock($fp,3); fclose($fp); ?> z http://forum.webhelp...aqforum.php?f=1 powinno dizalac :> Dzięki wielkie!! Ten kod wkońcu działa!! :) |
|||
Sitedesign by AltusUmbrae. |