Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Rozdzielanie danych z formularza przecinkiem ","
nawasaqi
post 8.09.2011, 13:39:24
Post #1





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 28.12.2010

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


Witam serdecznie mam problem znalazłem na internecie fajny skrypt i chciałem go zaadaptować pod własne potrzeby ale mam z nim mały problem mianowicie chciałbym aby w pliku do którego zapisuje i potem wyświetla dane były rozdzielone przecinkami:

  1. <?php
  2.  
  3. /*********************************************
  4.  
  5. * plik formularz.php
  6.  
  7. *********************************************/
  8.  
  9.  
  10.  
  11. $test1 = $_POST[test1][0].$_POST[test1][1].$_POST[test1][2].$_POST[test1][3];
  12.  
  13. $test2 = ($_POST[test2][0]);
  14.  
  15.  
  16.  
  17. if(empty($test1) and empty($test2)) {
  18.  
  19.  
  20.  
  21. // prosty formularz zawierajšcy dwa pola
  22.  
  23.  
  24.  
  25.  
  26.  
  27. echo '<form action="" method="post">
  28.  
  29. <input type="checkbox" name="test1[]" value="10D7" />test1a<br>
  30.  
  31. <input type="checkbox" name="test1[]" value="10D8" />test1b<br>
  32.  
  33. <input type="checkbox" name="test1[]" value="10D5" />test1c<br>
  34.  
  35. <input type="checkbox" name="test2[]" value="10D4" />test2<br><br />
  36.  
  37. <input type="submit" value="Zapisz" />
  38.  
  39. </form>';
  40.  
  41. }
  42.  
  43. else {
  44.  
  45.  
  46.  
  47. // dane pochodzšce z formularza
  48.  
  49. $dane = $test1."\n"."test2"."\n".$test2."\n";
  50.  
  51. // przypisanie zmniennej $file nazwy pliku
  52.  
  53. $file = "baza.txt";
  54.  
  55. // uchwyt pliku, otwarcie do dopisania
  56.  
  57. $fp = fopen($file, "a");
  58.  
  59. // blokada pliku do zapisu
  60.  
  61. flock($fp, 2);
  62.  
  63. // zapisanie danych do pliku
  64.  
  65. fwrite($fp, $dane);
  66.  
  67. // odblokowanie pliku
  68.  
  69. flock($fp, 3);
  70.  
  71. // zamknięcie pliku
  72.  
  73. fclose($fp);
  74.  
  75.  
  76.  
  77. echo "Dane zostały zapisane!<br />";
  78.  
  79. echo "<a href=\"podglad.php\">Zobacz wpisane dane</a>";
  80.  
  81. }
  82.  
  83.  
  84.  
  85. ?>


Po wykonaniu skryptu pokazuje taki wynik:
10D710D810D5
test2
10D4

A chciałbym aby wyglądało to tak
10D7,10D8,10D5
test2
10D4,

Wiem że w value mogę dopisać przecinek po każdej liczbie i osiągnę rezultat ale chodzi mi o to żeby to robiło automatycznie po każdej zliczonej rzeczy...

Z góry dziękuję za pomoc
Pozdrawiam
PYJTER

Ten post edytował nawasaqi 8.09.2011, 14:18:46
Go to the top of the page
+Quote Post
nospor
post 8.09.2011, 13:42:40
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




$test1 = $_POST[test1][0].$_POST[test1][1].$_POST[test1][2].$_POST[test1][3];
To łączy Twoje wartości. Chcesz mieć przecinek między nimi? To go dodaj dopisz do tego kodu.


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Rid
post 8.09.2011, 13:54:03
Post #3





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

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


Możnaby użyć pętli for ,zamiast
  1. $test1 = $_POST[test1][0].$_POST[test1][1].$_POST[test1][2].$_POST[test1][3];

użyć
  1. $i=0;
  2. for($i=0;$i<3;$i++){
  3. $test=.$_POST[test1][i].",";
  4. }

Do postu poniżej ,myślałem że to w php też pójdzie -już poprawiam.

Ten post edytował Rid 8.09.2011, 14:02:55
Go to the top of the page
+Quote Post
nospor
post 8.09.2011, 13:56:41
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@rid staraj się pisać poprawny składniowo kod, bez mieszania w nim c#
poza tym do łączenia tekstow używa się . a nie +

Lepiej już użyć implode
  1. $test1 = implode(',',$_POST['test1']);


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
darko
post 8.09.2011, 14:00:12
Post #5





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


ZaadAptować, skrypt to nie dziecko, żeby je adoptować.


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
nawasaqi
post 8.09.2011, 14:15:17
Post #6





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 28.12.2010

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


Cytat(nospor @ 8.09.2011, 14:56:41 ) *
@rid staraj się pisać poprawny składniowo kod, bez mieszania w nim c#
poza tym do łączenia tekstow używa się . a nie +

Lepiej już użyć implode
  1. $test1 = implode(',',$_POST['test1']);



Chciałem użyć tej funkcji ale za każdym razem wyskakuje mi bład

Warning: implode() [function.implode]: Invalid arguments passed in /home/em/test/formularz.php on line 6


P.s. od razu przyznaję się bez bicia że nie znam się za bardzo na php ale co nieco kumam... być może coś trzeba jeszcze gdzieś dopisać... i z góry dziękuję za okazaną pomoc...


Ten post edytował nawasaqi 8.09.2011, 14:19:38
Go to the top of the page
+Quote Post
nospor
post 8.09.2011, 14:28:32
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Pokaż swój kod po zmianach, bo znając życie coś źle przepisałeś.

A już wiem.... ty to walisz niezależnie czy poszedł formularz czy nie...
  1. if (isset($_POST['test1']))
  2. $test1 = implode(',',$_POST['test1']);
  3. else
  4. $test1= null;


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
peter13135
post 8.09.2011, 14:30:47
Post #8





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


ten błąd wyraźnie oznajmia, że podałeś złe parametry. Pierwszy to 'glue', czyli w Twoim przypadku chyba przecinek, drugi parametr to tablica do sklejenia.


--------------------
:)
Go to the top of the page
+Quote Post
nawasaqi
post 8.09.2011, 14:32:49
Post #9





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 28.12.2010

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


@nospor już działa dzięki wielkie.... stokrotne teraz muszę na spokojnie przeanalizować wink.gif
Pozdrawiam
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 Wersja Lo-Fi Aktualny czas: 19.07.2025 - 03:51