• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

wyciaganie danych z tablicy

Object Storage Arubacloud
0 głosów
203 wizyt
pytanie zadane 10 listopada 2015 w PHP przez Frendom Pasjonat (18,900 p.)

Witam, otoz mam problem z wyciaganiem danyc z tablicy.

Mam taki kod:

if(mysql_num_rows($wynik) > 0) {
while ($row = mysql_fetch_assoc($wynik)) {

echo "<form action='panel.php?option=teest' method='POST'>";
echo "<tr style='background: $kolor;'><td height='25' align='center' width='35'><b>".$nr++."</b></td>
<td align='center' width='140'>".$row['imie']."</td>
<td align='center' width='140'>".$row['nazwisko']."</td>
<td align='center' width='210'>".$row['pesel']."</td>
<td align='center' width='310'>Zdał&nbsp<input type='checkbox[$nr]' name='promocja' value='1' checked></td></tr>";
echo "</table>";
}
}
echo "<input type='submit' value='sasadas'>";
echo "</form></table>";

Tutaj w petli wyciagam wszystkie dane i w komorce Promocja mam checkbox z tablica.

Teraz chcialbym wyswietlic imiona/nazwiska wszystkich osob, ktore zostaly zaznaczone, wiec mam taki kod:

 if($option=="teest"){
$promocja=$_POST['promocja'];
if ($promocja==1){
	echo "zdaliscie";
}	
 }

 

Ten kod jednak nie dziala. Czy mialby ktos pomysl, jak rozwiazac taki problem? :)

1 odpowiedź

0 głosów
odpowiedź 10 listopada 2015 przez furas Maniak (53,800 p.)
wybrane 11 listopada 2015 przez Frendom
 
Najlepsza

Po pierwsze musisz wstawić <form> przed `while` bo inaczej tworzysz wiele niepotrzebnych <form>. Podobnie niepotrzebnie masz tam </table> bo też zamykasz wielokrotnie tabele choć nie widzę abyś tworzył wiele tabel.

Po drugie każdemu <input> musisz nadać inną nazwę bo inaczej będziesz dostawł tylko jeden wynik - np.  "name='promocja[1]'", ""name='promocja[2]'", "name='promocja[$nr] '"

Nie ma czegoś takiego jak type="checkbox[$nr]" jest tylko type="checkbox" - to "name" trzeba modyfikować.

Wtedy będziesz mógło odebrać
 

$promocja = $_POST['promocja'];
echo $promocja[1];
echo $promocja[2];



Nie wiem tylko czy dla niezaznaczonych elementów będzie też zwracać wartości i czy nie będzie trzeba sprawdzać czy istnieje taki element zamiast sprawdzać czy ma wartość 1.

komentarz 10 listopada 2015 przez furas Maniak (53,800 p.)
Pisałem już wcześniej, że jak zmienisz w HTML value="1" na value="kowalski" to będzie Ci wypisywac "kowalski".

Jak we wszystkich checkboxach masz to samo czyli value="1" to nie ma możliwości aby wypisywało coś innego.

---

$promocja jest tablicą a `foreach` jest od tego aby przetwarzać elementy tablicy.

Można też sprawdzić jaka jest wielkośc tablicu count($promocja);

---

ps. aby wypisać elemento tablicy nie musisz go brać w cudzysłów - wystarczy echo $promocja[0];
komentarz 10 listopada 2015 przez Frendom Pasjonat (18,900 p.)
Furas, wiem ze tak to zadziala, ale ja nie chce na stale przypisywac nazwisk itd do wartosci. Bede dodawal uzytkownikow do bazy i za kazdym razem bede mial dopisywac nowego chceckboxa? Ten checkbox bedzie tworzony automatycznie. Chyba ze w value dam row[id], to wtedy mogloby to dzialac...
komentarz 10 listopada 2015 przez furas Maniak (53,800 p.)

Przecież już pokazywałem, że możesz dać $row['nazwisko'] bo chciałeś aby zwracało nazwiska. I wcale nie musisz tego wpisywac ręcznie tylko pętla `while` lub `foreach` będzie za Ciebie generowac odpowiednią ilość checkboxów.

Przykład value="kowalski" był tylko po to, żeby pokazać, że jak wstawisz coś innego niż value="1" to przestanie Ci ciągle zwracać 1. Patrz cytat poniżej 

drugie pytanie: niezaleznie od tego, jaka w kodzie zaznacze tablice (0/1/2/4/...) i czy w panelu bedzie zaznaczony checkbox, to wyswietla mi ciagle wartosc 1

Inna sprawa, że przy użyciu name="promocja[]" samodzielnie numeruje elementy i jeśli zaznaczysz pierwszy checkbox to zostanie on zapisany jako `promocja[0]`, a jak nie zaznaczysz pierwszego a zaznaczysz drugi to on zostanie zapamiętany jako `promocja[0]`.

Jeśli we wszystkich checkboxach będziesz miał value="1" to wszystkie elementy w tabeli promocja będą zawierać tylko "1".

komentarz 10 listopada 2015 przez Frendom Pasjonat (18,900 p.)
No tak, coa w tym faktycznie moze byc. Bede mial pozniej chwile czasu, to bede probowal jeszcze ogarnac ten problem :/
komentarz 11 listopada 2015 przez Frendom Pasjonat (18,900 p.)
problem zostal rozwiazany, dziekuje za pomoc! :)

Podobne pytania

0 głosów
1 odpowiedź 172 wizyt
pytanie zadane 31 maja 2016 w PHP przez hiper007 Stary wyjadacz (11,270 p.)
0 głosów
3 odpowiedzi 1,241 wizyt
–1 głos
1 odpowiedź 147 wizyt
pytanie zadane 25 grudnia 2015 w PHP przez Miki Bywalec (2,480 p.)

92,762 zapytań

141,686 odpowiedzi

320,499 komentarzy

62,106 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...