Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Rozdzielanie danych z formularza przecinkiem ","
Forum PHP.pl > Forum > Przedszkole
nawasaqi
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
nospor
$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.
Rid
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.
nospor
@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']);
darko
ZaadAptować, skrypt to nie dziecko, żeby je adoptować.
nawasaqi
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...
nospor
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;
peter13135
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.
nawasaqi
@nospor już działa dzięki wielkie.... stokrotne teraz muszę na spokojnie przeanalizować wink.gif
Pozdrawiam
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.