Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Porównanie tablicy z danymi w formularzu
mefistofeles
post 21.04.2010, 09:03:11
Post #1





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 23.06.2009

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


W tablicy $gat[], przechowuje nazwy kategorii (jeden,cztery)

Chciałbym sprawdzić czy nazwa przechowywana w

$gat[0];
$gat[1];
$gat[2];
(...)

Pasuje do kategorii z tego formularza:

  1. <select style='height:450px;' name='category[]' multiple='multiple'>";
  2. echo "<option value='0' class='pole'>Jeden</option>";
  3. echo "<option value='8' class='pole'>Dwa</option>";
  4. echo "<option value='21' class='pole'>Trzy</option>";
  5. echo "<option value='25' class='pole'>Cztery</option>";
  6. echo "</select>


a jeśli pasuje to, żeby odpowiednie pole zamieniło mi na:

  1. echo "<option selected value='21' class='pole'>Trzy</option>";



Jak to najprościej zrobić?
Jakbym miał znaleźć jedną konkretną kategorie i podmienić selecta to ok, ale tutaj nie wiem ile nazw kategorii zawiera $gat[] i jakimi pętlami
to połączyć, żeby wszystko działało niezależnie od ilości kategorii.

Proszę o pomoc.

Go to the top of the page
+Quote Post
Wykrywacz
post 21.04.2010, 12:10:29
Post #2





Grupa: Zarejestrowani
Postów: 726
Pomógł: 20
Dołączył: 8.12.2005
Skąd: Wrocław

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


Bierzesz foreach
i w ifie przyrównujesz do wartości z formularza jak są równe to echujesz czy co tam potrzebujesz.

Ten post edytował Wykrywacz 21.04.2010, 12:10:44
Go to the top of the page
+Quote Post
mefistofeles
post 21.04.2010, 12:34:36
Post #3





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 23.06.2009

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


Zrobiłem tak jak mówisz, ale nie wiem jak podmienić to co jest w selectach:


  1.  
  2. foreach ($konkgat as &$value) {
  3.  
  4.  
  5. if preg_match_all($value, $content, $wynik)
  6.  
  7. {
  8.  
  9. echo $wynik;
  10.  
  11. }
  12.  
  13.  
  14.  
  15. }
  16.  
  17.  
  18. echo "<option value='0' class='pole'>jeden</option>";
  19. echo "<option value='8' class='pole'>dwa</option>";
  20. echo "<option value='21' class='pole'>trzy</option>";
  21. echo "<option value='2' class='pole'>cztery</option>";



Skoro optiony mam wyświetlane w taki sposób, że każda linia to osobne echo, to jak to zrobić żeby to działało ?
Wszystkie optiony zapisać pod jedną zmienną $content bez echo, przelecieć preg_match i wyświetlić poprostu tą zmienną za pomocą 1 instrukcji echo ?

Ten post edytował mefistofeles 21.04.2010, 12:35:17
Go to the top of the page
+Quote Post
Wykrywacz
post 21.04.2010, 12:44:34
Post #4





Grupa: Zarejestrowani
Postów: 726
Pomógł: 20
Dołączył: 8.12.2005
Skąd: Wrocław

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


Nie do końca czaje co chcesz zrobić, jeżeli chcesz bez przeładowywania strony dynamicznie coś zmieniać w tym wszystkim, to ja bym tym optionom nadał id, i ich wartości podmieniał przez JS.

Jeżeli nie o to ci chodzi to musisz bardziej łopatologicznie napisać w co chcesz zrobić bo nie czaje
Go to the top of the page
+Quote Post
mefistofeles
post 21.04.2010, 12:58:12
Post #5





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 23.06.2009

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


No wyświetlam formularz w ten sposób:

  1. <select style='height:450px;' name='category[]' multiple='multiple'>";
  2. echo "<option value='0' class='pole'>A</option>";
  3. echo "<option value='8' class='pole'>B</option>";
  4. echo "<option value='21' class='pole'>C</option>";
  5. echo "<option value='2' class='pole'>D</option>";
  6. echo "<option value='3' class='pole'>E</option>";
  7. echo "</select>";


I za pomocą tego:



  1. foreach ($konkgat as &$value) {
  2. //echo $value;
  3.  
  4. if preg_match_all($value, $content, $wynik)
  5.  
  6. {
  7.  
  8. echo $wynik;
  9.  
  10. }
  11.  
  12.  
  13.  
  14. }


Chce zamienić wiersz w którego kategoria zgadza się z ta ze zmiennej (preg_match), ale żeby to działało to cały formularz muszę mieć zapisany w tej zmiennej tak, a potem go wyświetlać
za pomocą echp $wynik ?
Go to the top of the page
+Quote Post
Wykrywacz
post 21.04.2010, 13:43:22
Post #6





