Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] stworzenie pliku na serwerze + zapis
Forum PHP.pl > Forum > PHP
qwe
Witam

Mam stronę na której wypełnia się formularz i dane zostają zapisane do pliku txt na serwerze.
Jednak ten plik robi się coraz większy przez zapisywanie wszystkich danych osób.

kod
index.php

Kod
<br><center><form action="formularz.php" method="post">
<table cellspacing="0" class="tekst">
<tr>
<td width="200px" valign="top">
Nazwa Firmy:* </td>
<td width="230px;"><input type="text" name="nazwa" style="width: 200px;" /></td>
</tr>
<tr>
<td valign="top">
Telefon: </td>
<td> <input type="text" name="telefon" style="width: 200px;" /></td>
</tr>
<tr>
<td valign="top">
e-mail: </td>
<td><input type="text" name="mail" style="width: 200px;" /></td>
</tr>
<tr>
<td valign="top">
Adres:* </td>
<td><input type="text" name="adres" style="width: 200px;" /></td>
</tr>
<tr>
<td valign="top">
Miejscowość:* </td>
<td><input type="text" name="miejscowosc" style="width: 200px;" /></td>
</tr>
<tr>
<td>Pola ozaczone gwiazdką (*) są wymagane</td>
<td>
<input type="submit" value="Dopisz" /> </td>
</tr>
</table>
</form></center>



i formluarz.php


Kod
<?php
/*********************************************
* plik formularz.php
*********************************************/

if(!empty($_POST['nazwa']) and !empty($_POST['adres'])  and !empty($_POST['miejscowosc'])  and !empty($_POST['opis'])) {

$nazwa = trim($_POST['nazwa']);
$telefon = (empty($_POST['telefon'])) ? 'nie podano' : trim($_POST['telefon']);
$mail = (empty($_POST['mail'])) ? 'nie podano' : trim($_POST['mail']);
$adres = trim($_POST['adres']);
$miejscowosc = trim($_POST['adres']);
$opis = trim($_POST['opis']);
// dane pochodz╣ce z formularza
$dane = "|Nazwa:|".$nazwa."|telefon:|".$telefon."|mail:|".$mail."|opis:|".$opis."\n";
// przypisanie zmniennej $file nazwy pliku
$file = "bazafirm.txt";
// uchwyt pliku, otwarcie do dopisania
$fp = fopen($file, "a");
// blokada pliku do zapisu
flock($fp, 2);
// zapisanie danych do pliku
fwrite($fp, $dane);
// odblokowanie pliku
flock($fp, 3);
// zamkniŕcie pliku
fclose($fp);

echo '<p>Dane zosta│y dopisane!</p>';
}

?>



Chciałbym zrobić aby po wypełnienie formularza i kliknięciu buttona został utworzony plik o nazwie takiej jak nazwa firmy czyli np ktoś wpisał w formularzu
Nazwa firmy: intel i zostanie utworzony plik intel.txt i do niego zapisane dane z formularza

Ale nie wiem jak to wykonań (przeszukałem formu ale nic nie znalazłem ) proszę o pomoc

z góry dziękuje
Rafal Filipek
Kod
$file = "bazafirm.txt";

ta linijka okresla nawe pliku tak wiec musisz podpiac zamiast stringu tak jak jest teraz zminna z formularza i juz.
kefirek
Zamiast
  1. <?php
  2. $fp = fopen($file, "a");
  3. ?>

daj

  1. <?php
  2. $fp = fopen($nazwa.'txt', "a");
  3. ?>
qwe
no tak .... tylko nie mogę zapisać bo tego pliku o $nazwa.'txt', nie ma na serwerze .. najpierw trzeba go stworzyć i właśnie z tym mam problem
artur_dziocha
a ja odsyłam do manuala - tam jest pieknie cudownie wszystko opisane
http://pl.php.net/manual/pl/ref.filesystem.php
kefirek
Cytat(qwe @ 24.02.2009, 19:33:36 ) *
no tak .... tylko nie mogę zapisać bo tego pliku o $nazwa.'txt', nie ma na serwerze .. najpierw trzeba go stworzyć i właśnie z tym mam problem



No przecierz fopen z trybem a
Kod
a Otwiera tylko do zapisu; umieszcza wskaźnik pliku na jego końcu. Jeśli plik nie istnieje to próbuje go utworzyć.
qwe
wywala mi błąd

