Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]zapisywanie danych do pliku
robin5hood
post
Post #1





Grupa: Zarejestrowani
Postów: 189
Pomógł: 0
Dołączył: 16.05.2008

Ostrzeżenie: (10%)
X----


mam kod, chce zapisac dane do pliku ale jest bład, nie wiem jaki
Kod
<?php
    $student[0]=array('Zofia','Kamińska','00-567','Warszawa ');  
    $student[1]=array('Jan','Nowak','00-567','Warszawa');  
    $student[2]=array('Jerzy','Trela','00-567','Warszawa');  
    $student[3]=array('Roman','Polański','88-555','Kraków');    
    $num=$count($student);
    $fp = fopen('file.csv', 'w');
    for($i=0;$i<$num;$i++)
        {fputcsv($fp, $student[$i],';');}
    fclose($fp);
    echo "Zapisano dane. <br/>";
?>


Ten post edytował robin5hood 20.12.2008, 17:36:04
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
ziqzaq
post
Post #2





Grupa: Zarejestrowani
Postów: 428
Pomógł: 128
Dołączył: 17.06.2007

Ostrzeżenie: (0%)
-----


Spacja w ścieżce do pliku.
Jak masz ustawione error_reporting = E_ALL to jak byk widać, że skrypt nie widzi pliku i sypie ostrzeżeniami.

Edit:
Przed edycją kod kolegi wyglądał tak:
  1. <?php
  2. $student[0]=array('zofia','kdjf','0439','kjvj');
  3. $student[1]=array('zofia','kdjf','0439','kjvj');
  4. $student[2]=array('zofia','kdjf','0439','kjvj');
  5. $student[3]=array('zofia','kdjf','0439','kjvj');
  6. $num=count($student);
  7. $fp=fopen(' ./nic2.csv', 'w'); // <== felerna spacja
  8. for ($i=0; $i<$num; $i++){fputcsv($fp, $student[$i], ';');}
  9. fclose($fp);
  10. echo "zapisano dane";
  11. ?>


Ten post edytował ziqzaq 20.12.2008, 17:40:30
Go to the top of the page
+Quote Post
robin5hood
post
Post #3





Grupa: Zarejestrowani
Postów: 189
Pomógł: 0
Dołączył: 16.05.2008

Ostrzeżenie: (10%)
X----


w tej linice
Kod
$fp = fopen('file.csv', 'w');

co mam zmienić, o jaka spacje chodzi? wstydnis.gif

zlikwidowałem te spacje
Kod
<?php
$student[0]=array('zofia','kdjf','0439','kjvj');
$student[1]=array('zofia','kdjf','0439','kjvj');
$student[2]=array('zofia','kdjf','0439','kjvj');
$student[3]=array('zofia','kdjf','0439','kjvj');
$num=count($student);
$fp=fopen('./nic2.csv','w'); // <== felerna spacja
for ($i=0; $i<$num; $i++){fputcsv($fp, $student[$i], ';');}
fclose($fp);
echo "zapisano dane";
?>
ale nadal ten sam błąd

Ten post edytował robin5hood 20.12.2008, 17:46:06
Go to the top of the page
+Quote Post
ziqzaq
post
Post #4





Grupa: Zarejestrowani
Postów: 428
Pomógł: 128
Dołączył: 17.06.2007

Ostrzeżenie: (0%)
-----


Mi kod działa (oprócz tej spacji, którą później usunąłeś).
Możliwości:
1) Plik nie istnieje, lub ścieżka jest zła.
2) Plik nie ma ustawionych praw do zapisu.

Edit:
Jaki błąd? Skoro nie wkleiłeś kodu błędu to skąd ktoś ma wiedzieć jaki to błąd?
Pomyśl chwilę, proszę.

Ten post edytował ziqzaq 20.12.2008, 17:47:35
Go to the top of the page
+Quote Post
robin5hood
post
Post #5





Grupa: Zarejestrowani
Postów: 189
Pomógł: 0
Dołączył: 16.05.2008

Ostrzeżenie: (10%)
X----


a czy ten kod nie powinien tworzyć pliku?
bład jest taki
Fatal error: Call to undefined function fputcsv() in C:\Program Files\Apache Group\Apache2\htdocs\zapisywanie.php on line 8

Ten post edytował robin5hood 20.12.2008, 17:50:24
Go to the top of the page
+Quote Post
ziqzaq
post
Post #6





Grupa: Zarejestrowani
Postów: 428
Pomógł: 128
Dołączył: 17.06.2007

Ostrzeżenie: (0%)
-----


Manual fopen.
Przeczytaj opisy parametru "tryb" (podpowiem, literki to "w" i "a").

Edit:
Znowu manual fputcsv
Cytat
(PHP 5 >= 5.1.0)