Grupa: Zarejestrowani
Postów: 726
Pomógł: 20
Dołączył: 8.12.2005
Skąd: Wrocław

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


Czyli chcesz wyświetlić tylko te elementy formularza które są == $get[$i]

Czyli jeżeli masz w $get[0] = 21; i powiedźmy w $get[1] = 8;
To chciałbymś wyświetlić

<select style='height:450px;' name='category[]' multiple='multiple'>";
echo "<option value='8' class='pole'>B</option>";
echo "<option value='21' class='pole'>C</option>";
echo "</select>";

O to ci chodzi? czy się nie rozumiemy? smile.gif
Go to the top of the page
+Quote Post
mefistofeles
post 21.04.2010, 13:49:43
Post #7





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 23.06.2009

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


W $get[0] mogę mięć np A,

więc jeśli jest a to ma mi zamienić pole formularza w którym jest A

z:

<option value='8' class='pole'>A</option>";

na:


<option selected value='8' class='pole'>A</option>";

a resztę optionów ma wypisać bez zmian.

Ten post edytował mefistofeles 21.04.2010, 13:50:36
Go to the top of the page
+Quote Post
Wykrywacz
post 21.04.2010, 14:25:47
Post #8





Grupa: Zarejestrowani
Postów: 726
Pomógł: 20
Dołączył: 8.12.2005
Skąd: Wrocław

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


....
Po co ci ten preg_match ? to raz.
Te dane formularza generujesz sobie czy klepiesz z łapy?
Obliczenia robisz po przeładowaniu, czyli czy chcesz ponowne zaznaczenie mieć po przeładowaniu category[], czy chcesz mieć odpowiednią podpowiedź przy pierwszym generowania poprzez porównanie z tym czymś z tej twojej tablice $gat

Bo naprawdę nie wiem już po tym co ci napisałem w czym jeszcze masz problem, a angażując się w twój problem chciałbym ci pomóc go zakończyć.

Ten post edytował Wykrywacz 21.04.2010, 14:28:29
Go to the top of the page
+Quote Post
mefistofeles
post 21.04.2010, 18:53:19
Post #9





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 23.06.2009

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


Dane formularza są zawsze takie same, tzn około 30 kategorii.

Preg_match ma mi sprawdzić czy to co jest w tablicy pasuje do którejś kategorii, a jeśli tak to ta
kategoria ma zostać automatycznie wybrana za pomocą SELECTED (może pasować kilka kategorii)
Oczywiści chce mieć to przy pierwszym generowaniu skryptu, odrazu.

Załóżmy, że mam zapisany cały formularz w zmiennej, nie jak miałem na początku wyświetlany za pomocą echo.
Sprawdzam czy dana kategoria pasuje, ale jak dodać to SELECTED w odpowiednim miejscu ?

  1. $formularz="<select style='height:450px;' name='category[]' multiple='multiple'>
  2. <option value='0' class='pole'>Akcja</option>
  3. <option value='8' class='pole'>Animowane</option>
  4. <option value='21' class='pole'>Anime</option>
  5. </select>"


Jak podmienić tylko tą część która pasuje do danej kategrii.
Jeśli w tablicy gatunek jest np. gatunek anime, to chce zamienić:

<option value='21' class='pole'>Anime</option>

na:

<option selected value='21' class='pole'>Anime</option>

Mam nadzieje, że wszystko jest już zrozumiałe smile.gif
Go to the top of the page
+Quote Post
Wykrywacz
post 22.04.2010, 09:48:32
Post #10





Grupa: Zarejestrowani
Postów: 726
Pomógł: 20
Dołączył: 8.12.2005
Skąd: Wrocław

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


Ja bym to zrobił za pomocą JS.

JS wywołujesz w body przy onload.

W js bierzesz sobie sobie formularz i pętlą for jedziesz po jego wszystkich optionach i tu już jak wiesz jak zrobić jak wynik będzie ci się zgadzał to poprostu nadajesz temu elementowi wartość select.

I wydaje mi się to sensowne, tym bardziej że nie odpowiedziałeś mi nadal czy te 30 optionów klepiesz z ręki czy wyświetlasz jako wyniki z pętli.
Go to the top of the page
+Quote Post
mefistofeles
post 23.04.2010, 10:16:47
Post #11





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 23.06.2009

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


Napisałem wcześniej: dane formularza są zawsze takie same, tzn około 30 kategorii (optionów).
Co do js to bez sensu.
Po co mam użyuwać js questionmark.gif
Przecież wszystkie skrypty będą się wykonywały podczas 1 odpalenia skryptu,także po co jakieś body onload itp ?

Ten post edytował mefistofeles 23.04.2010, 10:17:07
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 - 09:52