piwib
20.12.2005, 14:00:27
Witam. Robie ankiete i już wszystko mam tylko jeszcze coś... Ankieta tworzy mi plik tekstowy w którym umieszczam odpowiedzi. Plik nazywa się "ODP_1" i chce aby sprawdzał czy taki plik istnieje... jeśli tak to ma stworzyć "ODP_2" i tak dalej...
Męcze się i nie wychodzi mi to poradzicie coś?
php programmer
20.12.2005, 14:06:54
<?php
for ($i=0;$i<=999;$i++)
$nazwa = 'odp_'.$i.'.txt';
?>
a właściwie to jeszcze lepiej powinno być coś takiego:
<?php
for ($i=0;file_exists('odp_'.$i.'.txt');$i++);
$nazwa = 'odp_'.$i.'.txt';
?>
uwaga na haczyk - średnik zaraz po ); czyli pętla z drugiego przykładu nie ma ciała
piwib
20.12.2005, 14:17:32
No ok co do pętli FOR rozumiem a wytłumacz mi czy pod zmienną $nazwa będzie widoczny tytuł tego pliku? bo w programie miałem coś takiego:
<?php
$fp = fopen("ODP_1.txt", "a+");
fputs($fp, $pytanie_1);
fclose($fp);
?>
gdzie "ODP_1.txt" był tym plikiem...
sobstel
20.12.2005, 14:22:34
Cytat(piwib @ 2005-12-20 14:17:32)
a wytłumacz mi czy pod zmienną $nazwa będzie widoczny tytuł tego pliku?
przepraszam, ale co stoi na przeszkodzie abys sprawdzil to samemu (caly kod juz masz podany).
php programmer
20.12.2005, 14:22:38
$nazwa zawiera już gotową nazwę tego pliku w postaci:
odp_0.txt
odp_1.txt
odp_2.txt
.
.
.
odp_x.txt
w zalezoności od tego czy już są jakieś inne pliki o takich nazwach
pętla po prostu szuka pierwszego wolnego miejsca
piwib
20.12.2005, 16:42:29
Hmm badnijcie to:
<?php
for ($i=0;file_exists('odp_'.$i.'.txt');$i++); // szuka wolnej nazwy pliku
$nazwa = 'odp_'.$i.'.txt'; // podporządkowywuje ją zmiennej &nazwa
?>
<?php
$odpowiedzi = fopen("$nazwa", "w+"); // otwiera plik o wcześniej wylosowanej nazwie &nazwa fputs($odpowiedzi, $pytanie_1); // zapisuje w pliku o nazwie zawartej w zmiennej $nazwa dane z zmiennej $pytanie_1 fclose($odpowiedzi); // zamyka plik o nazwie zawartej pod zmienną $nazwa ?>
I mi sie strona wykłada... Gdzie nie widze błędu? Musze najpierw stworzyć taki plik tekstowy? Ale chyba nie ponieważ wskaźnik "w+" jeśli nie ma pliku próbuje go stworzyć... :/
v1t4n
20.12.2005, 16:57:07
Cytat(piwib @ 2005-12-20 16:42:29)
<?php
($odpowiedzi, $pytanie_1); // zapisuje w pliku o nazwie zawartej w zmiennej $nazwa dane z zmiennej $pytanie_1
?>
Tutaj masz blad (wszystko ma byc w jednej linii, po fputs usun akapit)
Czyli (ja zastosowalbym fwrite z przyzwyczajenia):
<?php
fputs ($odpowiedzi, $pytanie_1); // zapisuje w pliku o nazwie zawartej w zmiennej $nazwa dane z zmiennej $pytanie_1 ?>
piwib
20.12.2005, 17:10:53
<?php
for ($i=0;file_exists('odp_'.$i.'.txt');$i++);
$nazwa = 'odp_'.$i.'.txt';
?>
<?php
$odpowiedzi = fopen("$nazwa", "w+"); fputs($odpowiedzi, $pytanie_1); ?>
No tam źle sie wkleiło mam tak i w 11 lini wywala błąd
(Warning: fopen("odp_0.txt", "w+") - Permission denied in /home/p_watola/storage/www/php/strona_3.php on line 17)
...?
php programmer
20.12.2005, 22:01:58
prawa katalogu, w którym zapisujesz te pliki
muszą być odpowiednio ustawione
na przykład 0775
piwib
20.12.2005, 22:57:42
Dokładnie zmieniłem prawa dostępu katalogu i już wszystko gra. Powiedź mi jeszcze jedno potrzebuje w pasku adresu URL przenieś zmienną z jednej strony do drugiej strony. Jak byś to zronił?
crash
20.12.2005, 23:00:50
Kolega Ci nie powie, ale ja mogę: Mamy tu świetną
wyszukiwarkę, radzę z niej skorzystać...
piwib
20.12.2005, 23:14:15
To spróbuj ty mi pomóc :
<?php
for ($i=0;file_exists('odp_'.$i.'.txt');$i++);
$nazwa = 'odp_'.$i.'.txt';
?>
<?php
$odpowiedzi = fopen("$nazwa", "a+"); fputs($odpowiedzi, $pytanie_1);
?>
No i tak pętla for szuka najbliższej wolnej nazwy z serii "odp_" a następnie taki plik zostaje stworzony oraz w nim zapisane odpowiedzi. Ale to mam dopiero pierwszą strone z pytaniem. Chce by ta sama nazwa pliku znajdowała się na kolejnej mojej stronie z pytaniem. Poprostu potrzebuje przenieś zmienna $nazwa. Co byś dopisał do kodu?
crash
20.12.2005, 23:21:35
index.php?plik=odp_1.txt
<?php
?>
Koniec tematu.
piwib
20.12.2005, 23:31:17
Źle mnie zrozumiałeś! Nie chodzi mi o przekazanie danej tylko zmiennej. Jeśli na serwerze pojawi sie już plik odp_1.txt to sie wysypie.
index.php?plik=odp_1.txt
a skąd wiesz że odp_1.txt? Chodzi mi o to iż jeśli przykładowo 3 osoby rozwiązaują ankiete w tym samym czasie aby powstały 3 różne pliki z odpowiedziami!(odpowiedzialna jest za to pętla for) Dlatego zmienna $nazwa ma w sobie aktualną stworzoną przez aktualnego użytkownika nazwę pliku. Nie wiem czy mnie rozumiesz do końca ale jeśli tak to w ramach zbliżających sie świąt możesz pomóc

