Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: O jeden element za dużo w tablicy - jak się go pozbyć??
Forum PHP.pl > Forum > PHP
PMadej
Poniżej zamieszczam kody dwóch skryptów:

pozycje_fv.php
[php:1:528a629295]<?php
//skrypt generuje tabele z produktami i ich ilosciami. sluzy do wybrania
//konkretnych pozycji z tablicy i podania ich ilosci. dane wysyla do
//pozycje_fv2.php ktory to generuje nazwe wybranego za
//pomoca checkboxu produktu i podana w INPUT TEXT ilosc

//utworzenie tabelki z wartosciami z tablicy
print("<table border><tr><td align=center></td>");
print("<td align=center>nazwa</td><td align=center>stawka vat</td><td align=center>");
print("ilosc na<br>magazynie</td><td>Ilość</td></tr>");
print("<form action="pozycje_fv2.php" method="POST">");

//tablica $pozycje jest dwuwymiarowa i zawiera nazwe produktu
//stawke vat dla niego i ilosc. do INPUT TEXT wpisuje sie żądaną ilosc produktu

foreach ($pozycje as $key1=>$value1)
{
//pozycje_wybrane[][0] to identyfikator danego checkboxa
print ("<tr><td align=center><input type="checkbox" name="pozycje_wybrane[][0]" value="$value1[0]"></td>");
foreach ($value1 as $key2=>$value2)
{
print("<td align=center>$value2</td>");
}
//pozycje_wybrane[][1] to identyfikator danego pola input text
print("<td><input type=text NAME=pozycje_wybrane[][1] size=6></td>");
print("</tr>");
}
print("</table>");
print("<input type="submit" value="ZatwierdĄ"></form>");
?>[/php:1:528a629295]

i pozycje_fv2.php
[php:1:528a629295]<?php
//wyswietlenie pozycji wybranych do fv
foreach($pozycje_wybrane as $key=>$value)
{
foreach($value as $key2=>$value2)
{
print("$key2: $value2");
}
print("<br>");
}
print("<a href="pozycje_fv.php">wróć</a>");
?>[/php:1:528a629295]

problem tkwi w tym ze jezeli jest wiecej elementow dostepnych niz wybranych to w kodzie zwroconym przez drugi skrypt mam:

0: pozycja nr 1
1: ilosc (np: 15)
1: <----- to jest index od niezaznaczonego checkboxa i wlasnie jego chce sie pozbyc.

Jezeli zaznacze wszystkie pozycje to sa one w formie:

0: nazwa1
1: ilosc1
0: nazwa2
1: ilosc2
... itd

mnie zaezy natomiast aby z cale tablicy wybrac tylko kilka i wygenerowac taki kod

z gory dzieki za wszelkie podpowiedzi jak rozwiazac ten problem
spenalzo
Może [manual:b7087d551d]array_pop[/manual:b7087d551d]?
PMadej
Cytat
Może [manual:737ff8f5f1]array_pop[/manual:737ff8f5f1]?


niestety nie moze to byc bo jesli np mamy 3 elementy to przy zaznaczonych wszystkich jest:

0:nazwa1
1:ilosc1
0:nazwa2
1:ilosc2
0:nazwa3
1:ilosc3

a jezeli zaznaczymy pierwszy i ostatni to mamy:

0:nazwa1
1:ilosc1
1:ilosc2 <--- jezeli nie wpiszemy nic to jest puste a jak wpiszemy cos a nie zaznaczymy checkboxa to pojawi sie tu liczba
0:nazwa3
1:ilosc3

to jakos musi odrzucac niezaznaczone checkboxy

Update (23:45)

albo jakos w pierwszym skrypcie dynamicznie blokowac input text zeby nie dalo sie wpisac wartosci jesli nie jest zaznaczony checkbox (to jako dodatkowe zabezpieczenie przed wrzucaniem błędnych danych
cahe
Cytat
albo jakos w pierwszym skrypcie dynamicznie blokowac input text zeby nie dalo sie wpisac wartosci jesli nie jest zaznaczony checkbox (to jako dodatkowe zabezpieczenie przed wrzucaniem błędnych danych


Da się to zrobić bez problemu w javascript.
PMadej
ok co do javascriptu to temat na inne forum

a wiesz moze jak odrzucic elementy z niezaznaczonych checkboxow??
jakas petla to filtrowac??
cahe
Cytat
ok co do javascriptu to temat na inne forum

a wiesz moze jak odrzucic elementy z niezaznaczonych checkboxow??
jakas petla to filtrowac??


Może poprostu powiąż w jakiś logiczny sposób checkbox i pole tekstowe (np. poprzez nazwe).
PMadej
przeciez sa te elementy powiazane za pomoca jednej zmiennej $pozycje_wybrane[][];

[php:1:0ab41c2e0d]<?php
//pozycje_wybrane[][0] to identyfikator danego checkboxa
print ("<tr><td align=center><input type="checkbox"
name="pozycje_wybrane[][0]" value="$value1[0]"></td>");
foreach ($value1 as $key2=>$value2)
{
print("<td align=center>$value2</td>");
}
//pozycje_wybrane[][1] to identyfikator danego pola input text
print("<td><input type=text NAME=pozycje_wybrane[][1] size=6></td>");
print("</tr>");

?>[/php:1:0ab41c2e0d]
cahe
Cytat
przeciez sa te elementy powiazane za pomoca jednej zmiennej $pozycje_wybrane[][];

[php:1:4e4adb6908]<?php
//pozycje_wybrane[][0] to identyfikator danego checkboxa
print ("<tr><td align=center><input type="checkbox"
name="pozycje_wybrane[][0]" value="$value1[0]"></td>");
foreach ($value1 as $key2=>$value2)
{
print("<td align=center>$value2</td>");
}
//pozycje_wybrane[][1] to identyfikator danego pola input text
print("<td><input type=text NAME=pozycje_wybrane[][1] size=6></td>");
print("</tr>");

?>[/php:1:4e4adb6908]


Więc o co chodzi? Sprawdzasz czy checkbox o tym samym indexie zostal zaznaczony - jesli tak przetwarzasz input.
PMadej
czyli cos w stylu:

[php:1:05ef936d70]<?php
if($pozycje_wybrane[$counter][0] != NULL)
{
//ta lub inna petla
$counter++;
foreach($value as $key2=>$value2)
{
print("$key2: $value2");
}
print("<br>");
}

?>[/php:1:05ef936d70]

Cos takiego miales na mysli?
cahe
Cytat
czyli cos w stylu:

[php:1:f31791f424]<?php
if($pozycje_wybrane[$counter][0] != NULL)
{
//ta lub inna petla
$counter++;
foreach($value as $key2=>$value2)
{
print("$key2: $value2");
}
print("<br>");
}

?>[/php:1:f31791f424]

Cos takiego miales na mysli?


Być może... Nie zagłębiałem się w twój skrypt zbytnio. Ale mniejwięcej to.
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.