Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Input i tablica
Forum PHP.pl > Forum > Przedszkole
Leeddo
witam
bylem w serczu i na googlach gdzie zalapalem jak korzystac z tablic, ale wiekszosc przykladow jakie widzialem opisuje funkcjonowanie tablic 'po stronie skryptu' nie wiem czy to jasno napisalem ... generalnie chcial bym sie dowiedziec jak wrzucic cos do tablicy korzystajac z inputa

probowalem tak:

  1. <input name="img[]" type="text" />


  1. <?php
  2. error_reporting( E_ALL );
  3. print_r ($_POST);
  4. @$img = addslashes($_POST['img']);
  5. $tab = array($img);
  6. reset($tab);
  7. echo '
  8. ';
  9.  
  10. foreach($tab as $wartosc){
  11. echo $tab.' '.$wartosc.'
  12. ';
  13. }
  14. ?>


wprowadzam ciag 1,2,3
echo zwraca mi:
Array ( [img] => Array ( [0] => 1,2,3 )
Array Array

na pewno jest to banalne, ale nie moge tego rozgryzc,stad prosba o wyjasnienie - jak uzytkownik moze wprowadzic wiele wartosci do tablicy korzystajac z jednego pola input ?

pozdrawiam </br >
Cysiaczek
Popraw proszę tytuł topiku na zgodny z zasadami forum Przedszkole

Użyj jesczze jednej petli foreach zagłębionej w tej, którą już masz.
  1. <?php
  2. foreach($tab as $klucz=>$wartosc){
  3. if(is_array($wartosc))
  4. {
  5. foreach(){}
  6. }
  7. else
  8. {
  9. echo $tab.' '.$wartosc.'<br />'; // nie $tab, tylko $klucz
  10. }
  11. }
  12. ?>


Pozdrawiam,
drPayton
Tak na wszelki wypadek:
Cytat
jak uzytkownik moze wprowadzic wiele wartosci do tablicy korzystajac z jednego pola input ?

Na pewno nie w taki sposób.
Ustalając dla name pola input text tablicę powodujesz, że wartość z każdego pola tego typu będzie elementem tablicy. Jeżeli koniecznie chcesz by było to jedno pole tekstowe, to nie ma sensu powyższe rozwiązanie. Trzeba by było (polegając na użytkowniku) określić na przykład sposób rozdzielenia części skłądowych w polu tekstowym (np wprowadza dane oddzielając je średnikami).
Reasumując:
  1. <input name="img[]" type="text" />

Gdy istnieje tylko jedno pole tego typu nie ma większego sensu. Co innego:

  1. <input name="img[]" type="text" />
  2. <input name="img[]" type="text" />
  3. <input name="img[]" type="text" />
  4. <input name="img[]" type="text" />

Wtedy na wyjściu otrzymasz tablicę 4-elementową...
Leeddo
Cytat
Jeżeli koniecznie chcesz by było to jedno pole tekstowe, to nie ma sensu powyższe rozwiązanie.

tak, ma byc jedno pole i chce aby uzytkownik wklepywal numerki oddzielone np. srednikiem (1;2;3), w formularzu jest tylko jedno pole input text
...powyzszy kod nie specialnie chce dzialac, cos sie pusty foreach nie podoba :/

jesli mozna Panie doktorze niech Pan pomoze smile.gif
Prym
witam. tutaj to poprostu masz błędne podejscie do tablicy (w wolnej chcili proponuje poczytac o array i jego tworzeniu) a co do problemu to (wazne rzeczy bede pisal duzymi literkami smile.gif ) jesli masz 1 input to nazwij go jak chcesz bo to nie bedzie NIGDY TABLICA jezeli user bedzie wpisywal 1;2;3;4 to taki CIĄG ZNAKÓW ktory dopiero musisz przerobic na tablice.
jesli jestes pewien ze masz ciag znakow podzielona srednikami to stworzenie z tego tablicy jest mozliwe tylkop poprzez explodowanie stringu smile.gif

Kod
<input name="img" type="text"/>

  1. <?php
  2. error_reporting( E_ALL );
  3. print_r ($_POST);
  4. @$img = addslashes($_POST['img']);
  5. $tab = explode(";",$img);
  6. foreach($tab as $wartosc){
  7. echo $tab.' '.$wartosc.'
  8. ';
  9. }
  10. ?>
Leeddo
Dzieki Prym, dziala idealnie biggrin.gif
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.