w skrócie chce przenieść z strony strona_1.php zmienną $nazwa do strona_2.php
crash
20.12.2005, 23:39:43
<?php
header( 'Location: ./strona2.php?nazwa=' . $nazwa ); ?>
Więcej z tego co piszesz nie rozumiem
piwib
20.12.2005, 23:57:39
No to jeszcze raz. Mam stronę strona_1.php w której mam zmienną $nazwa. Przechodząc do strony strona_2.php wypisując echo $nazwa; nie pokazuje mi się nic a chce by pokazywała się zawartość zmiennej $nazwa z strony strona_1.php ...
Jak to zrobić? Podkreślam że ręcznę wpisywanie danej do paska np strona_2.php?nazwa=dane_zmiennej_z_strona_1.php nie wchodzi w gre...
mike
21.12.2005, 00:57:57
@piwib widzę że zrobileś sobie prywatny kącik lamerskich pytań.
Z każdym postem poziom Twoich pytań spada.
Chcesz przenosić zmienne/dane to poczytaj o przesyłaniu zmiennych za pomocą $_POST i $_GET i o sesjach.
A poza tym @crash już Ci podał rozwiązanie, tylko nawet go nie zrozumiałeś.
Gwarantuję Ci że zakolejnego posta, którego uznam za lamerskiego i za kolejne pytanie, na które odpowiedź jest na forum (użyj wyszukiwarki) dostaniesz ostrzeżenie.
piwib
21.12.2005, 01:11:28
Wybacz ale każdy kiedyś startuje od zera. Tytuł forum "php dla początkujących" ewidentnie mówi iż forum dla noobów... Spoko sorry za zamieszanie ale pamiętaj że ty też kiedyś będziesz lamą na innym forum i tez Cie będą gnoić... Możecie zamknąć
sobstel
23.12.2005, 17:23:36
Cytat(piwib @ 2005-12-21 01:11:28)
Wybacz ale każdy kiedyś startuje od zera. Tytuł forum "php dla początkujących" ewidentnie mówi iż forum dla noobów... Spoko sorry za zamieszanie ale pamiętaj że ty też kiedyś będziesz lamą na innym forum i tez Cie będą gnoić... Możecie zamknąć
jak sam zauwazyles to forum dla początkujących, ale dostajesz tu odpowiedzi na pytania, na ktore jak dotad nie odpowiedziano albo ktorych nie mozna zbyt latwo znalezc ani w manualu ani w google, a nie na kazde pytanie jakie ci tylko przyjdzie do glowy, na kotre odpowiedz mozna znalezc w kilka minut...
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.