Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Edycja użytkowników w .csv
soulreaver1
post
Post #1





Grupa: Zarejestrowani
Postów: 59
Pomógł: 6
Dołączył: 1.04.2008

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


Witam.

Mam problem edycją danych z tablicy. Nie wiem jak zrobić aby dane osoby która jest aktualnie "na formularzu" były zapisywane dokładnie w to miejsce tablicy z której zostały pobrane.

to mój kod:

  1. <?php
  2. $tablica = file('student.csv');
  3. $osoba = $tablica[$numer];
  4. list($imie, $nazwisko, $miasto, $kod) = explode(";", $osoba);
  5.  
  6.  echo "<form action='main.php' method='post'>
  7.    <input type='text' name='imie' value='$imie'> Imię<br/>
  8.    <input type='text' name='nazwisko' value='$nazwisko'> Nazwisko<br/>
  9.    <input type='text' name='kod' value='$kod'> Kod<br/>
  10.    <input type='text' name='miasto' value='$miasto'> Miasto<br/><br/>
  11.    <input type='submit' value='OK'><br/>
  12. <input type='hidden' name='wybor' value='zapisz'></form>";
  13.  
  14. // jak teraz zapisać $imie, $nazwisko, $miasto, $kod
  15. //  edytowane w formularzu w miejsce danych przed edycją (w to samo miejsce tablicy)?
  16. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
Cienki1980
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Przerzuć się na bazę danych a problemów nie będziesz miał ( przynajmniej w tej kwestii ).

A tak na serio masz skądś zmienną $numer która wskazuje na wiersz w tablicy. Po wysłaniu formularza pobierz dane z POST ( musisz zmienną $numer też przesłać w formularzu jako pole hidden ) tworzysz ciąg oddzielony przecinkami i wstawiasz do tablicy do wiersza określonego za pomocą $numer.

Potem zerujesz plik i wstawiasz cała tablice do pliku.


--------------------
404
Go to the top of the page
+Quote Post
soulreaver1
post
Post #3





Grupa: Zarejestrowani
Postów: 59
Pomógł: 6
Dołączył: 1.04.2008

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


Takie coś powinno działać?


  1. <?php
  2. // $tablica jest tablicą macierzystą.
  3.  
  4. $imie1=$_SESSION['imie1'];
  5. $nazwisko1=$_SESSION['nazwisko1'];
  6. $miasto1=$_SESSION['miasto1'];
  7. $kod1=$_SESSION['kod1'];
  8.  
  9. $zmiana($imie1, $nazwisko1, $kod1, $miasto1);
  10.  
  11. $tablica[$numer]= implode(";", $zmiana);       // $numer jest zmienną sesji.
  12. ?>
Go to the top of the page
+Quote Post
Cienki1980
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Cytat(soulreaver1 @ 26.01.2009, 12:07:11 ) *
Takie coś powinno działać?


To tylko część z tego co pisałem.
1. dane pobierasz z $_SESSION a skoro korzystasz z formularza to powinieneś z $_POST
2. dane poprawnie wpisujesz do tablicy z mała uwagą że w tym kodzie co pokazałeś nie dałeś pobierania zmiennej $number ( jeżeli masz ją w $_SESSION ) to musisz o niej pamiętać
3. no i nie zapisujesz tablicy do pliku


--------------------
404
Go to the top of the page
+Quote Post
soulreaver1
post
Post #5





Grupa: Zarejestrowani
Postów: 59
Pomógł: 6
Dołączył: 1.04.2008

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


Już prawie wszystko działa, z jednym małym ale... w pliku .csv mam:


"11111;11111111;111111;11111"

zamiast

11111;11111111;111111;11111

Ten post edytował soulreaver1 26.01.2009, 16:42:45
Go to the top of the page
+Quote Post
Cienki1980
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Cytat(soulreaver1 @ 26.01.2009, 16:42:13 ) *
Już prawie wszystko działa, z jednym małym ale... w pliku .csv mam:
"11111;11111111;111111;11111"

zamiast

11111;11111111;111111;11111


To pokaż ten fragment kodu gdzie zapisujesz do $tablica i potem do pliku.


--------------------
404
Go to the top of the page
+Quote Post
soulreaver1
post
Post #7





Grupa: Zarejestrowani
Postów: 59
Pomógł: 6
Dołączył: 1.04.2008

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


  1. <?php
  2. echo "<form action='main.php' method='post'>
  3.    <input type='text' name='imie1' value='$imie'> Imię<br/>
  4.    <input type='text' name='nazwisko1' value='$nazwisko'> Nazwisko<br/>
  5.    <input type='text' name='kod1' value='$kod'> Kod<br/>
  6.    <input type='text' name='miasto1' value='$miasto'> Miasto<br/><br/>
  7.    <input type='submit' value='OK'><br/>
  8. <input type='hidden' name='wybor' value='zapisz'></form>";
  9. echo"zapisz: $edit";
  10.    
  11.        echo "<body bgcolor='#ffff99'>";
  12.  
  13.        if($edit=="ok")
  14.        {
  15.        echo $imie1;
  16.        
  17. $array[1]=$imie1;
  18. $array[2]=$nazwisko1;
  19. $array[3]=$miasto1;
  20. $array[4]=$kod1;
  21.  
  22. $tablica[$numer]= implode(";", $array);       // $numer jest zmienną sesji.
  23.        echo "<body bgcolor='#ffff99'>";
  24.  $fp = fopen('student.csv', 'w');
  25.  fputcsv($fp, $tablica,';');
  26.    echo "OK - dane wprowadzono<br/>";
  27.    fclose($fp);
  28.    echo "<a href='start.php'>Powrót do menu</a>";
  29.    echo "</body>";
  30. ?>
Go to the top of the page
+Quote Post
Cienki1980
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Nigdy nie korzystałem z funkcji fputcsv() i nie wiem może ona dodaje tam "" do wstawianego wiersza. Spróbuj standardowych funkcji do zapisywania do pliku. Będziesz musiał przetworzyć $tablica z typu array na ciąg tekstowy ale nie powinnien być to duży problem.


--------------------
404
Go to the top of the page
+Quote Post
erix
post
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
The optional enclosure parameter sets the field enclosure (one character only) and defaults to a double quotation mark: ".

Wystarczy jako trzeci parametr podać pusty string i będzie ok. winksmiley.jpg


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
soulreaver1
post
Post #10





Grupa: Zarejestrowani
Postów: 59
Pomógł: 6
Dołączył: 1.04.2008

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


teraz robi odstępy zamiast " lub jeśli ustawię tak
  1. <?php
  2. fputcsv($fp, $tablica,';','');
  3. ?>


to wtedy wyświetla błąd

Warning: fputcsv() [function.fputcsv]: enclosure must be a character in C:\Program Files\WebServ\httpd\main.php on line 78

Ten post edytował soulreaver1 27.01.2009, 13:29:00
Go to the top of the page
+Quote Post
erix
post
Post #11





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Fakt.

Do CSV korzystałem kiedyś z czegoś takiego: http://code.google.com/p/parsecsv-for-php/
i działa smile.gif

Ostatecznie, możesz zamiast:
  1. <?php
  2. fputcsv($fp, $tablica,';','');
  3. ?>

zrobić coś takiego:
  1. <?php
  2. fwrite($fp, implode(";" $tablica)."\n");
  3. ?>


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
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: 21.08.2025 - 21:17