Jaką masz wersję php?

Ten post edytował ziqzaq 20.12.2008, 17:52:42
Go to the top of the page
+Quote Post
robin5hood
post
Post #7





Grupa: Zarejestrowani
Postów: 189
Pomógł: 0
Dołączył: 16.05.2008

Ostrzeżenie: (10%)
X----


"w" otwiera plik, a jesli go nie ma, tworzy go
a jak sprawdzić jak jest wersja PHP , chyba 5 wstydnis.gif

Ten post edytował robin5hood 20.12.2008, 17:55:35
Go to the top of the page
+Quote Post
ziqzaq
post
Post #8





Grupa: Zarejestrowani
Postów: 428
Pomógł: 128
Dołączył: 17.06.2007

Ostrzeżenie: (0%)
-----


Racja. Cały czas myślałem o prawach do zapisu i bzdury napisałem.
Co z wersją php?

Edit:
  1. <?php
  2. ?>


Ten post edytował ziqzaq 20.12.2008, 17:57:24
Go to the top of the page
+Quote Post
robin5hood
post
Post #9





Grupa: Zarejestrowani
Postów: 189
Pomógł: 0
Dołączył: 16.05.2008

Ostrzeżenie: (10%)
X----


PHP Version 5.0.3 - taka jest wersja

Ten post edytował robin5hood 20.12.2008, 17:59:20
Go to the top of the page
+Quote Post
ziqzaq
post
Post #10





Grupa: Zarejestrowani
Postów: 428
Pomógł: 128
Dołączył: 17.06.2007

Ostrzeżenie: (0%)
-----


Ok. Czyli dla ciebie ta funkcja jest niedostępna.
Co możesz zrobić?
1). Zainstaluj nowszą wersję php.
lub
2). Użyj funkcji dostępnej w komentarzach fputcsv (wziąłem tą z pierwszego komentarza, nie sprawdzałem jej)
  1. <?php
  2. function fputcsv2 ($fh, array $fields, $delimiter = ',', $enclosure = '"', $mysql_null = false) {
  3.    $delimiter_esc = preg_quote($delimiter, '/');
  4.    $enclosure_esc = preg_quote($enclosure, '/');
  5.  
  6.    $output = array();
  7.    foreach ($fields as $field) {
  8.        if ($field === null && $mysql_null) {
  9.            $output[] = 'NULL';
  10.            continue;
  11.        }
  12.  
  13.        $output[] = preg_match("/(?:${delimiter_esc}|${enclosure_esc}|s)/", $field) ? (
  14.            $enclosure . str_replace($enclosure, $enclosure . $enclosure, $field) . $enclosure
  15.        ) : $field;
  16.    }
  17.  
  18.    fwrite($fh, join($delimiter, $output) . "\n");
  19. }
  20. ?>


Ten post edytował ziqzaq 20.12.2008, 18:05:08
Go to the top of the page
+Quote Post
Pilsener
post
Post #11





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Cytat
"w" otwiera plik, a jesli go nie ma, tworzy go
- z tym bym się tak nie rozpędzał - na wielu "super" hostingach tworzenie plików "w locie" przez fopen podlega restrykcjom. Należy postępować (mniej więcej) tak:

1. Sprawdzić, czy mamy odpowiednie prawa do miejsca, gdzie chcemy zapisać/utworzyć plik, jeśli nie, to error
2. Sprawdzić, czy plik istnieje - jeśli nie powołać go do życia funkcją touch()
3. Sprawdzić, czy mamy prawo zapisu do pliku - jeśli nie, spróbować je nadać (chmod), jeśli się nie uda - to error
4. Otworzyć plik i ZABLOKOWAĆ na czas zapisu - sprawdzić, czy udało się go otworzyć, jak nie to error
5. Zapisać dane i zamknąć plik - sprawdzić, czy się udało, jak nie to error
6. Dla pewności porównać datę i rozmiar przed i po zapisaniu - w dobrym tonie jest wywalić komunikat: "ostatnia modyfikacja 23 dni temu, dodano 2345 bajtów" itp. etc.

7. Jeśli używamy wynalazków typu fputcsv dostępnych od wersji PHP 5.1+, należy sprawdzić, czy taka funkcja istnieje - function_exists i wywalić error, lub zrealizować kod "B".

Inaczej zamiast oglądać "W Pustynii i w Puszczy" będziesz szukał błędów. A jak skrypt napisał ktoś inny lub Ty rok temu? Nieprędko usiądziesz przed TV z czipsami w ręku.
Go to the top of the page
+Quote Post
robin5hood
post
Post #12





Grupa: Zarejestrowani
Postów: 189
Pomógł: 0
Dołączył: 16.05.2008

Ostrzeżenie: (10%)
X----


spróbuje zainstalować nową wersje
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 18:58