Warning: fopen(intelxt) [function.fopen]: failed to open stream: Permission denied in /baza1/formularz.php on line 20

Warning: flock() expects parameter 1 to be resource, boolean given in /baza1/formularz.php on line 22

Warning: fwrite(): supplied argument is not a valid stream resource in /baza1/formularz.php on line 24

Warning: flock() expects parameter 1 to be resource, boolean given in /baza1/formularz.php on line 26

Warning: fclose(): supplied argument is not a valid stream resource in /baza1/formularz.php on line 28


znalazłem coś takiego do tworzenia pliku


// zakladanie wskazanego pliku
$nowy = $_GET["nowy"];
if (!file_exists($nowy) && $nowy<>"") {
touch($nowy);
chmod($nowy, 0664);
} else if ($nowy<>"" && file_exists($nowy)) {
echo "Plik o podanej nazwie już istnieje!";
}
kefirek
Daj tak zapomniałem o kropce
  1. <?php
  2. $fp = fopen($nazwa.'.txt', "a");
  3. ?>
qwe
Cytat(kefirek @ 24.02.2009, 20:31:06 ) *
Daj tak zapomniałem o kropce
  1. <?php
  2. $fp = fopen($nazwa.'.txt', &#092;"a\");
  3. ?>


też błąd

failed to open stream
Kamil Jura
Proponuję zmienić atrybuty katalogu w którym zapisujesz te pliki smile.gif Nie wiem czego używasz, ale Total Commanderem robi się tak:

PPM na Katalog (zaznaczamy biggrin.gif ) i później: plik -> zmień atrybuty wpisz tam sobie 777 i po sprawie. Jeśli nie będzie działać to coś jeszcze pomyślimy.

Ps. te txt powinny być archaizmem w dziedzinie programowania, nie lepiej baza danych ?
qwe
Cytat(Kamil Jura @ 24.02.2009, 22:22:13 ) *
Proponuję zmienić atrybuty katalogu w którym zapisujesz te pliki smile.gif Nie wiem czego używasz, ale Total Commanderem robi się tak:

PPM na Katalog (zaznaczamy biggrin.gif ) i później: plik -> zmień atrybuty wpisz tam sobie 777 i po sprawie. Jeśli nie będzie działać to coś jeszcze pomyślimy.

Ps. te txt powinny być archaizmem w dziedzinie programowania, nie lepiej baza danych ?



hehe wiem jak się zmienia atrybuty w total comanderze i mam dla katalogu ustawione 777 tongue.gif

Wiem, że powinienem korzystać z bazy danych jednak nie opanowałem jeszcze tego wszystkiego co się wiąże właśnie z bazami.

Dlatego póki co korzystam z prostych metod i txt tongue.gif

Wziąłem przykładowy prostszy skrypt do zapisu 2 danych do pliku utworzonego i zrobiłem

Kod
<form action="index.php" method="post">
<input type="text" name="nowy" />

<b><input name="imie" size="10" maxlength="10" type="imie">
<input name="wiek" size="30" maxlength="2" type="wiek"></b>

<br /><input type="submit" value="Wykonaj" />
</form>

<?
// zakladanie  pliku
$nowy = $_POST["nowy"];
if (!file_exists($nowy) && $nowy<>"") {
touch($nowy);
chmod($nowy, 0664);
} else if ($nowy<>"" && file_exists($nowy)) {
echo "Plik o podanej nazwie już istnieje!";
}

?>


i chcę dołączyć aby do pliku podanym jako nowy zostały zapisane dane

Kod
$imie = $_POST['imie'];
$wiek = $_POST['wiek'];
<b>
$file = "baza.txt";

$fp = fopen($file, "a");</b>
flock($fp, 2);

fwrite($fp, $user.' '.$wiek."\n");

flock($fp, 3);
fclose($fp);



i te 2 linijki

$file = "baza.txt";
$fp = fopen($file, "a");</b>


będzie dobrze jak zrobie $file =$_POST["nowy"];

questionmark.gif



--------------
doszedłem jak tu zrobić

musi być

Kod
$file = $nowy;

$fp = fopen($file, "a");



to teraz idę się meczyć z tym 1 skryptem
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.